<?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>210138</bug_id>
          
          <creation_ts>2020-04-07 11:55:20 -0700</creation_ts>
          <short_desc>[Cocoa] Simplify NSArray, NSDictionary, and NSNumber idioms throughout WebKit</short_desc>
          <delta_ts>2022-09-16 10:27:25 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>245284</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>keith_miller</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1638702</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-07 11:55:20 -0700</bug_when>
    <thetext>[Cocoa] Simplify NSArray and NSDictionary idioms throughout WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638922</commentid>
    <comment_count>1</comment_count>
      <attachid>395769</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-07 20:19:33 -0700</bug_when>
    <thetext>Created attachment 395769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638923</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-07 20:20:16 -0700</bug_when>
    <thetext>Believe it or not, this started as a live range patch, but I ended up going down a rabbit hole of Cocoa-specific stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639040</commentid>
    <comment_count>3</comment_count>
      <attachid>395769</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-04-08 07:18:31 -0700</bug_when>
    <thetext>Comment on attachment 395769
Patch

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

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:51
&gt; +template&lt;typename VectorType&gt; RetainPtr&lt;NSArray&gt; createNSArray(const VectorType&amp; vector)

I really like this. Hated copying this idiom all over. How would you feel about an overload that takes a lambda for one off cases such as the ones in PlatformCAAnimationCocoa?

Also, why the discrepency in naming prefixes here? *create*NSArray vs. *make*Vector?

&gt; Source/WebCore/platform/graphics/FloatRect.h:283
&gt; +WEBCORE_EXPORT id makeNSArrayElement(const FloatRect&amp;);

The makeNSArrayElement() for String (and the description in VectorCocoa.h) return RetainPtr&lt;id&gt;. Should this be consistent?

&gt; Source/WebCore/platform/graphics/IntRect.h:254
&gt; +WEBCORE_EXPORT id makeNSArrayElement(const IntRect&amp;);

The makeNSArrayElement() for String (and the description in VectorCocoa.h) return RetainPtr&lt;id&gt;. Should this be consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639088</commentid>
    <comment_count>4</comment_count>
      <attachid>395769</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 09:30:40 -0700</bug_when>
    <thetext>Comment on attachment 395769
Patch

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

&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:51
&gt;&gt; +template&lt;typename VectorType&gt; RetainPtr&lt;NSArray&gt; createNSArray(const VectorType&amp; vector)
&gt; 
&gt; I really like this. Hated copying this idiom all over. How would you feel about an overload that takes a lambda for one off cases such as the ones in PlatformCAAnimationCocoa?
&gt; 
&gt; Also, why the discrepency in naming prefixes here? *create*NSArray vs. *make*Vector?

The overload with lambda sounds great. I will add it and use it in a future patch.

I started with the names makeNSArray and makeVector and would be willing to go back. I renamed makeNSArray to createNSArray because of our tradition of using the word &quot;create&quot; for functions that return a new object in a smart pointer. Happy to do global replace on the name either before landing or after.

&gt;&gt; Source/WebCore/platform/graphics/FloatRect.h:283
&gt;&gt; +WEBCORE_EXPORT id makeNSArrayElement(const FloatRect&amp;);
&gt; 
&gt; The makeNSArrayElement() for String (and the description in VectorCocoa.h) return RetainPtr&lt;id&gt;. Should this be consistent?

This is my attempt at a possibly-unimportant optimization. The idea is that makeNSArrayElement can either return an autoreleased object in an id or a retained object in a RetainPtr&lt;id&gt;. Always returning RetainPtr&lt;id&gt; would require a little bit more reference count churn in an autoreleased case like this one. The distinction would disappear if we ever move to ARC, of course.

I probably should have documented this in the comment in VectorCocoa.h -- by the time I was writing that I had forgotten about it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639209</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-04-08 12:03:13 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 395769 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395769&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:51
&gt; &gt;&gt; +template&lt;typename VectorType&gt; RetainPtr&lt;NSArray&gt; createNSArray(const VectorType&amp; vector)
&gt; &gt; 
&gt; &gt; I really like this. Hated copying this idiom all over. How would you feel about an overload that takes a lambda for one off cases such as the ones in PlatformCAAnimationCocoa?
&gt; &gt; 
&gt; &gt; Also, why the discrepency in naming prefixes here? *create*NSArray vs. *make*Vector?
&gt; 
&gt; The overload with lambda sounds great. I will add it and use it in a future
&gt; patch.
&gt; 
&gt; I started with the names makeNSArray and makeVector and would be willing to
&gt; go back. I renamed makeNSArray to createNSArray because of our tradition of
&gt; using the word &quot;create&quot; for functions that return a new object in a smart
&gt; pointer. Happy to do global replace on the name either before landing or
&gt; after.

I think that makes sense. No need to change it.

&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/FloatRect.h:283
&gt; &gt;&gt; +WEBCORE_EXPORT id makeNSArrayElement(const FloatRect&amp;);
&gt; &gt; 
&gt; &gt; The makeNSArrayElement() for String (and the description in VectorCocoa.h) return RetainPtr&lt;id&gt;. Should this be consistent?
&gt; 
&gt; This is my attempt at a possibly-unimportant optimization. The idea is that
&gt; makeNSArrayElement can either return an autoreleased object in an id or a
&gt; retained object in a RetainPtr&lt;id&gt;. Always returning RetainPtr&lt;id&gt; would
&gt; require a little bit more reference count churn in an autoreleased case like
&gt; this one. The distinction would disappear if we ever move to ARC, of course.
&gt; 
&gt; I probably should have documented this in the comment in VectorCocoa.h -- by
&gt; the time I was writing that I had forgotten about it!

Yeah, I think just updating the comment in VectorCocoa.h is all that needs to change here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639245</commentid>
    <comment_count>6</comment_count>
      <attachid>395857</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 13:01:27 -0700</bug_when>
    <thetext>Created attachment 395857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639247</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 13:02:22 -0700</bug_when>
    <thetext>New patch fixes the NSGeometry problem that was breaking the build and addresses Sam&apos;s comment about the VectorCocoa.h comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639274</commentid>
    <comment_count>8</comment_count>
      <attachid>395864</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 13:51:48 -0700</bug_when>
    <thetext>Created attachment 395864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639305</commentid>
    <comment_count>9</comment_count>
      <attachid>395873</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 14:57:05 -0700</bug_when>
    <thetext>Created attachment 395873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639406</commentid>
    <comment_count>10</comment_count>
      <attachid>395894</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 18:05:41 -0700</bug_when>
    <thetext>Created attachment 395894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639447</commentid>
    <comment_count>11</comment_count>
      <attachid>395905</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 20:28:01 -0700</bug_when>
    <thetext>Created attachment 395905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639465</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 21:17:11 -0700</bug_when>
    <thetext>Finally, tests all passing. Sam, would you be willing to review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639476</commentid>
    <comment_count>13</comment_count>
      <attachid>395905</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 22:07:52 -0700</bug_when>
    <thetext>Comment on attachment 395905
Patch

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

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:77
&gt; +using WTF::makeVector;

Note, the reason I don’t need to put a &quot;using WTF::createNSArray&quot; here is that we are calling it with WTF::Vector objects, so argument-dependent lookup will find createNSArray. If we ever wanted to use it on objects of another type that just happened to have both a size function and were compatible with range-based for loops, but were not in the WTF namespace, then we could add &quot;WTF::createNSArray&quot; and it would work just as well with them.

Or I could just add the &quot;using&quot; line and not let things be so subtle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639504</commentid>
    <comment_count>14</comment_count>
      <attachid>395905</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 23:39:17 -0700</bug_when>
    <thetext>Comment on attachment 395905
Patch

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

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:39
&gt; +// if the value is autoreleased. The makeVectorElement function takes an ignored
&gt; +// pointer to the vector element type, making argument-dependent lookup work, and an

Doesn&apos;t this still require putting a pointer into a certain register?  It seems like it would be even faster if we would just use a template type and template overloads instead of an unused null typed pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639745</commentid>
    <comment_count>15</comment_count>
      <attachid>395905</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-09 11:23:22 -0700</bug_when>
    <thetext>Comment on attachment 395905
Patch

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

&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:39
&gt;&gt; +// pointer to the vector element type, making argument-dependent lookup work, and an
&gt; 
&gt; Doesn&apos;t this still require putting a pointer into a certain register?  It seems like it would be even faster if we would just use a template type and template overloads instead of an unused null typed pointer.

I don’t think it would be measurably faster.

- If the function is inlined, then no, no pointer ends up being put into a register.
- If the function is not inlined, then putting a zero into a register is super-low-cost.

Using a template (the traits pattern) requires messy things like specializing in the namespace that the template is in. And also requires that the functions be in headers rather than .cpp files. I’m not sure it’s the right way to go.

We can get the efficiency benefit from just inlining the makeVectorElement function.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639746</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-09 11:24:38 -0700</bug_when>
    <thetext>If makeVectorElement is always inline, then it will always be super easy for the compiler to optimize out the nullptr entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639757</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-09 11:43:56 -0700</bug_when>
    <thetext>It’s not required to always be inline, but if we want better performance, I suggest that be the fix.

But I’m also willing to consider other designs. The number of makeVectorElement functions is very small compared to the number of makeVector call sites, so changes to makeVectorElement would be easy to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639759</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-09 11:46:53 -0700</bug_when>
    <thetext>Thanks for the comment, by the way. I’m willing to make changes.

Still looking for a reviewer, in case you’d like be willing to look over the rest of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639968</commentid>
    <comment_count>19</comment_count>
      <attachid>395905</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-09 17:01:33 -0700</bug_when>
    <thetext>Comment on attachment 395905
Patch

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

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:69
&gt; +        constexpr const VectorElementType* typedNull = nullptr;
&gt; +        if (auto vectorElement = makeVectorElement(typedNull, element))

I think all this is great.  It&apos;s a wonderful improvement to our code.  I think it would be even better if it looked like this:
if (auto vectorElement = makeVectorElement&lt;VectorElementType&gt;(element))
I think we could also do that later if we decide that&apos;s indeed better.  This isn&apos;t bad either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639984</commentid>
    <comment_count>20</comment_count>
      <attachid>395905</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-04-09 17:43:46 -0700</bug_when>
    <thetext>Comment on attachment 395905
Patch

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

r=me as well.

&gt;&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:39
&gt;&gt;&gt; +// pointer to the vector element type, making argument-dependent lookup work, and an
&gt;&gt; 
&gt;&gt; Doesn&apos;t this still require putting a pointer into a certain register?  It seems like it would be even faster if we would just use a template type and template overloads instead of an unused null typed pointer.
&gt; 
&gt; I don’t think it would be measurably faster.
&gt; 
&gt; - If the function is inlined, then no, no pointer ends up being put into a register.
&gt; - If the function is not inlined, then putting a zero into a register is super-low-cost.
&gt; 
&gt; Using a template (the traits pattern) requires messy things like specializing in the namespace that the template is in. And also requires that the functions be in headers rather than .cpp files. I’m not sure it’s the right way to go.
&gt; 
&gt; We can get the efficiency benefit from just inlining the makeVectorElement function.
&gt; 
&gt; What do you think?

I think it is very unlikely the function won&apos;t be inlined in release code, so the cost should be zero as you say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639994</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-09 19:11:40 -0700</bug_when>
    <thetext>Committed r259843: &lt;https://trac.webkit.org/changeset/259843&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639995</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-09 19:12:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/61557276&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395769</attachid>
            <date>2020-04-07 20:19:33 -0700</date>
            <delta_ts>2020-04-08 13:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210138-20200407201932.patch</filename>
            <type>text/plain</type>
            <size>475905</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
N2ZmNWU4OGUwOTZmOTY2NzA4MTcyNTdiZGIxMDBjZWJjM2MzNGM4Li5mMWI1NTZhZjIxMDhiYjgx
OTRlOGVkZGViNjBiMmU1OGQ2MDEwMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0V2l0aG91dENvcHkpOiBVc2UgQCgpLgorICAgICAgICAodmFsdWVUb051bWJlcik6IERp
dHRvLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAoLVtUZXN0T2Jq
ZWN0IGNhbGxiYWNrOl0pOiBVc2UgQFtdLCBAKCksIGFuZCBAe30uCisgICAgICAgICgtW1RleHRY
WVogY2xpY2tdKTogRGl0dG8uCisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOiBEaXR0
by4KKwogMjAyMC0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIFB1dCBlbnN1cmVTdGlsbEFsaXZlSGVyZSBmb3IgSW50ZWdlciBUeXBlZEFy
cmF5cyBpbiBHZXRCeVZhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBkY2Y0MDMyNjA1NmIyNDZlY2Y2ZDU3NjI1OTJlZWU0MmZh
MWIzZjgyLi4zZDUxOTRlYTVjNGY1NzIwYWQyMzg4ZmNiNWY5MjY3NWI4ZmYzMTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIwLTA0LTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5T
TnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgVmVjdG9yQ29jb2EuaC4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6IERp
dHRvLgorCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tOiBSZW1vdmVkIHVubmVl
ZGVkIGluY2x1ZGUuCisgICAgICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBEaXR0by4KKwor
ICAgICAgICAqIHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oOiBBZGRlZC4gQ29udGFpbnMgY3JlYXRl
TlNBcnJheSBhbmQgbWFrZVZlY3RvcgorICAgICAgICBmdW5jdGlvbiB0ZW1wbGF0ZXMgZm9yIGNv
bnZlcnRpbmcgTlNBcnJheSB0byBhbmQgZnJvbSBWZWN0b3IuCisKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDogQWRkZWQgbWFrZU5TQXJyYXlFbGVtZW50IGFuZCBtYWtlVmVjdG9yRWxl
bWVudAorICAgICAgICBmdW5jdGlvbnMsIG1ha2luZyBjcmVhdGVOU0FycmF5IGFuZCBtYWtlVmVj
dG9yIGNvbXBhdGlibGUgd2l0aCBTdHJpbmcuCisgICAgICAgICogd3RmL3RleHQvY29jb2EvU3Ry
aW5nQ29jb2EubW06CisgICAgICAgIChXVEY6Om1ha2VOU0FycmF5RWxlbWVudCk6IEFkZGVkLgor
ICAgICAgICAoV1RGOjptYWtlVmVjdG9yRWxlbWVudCk6IEFkZGVkLgorCiAyMDIwLTA0LTA0ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxpdmUg
cmFuZ2VzIGluIERvY3VtZW50TWFya2VyQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBhYzZhZDlj
NGU2MTQ2MTY5ODhhNGFhM2Y2NGJjMTk1OTNjNmFkMGIuLjhjNWFhNjE4YzRiMmVhNWIwN2I4OWFl
MTU2NTIwM2JlMTRiMzJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTYgQEAKKzIwMjAtMDQt
MDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2lt
cGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hv
dXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIEFkZGVkIGNyZWF0ZU5TQXJyYXkgYW5kIG1ha2VWZWN0b3IuCisgICAgICAgIC0gVXNlIGNy
ZWF0ZU5TQXJyYXkgYW5kIG1ha2VWZWN0b3I8U3RyaW5nPiBpbiBtYW55IHBsYWNlcyB3aGVyZSB3
ZSBjb252ZXJ0CisgICAgICAgICAgYmV0d2VlbiBOU0FycmF5IGFuZCBWZWN0b3IsIHJlcGxhY2lu
ZyBtdWx0aXBsZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdCB3ZXJlCisgICAgICAgICAgZG9pbmcg
dGhlIHNhbWUgam9iIGJlZm9yZTsgbGF0ZXIgY2FuIHVzZSB0aGVtIGV2ZW4gbW9yZS4KKyAgICAg
ICAgLSBVc2UgQFtdIG1hbnkgcGxhY2VzIHdoZXJlIHdlIGNyZWF0ZSBhbiBhdXRvcmVsZWFzZWQg
TlNBcnJheS4KKyAgICAgICAgLSBVc2UgQHt9IG1hbnkgcGxhY2VzIHdoZXJlIHdlIGNyZWF0ZSBh
biBhdXRvcmVsZWFzZWQgTlNEaWN0aW9uYXJ5LgorICAgICAgICAtIFVzZSBAKCkgbWFueSBwbGFj
ZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU051bWJlci4KKworICAgICAgICAq
IFBsYXRmb3JtTWFjLmNtYWtlOiBNb3ZlZCBGbG9hdC9JbnRSZWN0TWFjLm1tIHRvIEZsb2F0L0lu
dFJlY3RDb2NvYS5tbS4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbCk6IFVzZSBAKCku
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbCk6IFVzZSBAKCkuCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZv
clNlbGVjdGlvbl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfc3RyaW5nRnJvbVN0YXJ0TWFya2VyOnRvRW5kTWFya2VyOmF0dHJpYnV0ZWQ6XSk6
IFVzZSBAW10uCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGVsZW1l
bnRzRm9yUmFuZ2U6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIHRleHRNYXJrZXJzRm9yUmFuZ2U6XSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOnVzZXJJbmZvOl0pOgorICAgICAgICBVc2UgQHt9LgorICAgICAg
ICAobWFrZVZlY3RvckVsZW1lbnQpOiBBZGVkIG92ZXJsb2FkIGZvciBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5LgorICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJl
ZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5
VGV4dENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSk6IFVzZSBtYWtlVmVjdG9yPFN0
cmluZz4uCisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhRm9yUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChBWEF0
dHJpYnV0ZVN0cmluZ1NldFN0eWxlKTogVXNlIEAoKS4KKyAgICAgICAgKEFYQXR0cmlidXRlU3Ry
aW5nU2V0QmxvY2txdW90ZUxldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKEFYQXR0cmlidXRlU3Ry
aW5nU2V0SGVhZGluZ0xldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6IFVzZSBAW10uCisgICAg
ICAgIChjb252ZXJ0U3RyaW5nc1RvTlNBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToK
KyAgICAgICAgVXNlIEAoKSwgQFtdLCBhbmQgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZv
clBhcmFtZXRlcjpdKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9X
ZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgrW1dlYlNjcmlwdE9iamVjdCBfY29udmVydFZh
bHVlVG9PYmpjVmFsdWU6b3JpZ2luUm9vdE9iamVjdDpyb290T2JqZWN0Ol0pOgorICAgICAgICBV
c2UgQCgpLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6
OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+
LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAo
ZGVmYXVsdFBhcmFncmFwaFN0eWxlKTogVXNlIEBbXS4KKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6
OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQpOiBVc2UgQCgpLgorICAgICAgICAoSFRNTENv
bnZlcnRlcjo6X3Byb2Nlc3NNZXRhRWxlbWVudFdpdGhOYW1lKTogVXNlIEAoKS4KKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRUYWJsZUZvckVsZW1lbnQpOiBVc2UgQCgpLgorCisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW50ZXJw
cmV0YXRpb25zRm9yQ3VycmVudFJvb3QgY29uc3QpOiBVc2UgQFtdLgorCisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKTogVXNlIG1ha2VWZWN0
b3I8U3RyaW5nPi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oOiBB
ZGRlZCBtYWtlTlNBcnJheUVsZW1lbnQgb3ZlcmxvYWQgc28gd2UgY2FuCisgICAgICAgIGNvbnZl
cnQgVmVjdG9yPEZsb2F0UmVjdD4gaW50byBOU0FycmF5PE5TVmFsdWU+LgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDogU2ltaWxhcmx5IGZvciBJbnRSZWN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6
OnVwZGF0ZU9wdGlvbnMpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjptZWRpYURlc2NyaXB0aW9uRm9yS2luZCk6IFVz
ZSBAW10uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKTogVXNlIEAoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSk6IFVz
ZSBAKCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjaGVja1BsYXlhYmlsaXR5KTogVXNlIEBbXS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KTogVXNlIEB7
fSBhbmQgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hOjp2YWx1ZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weUZyb21WYWx1ZUZyb20pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weVRvVmFsdWVGcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weVZhbHVlc0Zyb20pOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRLZXlUaW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlLZXlUaW1l
c0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRU
aW1pbmdGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbSk6CisgICAgICAgIFVzZSBAKCksIEBbXSwgbW9k
ZXJuIGZvciBsb29wcywgYXV0bywgYW5kIGFsbG9jYXRlIHdpdGggY2FwYWNpdHkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3Bl
cmF0aW9uKTogVXNlIEAoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW06CisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxheV0pOiBBZGQgV2ViQ29y
ZSBuYW1lc3BhY2UgcHJlZml4OyBuZWVkZWQgZGVwZW5kaW5nIG9uCisgICAgICAgIGhvdyBzb3Vy
Y2VzIGdldCB1bmlmaWVkIChhbmQgd2FzIGFmZmVjdGluZyBteSBsb2NhbCBidWlsZCB3aGVuIGl0
IHRlbXBvcmFyaWx5CisgICAgICAgIGhhZCBhbiBhZGRpdGlvbmFsIHNvdXJjZSBmaWxlKS4KKyAg
ICAgICAgKC1bV2ViR0xMYXllciBhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXpl
OnVzaW5nQWxwaGE6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJHTExheWVyIGJpbmRGcmFtZWJ1
ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2VdKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVt
Rm9udE1vZGlmaWNhdGlvbkF0dHJpYnV0ZXMpOiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VO
U0FycmF5RWxlbWVudCk6IEFkZGVkIHNvIHdlIGNhbiBjb252ZXJ0IFZlY3RvcjxGbG9hdFJlY3Q+
CisgICAgICAgIGludG8gTlNBcnJheTxOU1ZhbHVlPi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW50UmVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VOU0FycmF5RWxl
bWVudCk6IFNpbWlsYXJseSBmb3IgSW50UmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFR5cGVzKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkxpc3QpOiBVc2UgY3JlYXRlTlNBcnJh
eS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0pOiBVc2UgQFtdLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAgKC1bV0FLVmlldyBzdWJ2aWV3
c10pOiBEaXR0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyk6
IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFBhdGhuYW1lc0ZvclR5cGUgY29uc3QpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+
LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjphZGRUeXBlcyk6IFVzZSBt
YWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldFR5cGVzKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMuaDogUmVtb3ZlZAorICAgICAgICB3ZWJDb3JlU3RyaW5nVmVj
dG9yRnJvbU5TU3RyaW5nQXJyYXksIHJlcGxhY2VkIGJ5IG1ha2VWZWN0b3I8U3RyaW5nPgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3Jl
Ojp3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXkpOiBEZWxldGVkLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbTogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQpOiBVc2UgQCgpLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKTog
VXNlIEAoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpvcGVyYXRvciBOU0hUVFBDb29raWUgKiBfTnVs
bGFibGUgIGNvbnN0KTogVXNlIEAoKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KTogVXNlIEB7fS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1
ZXN0KTogVXNlIEBZRVMvQE5PLgorCiAyMDIwLTA0LTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2VzIGluIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1OGIwOGRiNDliM2JmNWE0YzYzNDhmYTVjMmFhODUw
OTUyMzkzY2ZjLi5lYTY1YjIzMTAxN2NjODI5NDc4NjdmYWNkYTc3MzkwYTFkZDc5MTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25h
cnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbTogUmVtb3ZlIHVuZWVkZWQgaW5jbHVkZS4KKyAgICAgICAg
KiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOiBEaXR0by4KKworICAgICAgICAqIFBs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnJl
cGxhY2VkTlNDb25jcmV0ZVRhc2tfbGF1bmNoKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAg
ICAgICAgKFdlYktpdDo6cmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJM
X29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcik6CisgICAgICAgIERpdHRvLgorCisgICAgICAg
ICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OnRvU3VwcG9ydGVkTmV0d29ya3MpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50
UmVxdWVzdCk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dl
YkVycm9yc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVOU0Vycm9yKTogVXNlIEB7
fS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tOgorICAgICAgICAo
V2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcpOiBVc2UgQFtdLgorICAgICAgICAo
V2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclVSTCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQ
YXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlc1dpdGhBcmNoaXZlKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKTogRGl0dG8uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW06CisgICAgICAg
ICgtW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRl
bnRpZmllcnM6XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZ2V0QWN0
aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxlcjpd
KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5t
bToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1l
OmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2VyQ29u
dGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmlu
amVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2ts
aXN0OmFzc29jaWF0ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2Vy
U2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVn
YWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDpjb250ZW50V29ybGQ6XSk6CisgICAgICAgICgt
W1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVP
bmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDpjb250ZW50
V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0
aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6
YXNzb2NpYXRlZFVSTDpjb250ZW50V29ybGQ6ZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246
XSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFBh
Z2VDb25maWd1cmF0aW9uOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfY29yc0Rpc2FibGluZ1BhdHRlcm5zXSk6IFVzZSBjcmVh
dGVOU0FycmF5LgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRDT1JTRGlz
YWJsaW5nUGF0dGVybnM6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTpdKTogVXNlIEAoKS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbToKKyAgICAgICAg
KC1bX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uIG5vdGlmaWNhdGlvbnNdKTogVXNlIGNyZWF0ZU5T
QXJyYXkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVs
ZHMubW06CisgICAgICAgICgtW19XS0N1c3RvbUhlYWRlckZpZWxkcyB0aGlyZFBhcnR5RG9tYWlu
c10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1bX1dLQ3VzdG9tSGVhZGVyRmllbGRz
IHNldFRoaXJkUGFydHlEb21haW5zOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgor
ICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBzZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczpdKTogVXNlIG1ha2VW
ZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lc10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAg
KC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lczpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmg6CisgICAgICAgIChBUEk6OnRv
U3RyaW5nVmVjdG9yKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRX
aXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlz
dDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0
V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xp
c3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxT
dHJpbmc+LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKTog
VXNlIEBbXS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0
aW9uKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOiBVc2UgQFtdLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29sbGVjdEtleWJvYXJkTGF5b3V0Q29tbWFu
ZHNGb3JFdmVudCk6IFVzZSBAW10uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMv
UGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
UHJveHk6OmxhdW5jaFByb2Nlc3MpOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKFdlYktp
dDo6aXNKYXZhVXBkYXRlclVSTCk6IFVzZSBAW10uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NQcm94eTo6bGF1bmNoQXBwbGljYXRpb25BdFVSTCk6IFVzZSBAe30gYW5kIGNyZWF0ZU5T
QXJyYXkuCisgICAgICAgIChXZWJLaXQ6OmlzU2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTCk6IFVz
ZSBAW10uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlk
U2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6SGlkU2VydmljZSk6IFVz
ZSBAKCkgYW5kIGZpeGVkIGFuIG92ZXItcmVsZWFzZSBtaXN0YWtlLgorICAgICAgICBUaGlzIGNv
ZGUgd2FzIGRvaW5nIGFkb3B0TlMgb24gdGhlIHJlc3VsdCBvZiArW05TTnVtYmVyV2l0aEludDpd
LCB3aGljaCBpcyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbiBjb25zdCk6IFVzZSBAW10uCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0ZXh0U3R5bGluZ0F0UG9zaXRpb246aW5EaXJlY3Rpb246XSk6IFVz
ZSBAKCkuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNl
bGVjdGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOiBVc2UgY3JlYXRlTlNBcnJh
eS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1Rv
U2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaXN0czpzdGFnZWREcmFnU291cmNlOl0pOgorICAgICAg
ICBGaXhlZCBhIHdhc3RlZnVsIGNhbGwgdG8gYXV0b3JlbGVhc2Ugd2hlcmUgd2UgYXJlIGFkZGlu
ZyBhbiBpdGVtIHRvIGEgZGljdGlvbmFyeS4gQ2FsbGluZyBnZXQKKyAgICAgICAgaXMgbW9yZSBl
ZmZpY2llbnQgYW5kIHN0aWxsIGNvcnJlY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAoLVtXS0ZpbGVVcGxvYWRQYW5lbCBp
bWFnZVBpY2tlckNvbnRyb2xsZXI6ZGlkRmluaXNoUGlja2luZ01lZGlhV2l0aEluZm86XSk6IFVz
ZSBAW10uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yUGlja2Vy
Lm1tOgorICAgICAgICAoLVtXS0NvbG9yTWF0cml4VmlldyBpbml0V2l0aEZyYW1lOmNvbG9yTWF0
cml4Ol0pOiBSZW1vdmVkIHVuZWVkZWQgUmV0YWluUHRyCisgICAgICAgIGxvY2FsIHZhcmlhYmxl
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAg
IChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6c2hvdyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6VGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyk6IFVzZSBj
cmVhdGVOU0FycmF5LgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0Zv
cldvcmQpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XS1ByaW50aW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2FkanVzdFBy
aW50aW5nTWFyZ2luc0ZvckhlYWRlckFuZEZvb3Rlcl0pOiBVc2UgQCgpLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAgIChhcnJheUZyb21S
ZWN0cyk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRGaW5kU3Ry
aW5nTWF0Y2hlc1dpdGhSZWN0czpkaWRXcmFwQXJvdW5kOl0pOiBVc2UgY3JlYXRlTlNBcnJheS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
TWFjLm1tOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIG5vdGlm
eUFjY2Vzc2liaWxpdHlDbGllbnRzOl0pOiBVc2UgQHt9CisgICAgICAgIGFuZCBmaXggYSBidWcg
d2hlcmUgdGhpcyB3YXMgY3JlYXRpbmcgYSBiYWNrd2FyZHMgZGljdGlvbmFyeS4gU28gdGhpcyBu
ZXZlcgorICAgICAgICBjb3VsZCBoYXZlIGJlZW4gd29ya2luZyBiZWZvcmUsIG1ha2luZyBtZSB3
b25kZXIgaG93IHdlIHRlc3QgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWFyY2hUaGVXZWIp
OiBVc2UgQFtdLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NSW50ZXJuYWxzLmg6IFJlbW92ZWQgdG9OU0FycmF5LgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbToKKyAgICAgICAgKFdl
YktpdDo6dG9OU0FycmF5KTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW06CisgICAgICAgICgtW1dLRE9NTm9kZSB0ZXh0
UmVjdHNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgdGV4
dFJlY3RzXSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9t
YWMvSW5qZWN0ZWRCdW5kbGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpzZXRCdW5kbGVQYXJhbWV0ZXIpOiBVc2UgQHt9LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
bWFrZVJlbmRlckxheWVyKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRlSXRl
bXNUb1Bhc3RlYm9hcmQpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6IFVzZSBAKCkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVu
ZFBhaW50aW5nKTogVXNlIEB7fS4KKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW06Cisg
ICAgICAgIFJlbW92ZWQgYW4gdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW06IERpdHRvLgor
ICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlBY3Rp
b25OYW1lc10pOiBVc2UgQFtdLgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0IGFjY2Vzc2liaWxpdHlDaGlsZHJlbl0pOiBVc2UgQFtdLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcpOiBVc2UgbWFrZVZlY3RvcjxTdHJp
bmc+LgorCiAyMDIwLTA0LTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2VzIGluIERvY3VtZW50TWFya2VyQ29udHJvbGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDgzYTBkOTVjNDgyMDY3MWY3M2I2MWJhN2I2
NjA1NjBiZDRiMWE2ZGYuLmY2NjdkOTljY2E2ZTUwYzViNDc3ZTNmYzA0OWE5NmUxNmYyZjk0MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNC0w
NyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1w
bGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91
dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAgICAgKC1bV2Vi
VmlzaWJsZVBvc2l0aW9uIGVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFsdGVybmF0
aXZlczpdKToKKyAgICAgICAgVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oOgorICAgICAgICBBZGRlZCAjaWYg
c28gdGhhdCB0aGlzIGNvcnJlY3RseSBkb2Vzbid0IGNvbXBpbGUgYW55dGhpbmcgb24gTWFjLgor
CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoK1tXZWJQREZW
aWV3IHN1cHBvcnRlZE1JTUVUeXBlc10pOiBVc2UgQFtdLgorCiAyMDIwLTA0LTA0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2Vz
IGluIERvY3VtZW50TWFya2VyQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGY4YjY4MTNjMmM1Y2E0MDg1NDdhZGIyOGE3Y2ZiZDViZjQ3ZTYwNWQuLjJhNzFlZGY2Mzli
NzBmOTIzNjNiNGM2ZDI1YmJjOWViNWQ3MjNmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNTcgQEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5
LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAgIChr
aXQpOiBEZWxldGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgVmVjdG9yPEludFJlY3Q+LgorICAgICAg
ICAoLVtET01Ob2RlIHRleHRSZWN0c10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1b
RE9NUmFuZ2UgdGV4dFJlY3RzXSk6IERpdHRvLgorCisgICAgICAgICogRE9NL0V4Y2VwdGlvbkhh
bmRsZXJzLm1tOgorICAgICAgICAocmFpc2VET01FcnJvckV4Y2VwdGlvbik6IFVzZSBAKCkuCisK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKC1bV2Vi
QmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl0pOiBVc2UgQHt9LgorCisg
ICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoK1tXZWJIaXN0b3J5UHJp
dmF0ZSBpbml0aWFsaXplXSk6IFVzZSBAe30uCisgICAgICAgICgtW1dlYkhpc3RvcnkgX3NlbmRO
b3RpZmljYXRpb246ZW50cmllczpdKTogVXNlIEB7fS4KKworICAgICAgICAqIEhpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9tRGljdGlv
bmFyeVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAo
LVtXZWJIaXN0b3J5SXRlbSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6IFVzZSBjcmVhdGVO
U0FycmF5IGFuZCBAKCkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm06
CisgICAgICAgICgrW1dlYlVSTHNXaXRoVGl0bGVzIGFycmF5V2l0aElGVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlXSk6IFVzZSBAW10uCisgICAgICAgICgrW1dlYlVSTHNXaXRoVGl0bGVzIHdyaXRl
VVJMczphbmRUaXRsZXM6dG9QYXN0ZWJvYXJkOl0pOiBVc2UgQFtdLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgc3RhdGlzdGljc10pOiBVc2UgQFtd
LCBAe30sIGFuZCBAKCkuCisgICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAg
ICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgbWVtb3J5U3RhdGlzdGljc10pOiBEaXR0by4KKwor
ICAgICAgICAqIE1pc2MvV2ViS2l0RXJyb3JzLm06CisgICAgICAgICgtW05TRXJyb3IgX3dlYmtp
dF9pbml0V2l0aERvbWFpbjpjb2RlOlVSTDpdKTogVXNlIEB7fS4KKyAgICAgICAgKCtbTlNFcnJv
ciBfcmVnaXN0ZXJXZWJLaXRFcnJvcnNdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bTlNFcnJvciBf
aW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6Y29udGVudFVSTDpwbHVnaW5QYWdlVVJMOnBsdWdpbk5h
bWU6TUlNRVR5cGU6XSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5TU3RyaW5n
RXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZvbnQ6dGV4
dENvbG9yOl0pOiBVc2UgQHt9LgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX3dpZHRoV2l0aEZv
bnQ6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMu
bW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIE1pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoK1tOU1Bhc3RlYm9hcmQgX3dlYl9kcmFnVHlwZXNG
b3JVUkxdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGVVUkw6
YW5kVGl0bGU6dHlwZXM6XSk6IFVzZSBAW10uCisgICAgICAgICgrW05TUGFzdGVib2FyZCBfd2Vi
X3NldEZpbmRQYXN0ZWJvYXJkU3RyaW5nOndpdGhPd25lcjpdKTogVXNlIEBbXS4KKworICAgICAg
ICAqIE1pc2MvV2ViTlNVUkxFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKwor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OnNwYXduUGx1Z2luSG9z
dCk6IFVzZSBAe30uCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhv
c3RQcm94eS5tbToKKyAgICAgICAgKFdLUENJZGVudGlmaWVySW5mbyk6IFVzZSBAKCkuCisKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0Fy
cmF5KTogVXNlIEAoKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICAqIFBs
dWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW06IERpdHRvLgorCisgICAgICAgICogUGx1Z2lu
cy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udGFp
bmVyQ2hlY2sgX2FjdGlvbkluZm9ybWF0aW9uV2l0aFVSTDpdKTogVXNlIEB7fS4KKworICAgICAg
ICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06CisgICAgICAgICgrW1dlYlBsdWdpbkRh
dGFiYXNlIF9kZWZhdWx0UGx1Z0luUGF0aHNdKTogVXNlIEBbXS4KKworICAgICAgICAqIFN0b3Jh
Z2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIg
ZGF0YWJhc2VzV2l0aE9yaWdpbjpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChDb3JyZWN0aW9uUGFu
ZWw6OnNob3cpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2Fn
ZVRvQ29uc29sZSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZl
cnNpb24pOiBVc2UgQCgpLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRHdWVzc2VzRm9y
V29yZCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjphY3Rpb25EaWN0aW9uYXJ5IGNvbnN0KTogVXNlIEAoKS4KKyAgICAgICAgKGtpdCk6IERlbGV0
ZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKHBsdWdpblZp
ZXcpOiBVc2UgQHt9LgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdp
bik6IFVzZSBjcmVhdGVOU0FycmF5LCBAe30sIGFuZCBAKCkuCisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6IFVzZSBjcmVhdGVOU0FycmF5Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW06
CisgICAgICAgICgtW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGNob29zZUZpbGVuYW1lczpd
KTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKC1bV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWU6ZGlzcGxheVN0cmluZzppY29uSW1hZ2U6XSk6IFVzZSBA
W10uCisgICAgICAgICgtW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGNob29zZUZpbGVuYW1l
czpkaXNwbGF5U3RyaW5nOmljb25JbWFnZTpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1t
OgorICAgICAgICAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlv
blNlcnZpY2VDbGljayk6CisgICAgICAgIENvbW1lbnQgb3V0IGFuIHVudXNlZCBhcmd1bWVudC4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9y
ZWN0c0ZvclJhbmdlOl0pOiBVc2UgY3JlYXRlTlNBcnJyYXkuCisgICAgICAgICgtW1dlYkZyYW1l
IF9jb21wdXRlUGFnZVJlY3RzV2l0aFByaW50U2NhbGVGYWN0b3I6cGFnZVNpemU6XSk6IFVzZSBj
cmVhdGVOU0FycmF5IGFuZCBAW10uCisgICAgICAgICgtW1dlYkZyYW1lIGNoaWxkRnJhbWVzXSk6
IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
K1tXZWJIVE1MVmlldyBfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzXSk6IFVzZSBAW10uCisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b246XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGtub3dzUGFnZVJhbmdlOl0p
OiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcHlGb250Ol0pOiBV
c2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW50ZXJwcmV0S2V5RXZlbnQ6c2F2aW5n
Q29tbWFuZHM6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNlbGVjdGlvblRl
eHRSZWN0c10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgcmVj
dHNGb3JUZXh0TWF0Y2hlc10pOiBVc2UgY3JlYXRlTlNBcnJheSBhbmQgQFtdLgorCisgICAgICAg
ICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNs
dWRlLgorICAgICAgICAoK1tXZWJQREZSZXByZXNlbnRhdGlvbiBwb3N0U2NyaXB0TUlNRVR5cGVz
XSk6IFVzZSBAW10uCisgICAgICAgICgrW1dlYlBERlJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1J
TUVUeXBlc10pOiBVc2UgQFtdLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJQREZWaWV3IGVsZW1lbnRBdFBvaW50Ol0pOiBVc2UgQHt9IGFuZCBAKCku
CisgICAgICAgICgtW1dlYlBERlZpZXcgdmlld1N0YXRlXSk6IFVzZSBAKCkuCisgICAgICAgICgt
W1dlYlBERlZpZXcgc2VsZWN0aW9uVGV4dFJlY3RzXSk6IFVzZSBAW10uCisgICAgICAgICgtW1dl
YlBERlZpZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10uCisgICAgICAg
ICgtW1dlYlBERlZpZXcgX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDpdKTogVXNlIEAoKS4K
KyAgICAgICAgKC1bV2ViUERGVmlldyBfb3BlbldpdGhGaW5kZXI6XSk6IFVzZSBAe30gYW5kIEAo
KS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dl
YlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgX3NldFVuc2lnbmVkSW50VmFsdWU6Zm9yS2V5Ol0pOiBVc2UgQCgpLgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0SW5pdGlhbERlZmF1bHRUZXh0RW5jb2RpbmdUb1N5c3RlbUVu
Y29kaW5nXSk6IFVzZSBAKCkuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeTpdKTogVXNlIEB7fSBhbmQgQCgpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQ
YXJzZWQpOiBVc2UgQCgpLgorCisgICAgICAgICogV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlciBfcGxh
Y2VQb3B1cFdpbmRvdzpdKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBVc2UgbWFrZVZl
Y3RvcjxTdHJpbmc+LgorICAgICAgICAoLVtXZWJWaWV3IF9jb250ZW50c09mVXNlckludGVyZmFj
ZUl0ZW06XSk6IFVzZSBAKCkuCisgICAgICAgICh0b1N0cmluZ1ZlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6
d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAg
ICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2Vy
U3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0Omlu
amVjdGVkRnJhbWVzOl0pOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAg
ICAoLVtXZWJWaWV3IF9lbGVtZW50QXRXaW5kb3dQb2ludDpdKTogVXNlIEB7fS4KKyAgICAgICAg
KC1bV2ViVmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25dKTogVXNlIEBbXS4KKyAgICAg
ICAgKC1bV2ViVmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JFbGVtZW50Ol0pOiBVc2UgQFtdLgorICAg
ICAgICAoLVtXZWJWaWV3IHJlY3RzRm9yVGV4dE1hdGNoZXNdKTogVXNlIEBbXS4KKyAgICAgICAg
KC1bV2ViVmlldyBfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51Ol0pOiBVc2UgQFtdLgorICAgICAg
ICAoLVtXZWJWaWV3IF9zZXRGb250V2hpdGVsaXN0Ol0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+
LgorCiAyMDIwLTA0LTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2VzIGluIERvY3VtZW50TWFya2VyQ29udHJvbGxlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGY2MGQxZmIzM2U0NmM1MzczM2MwOTAz
MTIzOWQ4ZjY5YjRhYjEzZDguLmM5MWU2ZWEyNzhhYjE5NmE2MWViZmZhYzRjOGMwODA0ZGY3MzEx
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTQ2LDcgKzQ2LDYgQEAK
ICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9y
dCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC03NDIsNyArNzQxLDcgQEAgc3RhdGljIEpTQ29u
dGFpbmVyQ29udmVydG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0dsb2JhbENv
bnRleHRSZWYgY28KICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgbnVtYmVyLCBzbyBpdCB3
aWxsIHVuaXF1ZSBjb3JyZWN0bHkgaW4gdGhlIGhhc2ggbWFwIC0KICAgICAgICAgICAgIC8vIGl0
J3MgbmljZXIgbm90IHRvIGxlYWsgdGhpcyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwh
CiAgICAgICAgICAgICB2YWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJpbWl0aXZlID0gW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCAw
KV07CisgICAgICAgICAgICBwcmltaXRpdmUgPSBAKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2
YWx1ZSwgMCkpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB2
YWx1ZSkpIHsKICAgICAgICAgICAgIC8vIFdvdWxkIGJlIG5pY2UgdG8gdW5pcXVlIHN0cmluZ3Ms
IHRvby4KICAgICAgICAgICAgIGF1dG8ganNzdHJpbmcgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIHZhbHVlLCAwKSk7CkBAIC04MzcsNyArODM2LDcgQEAgaWQgdmFsdWVU
b051bWJlcihKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNW
YWx1ZVJlZiogZXhjZXAKICAgICAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwg
dmFsdWUpID8gQFlFUyA6IEBOTzsKIAogICAgIGRvdWJsZSByZXN1bHQgPSBKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOipleGNlcHRpb24gPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1
aWV0X05hTigpIDogcmVzdWx0XTsKKyAgICByZXR1cm4gQCgqZXhjZXB0aW9uID8gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSA6IHJlc3VsdCk7CiB9CiAKIGlkIHZhbHVl
VG9TdHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5tbQppbmRleCBlZmFmMzBkZDQ0ZTYyYzNmOTE3ZmI2YmVlNmViMWI4ZjBhYzYxNjU2Li40
MjJjYmE1N2Y5NDE1MDc3MzAyNzQ0MjlhMThjNDQxODlkOTczMWEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAgLSAoTlNT
dHJpbmcgKil0ZXN0QXJndW1lbnRUeXBlc1dpdGhJbnQ6KGludClpIGRvdWJsZTooZG91YmxlKWQg
Ym9vbGVhbjooQk9PTCliIHMKIH0KIC0gKHZvaWQpY2FsbGJhY2s6KEpTVmFsdWUgKilmdW5jdGlv
bgogewotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6NDJdXV07CisgICAgW2Z1bmN0aW9uIGNhbGxX
aXRoQXJndW1lbnRzOkBbQCg0MildXTsKIH0KIC0gKHZvaWQpYm9ndXNDYWxsYmFjazoodm9pZChe
KShpbnQpKWZ1bmN0aW9uCiB7CkBAIC0xOTksNyArMTk5LDcgQEAgLSAodm9pZCljbGljawogICAg
ICAgICByZXR1cm47CiAKICAgICBKU1ZhbHVlICpmdW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVy
IHZhbHVlXTsKLSAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXld
XTsKKyAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6QFtdXTsKIH0KIEBlbmQKIApAQCAt
MTE3MSwxMCArMTE3MSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAg
ICAgICAgY29udGV4dFtAImhhbmRsZVRoZURpY3Rpb25hcnkiXSA9IF4oTlNEaWN0aW9uYXJ5ICpk
aWN0KSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmV4cGVjdGVkRGljdCA9IEB7Ci0gICAg
ICAgICAgICAgICAgQCJmb28iIDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sCi0gICAgICAg
ICAgICAgICAgQCJiYXIiIDogQHsKLSAgICAgICAgICAgICAgICAgICAgQCJiYXoiOiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDoyXQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBA
ImZvbyI6IEAoMSksCisgICAgICAgICAgICAgICAgQCJiYXIiOiBAeyBAImJheiI6IEAoMikgfQog
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAicmVjdXJzaXZlbHkgY29u
dmVydCBuZXN0ZWQgZGljdGlvbmFyaWVzIiwgW2RpY3QgaXNFcXVhbFRvRGljdGlvbmFyeTpleHBl
Y3RlZERpY3RdKTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGJhMjVlOTM0YTExNjIxZDM4ODg1YzUwODA3YmNhYTg5N2MyOWE4OGMuLmU0
M2IzYjRjMmE5OGZmNWFhNTNlNjg0ODFjM2EzMTI0NmM2MDZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc3LDYgKzQ3Nyw3IEBACiAJCTgzRjJCQURF
MUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZCQTkz
MTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkY0
NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzMjQxNjU3MjQzQkMyRTUwMDMyRkFBRSAvKiBWZWN0b3JDb2NvYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWZWN0b3JDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMxOTFG
Q0I2QUI5MDAzMkVDRDYgLyogU3RyaW5nSGFzaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0hhc2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
Mzg0QjczRTIwREVBMjg0MDA1QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0ZYUENCcmlkZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRC
RDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjQsNiArMTUyNSw3IEBACiAJCQkJQTMwRDQxMkMxRjBERTBC
QTAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8sCiAJCQkJRUI2MUVEQzYyNDA5Q0NDMDAwMUVG
RTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi8sCiAJCQkJNUNDMEVFODYyMTYyQkMyMjAw
QTFBODQyIC8qIFVSTENvY29hLm1tICovLAorCQkJCTkzMjQxNjU3MjQzQkMyRTUwMDMyRkFBRSAv
KiBWZWN0b3JDb2NvYS5oICovLAogCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3Jr
UXVldWVDb2NvYS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCA2ZTg2MzMyY2UyM2ZmMmUzM2ZjMTYzNjY1MjczMmQ4MDU5ZjZkZWRi
Li5iNzRhMjc3MjhlYzU1MDA3NTU4N2UwYTQ4MjVjMjE4MWZiOTU5MTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtMTgsNiArMTgsNyBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hF
QURFUlMKICAgICBjb2NvYS9OU1VSTEV4dHJhcy5oCiAgICAgY29jb2EvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzQ29jb2EuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKKyAgICBjb2NvYS9WZWN0
b3JDb2NvYS5oCiAKICAgICBkYXJ3aW4vV2Vha0xpbmtpbmcuaAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05T
VVJMRXh0cmFzLm1tCmluZGV4IDNhNGZjYTk5MWY0NmJmZmJhNzQyZDZiNTkxM2NkZGQ4NWIxZGU1
MDUuLjQ3ZGVlNjI5NTZhMzM0NGY2OTUxMzhmZTY4M2I4NGI2Yzc4MzEzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJOU1VSTEV4
dHJhcy5oIgogCiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVu
dGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1VS
TEhlbHBlcnMuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29j
b2EubW0KaW5kZXggMjNlZTllNmU4ZDBjMTI5Y2U1M2RlYzlhNGY4Mzc0NzY0NDBlMDY4Yy4uNmJk
YWU4MGJkNjc2MTZhMTQ4OTIxYmZmNjM5MGJkMDEzYmExOWYwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJM
Q29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCA8
d3RmL1VSTC5oPgogCi0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJhcy5oPgogI2ltcG9y
dCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MjhiY2Y1NTY1NzhhM2YxMWQ1NzdhYWUyNTg0ODBhYmQwMGI5ZWM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIFNwZWNpYWxpemUgdGhlIGJlaGF2aW9yIG9mIHRoZXNlIGZ1bmN0aW9ucyBieSBv
dmVybG9hZGluZyB0aGUgbWFrZU5TQXJyYXlFbGVtZW50CisvLyBmdW5jdGlvbnMgYW5kIG1ha2VW
ZWN0b3JFbGVtZW50IGZ1bmN0aW9ucy4gVGhlIG1ha2VOU0FycmF5RWxlbWVudCBmdW5jdGlvbiB0
YWtlcworLy8gYSBjb25zdCYgdG8gYSB2ZWN0b3IgZWxlbWVudCBhbmQgcmV0dXJucyBhIFJldGFp
blB0cjxpZD4uIFRoZSBtYWtlVmVjdG9yRWxlbWVudAorLy8gZnVuY3Rpb24gdGFrZXMgYW4gaWdu
b3JlZCBwb2ludGVyIHRvIHRoZSB2ZWN0b3IgZWxlbWVudCB0eXBlLCBtYWtpbmcgYXJndW1lbnQt
CisvLyBkZXBlZGVuZGVudCBsb29rdXAgd29yaywgYW5kIGFuIGlkIGZvciB0aGUgYXJyYXkgZWxl
bWVudCwgYW5kIHJldHVybnMgYW4KKy8vIE9wdGlvbmFsPFQ+IG9mIHRoZSB0aGUgdmVjdG9yIGVs
ZW1lbnQsIGFsbG93aW5nIHVzIHRvIGZpbHRlciBvdXQgYXJyYXkgZWxlbWVudHMKKy8vIHRoYXQg
YXJlIG5vdCBvZiB0aGUgZXhwZWN0ZWQgdHlwZS4KKy8vCisvLyAgICAgUmV0YWluUHRyPGlkPiBt
YWtlTlNBcnJheUVsZW1lbnQoY29uc3QgVmVjdG9yRWxlbWVudFR5cGUmKTsKKy8vICAgICBPcHRp
b25hbDxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgVmVjdG9yRWxl
bWVudFR5cGUqLCBpZCBhcnJheUVsZW1lbnQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JU
eXBlPiBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNBcnJheShjb25zdCBWZWN0b3JUeXBlJik7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JFbGVtZW50VHlwZT4gVmVjdG9yPFZlY3RvckVsZW1l
bnRUeXBlPiBtYWtlVmVjdG9yKE5TQXJyYXkgKik7CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFp
bHMgb2YgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlcyBhYm92ZS4KKwordGVtcGxhdGU8dHlwZW5hbWUg
VmVjdG9yVHlwZT4gUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJyYXkoY29uc3QgVmVjdG9y
VHlwZSYgdmVjdG9yKQoreworICAgIGF1dG8gc2l6ZSA9IHZlY3Rvci5zaXplKCk7CisgICAgYXV0
byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzaXplXSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogdmVjdG9yKQorICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OmdldFB0cihtYWtlTlNBcnJheUVsZW1lbnQoZWxlbWVudCkpXTsKKyAgICBy
ZXR1cm4gYXJyYXk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvckVsZW1lbnRUeXBlPiBW
ZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3IoTlNBcnJheSAqYXJyYXkpCit7Cisg
ICAgVmVjdG9yPFZlY3RvckVsZW1lbnRUeXBlPiB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOworICAgIGZvciAoaWQgZWxlbWVudCBpbiBhcnJh
eSkgeworICAgICAgICBjb25zdGV4cHIgY29uc3QgVmVjdG9yRWxlbWVudFR5cGUqIHR5cGVkTnVs
bCA9IG51bGxwdHI7CisgICAgICAgIGlmIChhdXRvIHZlY3RvckVsZW1lbnQgPSBtYWtlVmVjdG9y
RWxlbWVudCh0eXBlZE51bGwsIGVsZW1lbnQpKQorICAgICAgICAgICAgdmVjdG9yLnVuY2hlY2tl
ZEFwcGVuZChXVEZNb3ZlKCp2ZWN0b3JFbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiB2ZWN0
b3I7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Om1ha2VWZWN0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBkNDgyOTIyODIyOTZiOWE4NTdiNjE5ODA5Yzc3YjNh
NjYxYmFiMThlLi40YTYzMzY4NmQ1NjdlZTBhYTZmMDUwYTcwZDM3NGY0NDUzOWIxMDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ1Niw2ICs0NTYsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PFN0cmluZz4gewogICAgIHN0YXRpYyBT
dHJpbmcgZmx1c2goTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCopIHsg
cmV0dXJuIHsgY2hhcmFjdGVycywgbGVuZ3RoIH07IH0KIH07CiAKKyNpZmRlZiBfX09CSkNfXwor
CitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29u
c3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVj
dG9yRWxlbWVudChjb25zdCBTdHJpbmcqLCBpZCk7CisKKyNlbmRpZgorCiAvLyBEZWZpbml0aW9u
cyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1w
bCYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KaW5kZXgg
NDg5MDYwZDA3ZDIzZjE3N2ZmMzRhNzI3ZGZjOWM4MDM3ZjI1ZmU3OS4uODBkMGVhZTAyYmY4ZDA4
Y2FhMGY5ODQwYTBhNjgzYWVkZjQwNGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0
cmluZ0NvY29hLm1tCkBAIC00OCw0ICs0OCwxNiBAQCBTdHJpbmc6OlN0cmluZyhOU1N0cmluZyAq
c3RyKQogICAgIH0KIH0KIAorUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3Qg
U3RyaW5nJiB2ZWN0b3JFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdE5TKChfX2JyaWRnZV90
cmFuc2ZlciBpZCl2ZWN0b3JFbGVtZW50LmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKK30K
KworT3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBTdHJpbmcqLCBpZCBh
cnJheUVsZW1lbnQpCit7CisgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6TlNT
dHJpbmcuY2xhc3NdKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7
IHsgYXJyYXlFbGVtZW50IH0gfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRl
eCBmMTVjYTVjYTI0NmI1MTczMDU5MWVkMWIyNDgyMDMxYTAyNGY0YzU0Li40ZGExMTQzM2I0Y2Y4
ZDg3NTQyOTRiNzJjMDg1YjE3YmRjOWU5YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpA
QCAtMzEwLDYgKzMxMCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENvY29hLm1tCkBAIC0zMTgsNiArMzE5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0
aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KQEAgLTMzNiw3ICszMzgsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQ29yZVRleHQubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBv
aW50TWFjLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbQogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udENhY2hlTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0zNDQsNyArMzQ1LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW50UG9pbnRNYWMubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXplTWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IGZmYzYxYjQ4NjU1MjBkZmE3N2VkYTRiYTRkMDk3NjJkNjJlZWIzMTYuLjBiYWZkMzZmYTY1
ODc3NjAyMzU4ZjdmZWY5YTdkYjU0MmMxZDZiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzE1LDYgKzMxNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zs
b2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQpAQCAtMzI0LDYgKzMyNSw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5t
bQpAQCAtMzY3LDcgKzM2OSw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UG9pbnRNYWMubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
bG9hdFJlY3RNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzc1LDcgKzM3Niw2IEBAIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNv
bk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW50UG9pbnRNYWMubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRSZWN0TWFj
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50U2l6ZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3MjY3OWM1ZDg1ZTY0Yjc0YTVhYmQ4M2MxN2Rl
N2RjZjBjYjdlMTUuLjc5Y2Q1ZjFjMzZlYzU5NzE2OTVhY2JhOGI1NDIyOWJkZjY1Y2FkY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyNzY5LDExICsxMjc2OSwxMSBAQAogCQlCMjc1MzU0ODBCMDUzODE0MDAyQ0U2NEYgLyog
SW50U2l6ZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludFNpemVI
YXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTRBMEIwNTM4MTQwMDJD
RTY0RiAvKiBDb2xvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBDb2xvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEIw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRmxvYXRQb2ludE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQjI3NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFJlY3RNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAv
KiBGbG9hdFJlY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGbG9hdFJlY3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3
NTM1NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyNzUzNTRFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFBvaW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElu
dFBvaW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzU1MDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50UmVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBJbnRSZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFJlY3RDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NTEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50U2l6ZU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NTIwQjA1MzgxNDAwMkNF
NjRGIC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU1MzBCMDUzODE0MDAy
Q0U2NEYgLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0aC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUxNDcsNyArMjUxNDcsNiBAQAogCQkJ
CTQ5QUYyRDZCMTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3Bw
ICovLAogCQkJCTJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuaCAqLywKIAkJCQlCMjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1h
Yy5tbSAqLywKLQkJCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0TWFjLm1t
ICovLAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8s
CiAJCQkJQjJBRkZDNzQwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSAqLywKIAkJ
CQlCMkFGRkM3NTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Ki8sCkBAIC0yNTE1Niw3ICsyNTE1NSw2IEBACiAJCQkJQjI3NTM1OEQwQjA1M0E2NjAwMkNFNjRG
IC8qIEljb25NYWMubW0gKi8sCiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
TWFjLm1tICovLAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5t
bSAqLywKLQkJCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1hYy5tbSAqLywK
IAkJCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1hYy5tbSAqLywKIAkJCQky
RDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1hYy5tbSAqLywKIAkJ
CQkxNjNFODhGNTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAg
Ki8sCkBAIC0yNTUxMyw2ICsyNTUxMSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGNDhEMkFB
MzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovLAogCQkJCUY0OEQyQUE0MjE1OTc0
MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLm1tICovLAorCQkJCUIyNzUzNTRDMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFJlY3RDb2NvYS5tbSAqLywKIAkJCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNG
QTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovLAogCQkJCUMyNDU4RTYxMUZFODk3OUUwMDU5
NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovLAogCQkJCUIyQUZGQzc4MEQwMEE1QzEwMDMw
MDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tICovLApAQCAtMjU1MjgsNiArMjU1MjcsNyBAQAog
CQkJCTJEMEI0QUE5MThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UuaCAqLywKIAkJCQkyRDBC
NEFBQTE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tICovLAogCQkJCUFEOUZGNkUwMTkw
ODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8sCisJCQkJQjI3NTM1NTAw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlD
RjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAq
LywKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KaW5kZXggMTQ5YTZmMjY5ODcwM2U5M2FjNzExNjFmOTIzYzBlOWE0ZjFk
YThhNi4uYWQ0NzFjYzI4NjhlMjMwYWNjNDYxYjMzNWYzNDQzYjVmM2Y3M2Y1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIxMzYsNyArMjEzNiw3IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcqIGF0dHJTCiAgICAgaW50IHF1b3RlTGV2ZWwgPSBibG9ja3F1b3RlTGV2
ZWwocmVuZGVyZXIpOwogICAgIAogICAgIGlmIChxdW90ZUxldmVsKQotICAgICAgICBbYXR0clN0
cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgdmFs
dWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAg
ICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1
b3RlTGV2ZWwgdmFsdWU6QChxdW90ZUxldmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQogICAg
ICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9j
a3F1b3RlTGV2ZWwgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtMjE1MCw3ICsyMTUwLDcgQEAgc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmkKICAgICBpbnQgcGFyZW50SGVhZGluZ0xldmVsID0gcGFyZW50T2Jq
ZWN0LT5oZWFkaW5nTGV2ZWwoKTsKICAgICAKICAgICBpZiAocGFyZW50SGVhZGluZ0xldmVsKQot
ICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5IZWFk
aW5nTGV2ZWwgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cGFyZW50SGVhZGluZ0xldmVs
XSByYW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vz
c2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1ZTpAKHBhcmVudEhlYWRpbmdMZXZlbCkgcmFu
Z2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRl
OlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIHJhbmdlOnJhbmdlXTsKIH0KQEAgLTI0
NDMsNyArMjQ0Myw3IEBAIC0gKE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb24K
ICAgICBpZiAoIXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJrZXIs
IGVuZE1hcmtlciwgbmlsXTsKKyAgICByZXR1cm4gQFtzdGFydE1hcmtlciwgZW5kTWFya2VyXTsK
IH0KIAogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyRm9yUG9zaXRp
b246KE5TSW50ZWdlcilwb3NpdGlvbgpAQCAtMjQ2OCw3ICsyNDY4LDcgQEAgLSAoaWQpX3N0cmlu
Z0Zyb21TdGFydE1hcmtlcjooV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKXN0YXJ0TWFya2Vy
IHRvRW5kTWFya2UKICAgICBpZiAoIXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJheU9mVGV4
dEZvclRleHRNYXJrZXJzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJrZXIsIGVu
ZE1hcmtlciwgbmlsXSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdOworICAgIE5TQXJyYXkqIGFycmF5
ID0gW3NlbGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0TWFya2VyLCBlbmRNYXJr
ZXJdIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF07CiAgICAgQ2xhc3MgcmV0dXJuQ2xhc3MgPSBhdHRy
aWJ1dGVkID8gW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIDogW05TTXV0YWJsZVN0
cmluZyBjbGFzc107CiAgICAgaWQgcmV0dXJuVmFsdWUgPSBbWyhOU1N0cmluZyAqKVtyZXR1cm5D
bGFzcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAgIApAQCAtMjU4Niw3ICsyNTg2LDcg
QEAgLSAoTlNBcnJheSAqKWVsZW1lbnRzRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKICAgICBpZiAo
IXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOltOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJrZXIsIGVuZE1hcmtlciwgbmlsXSBhdHRyaWJ1
dGVkOk5PXTsKKyAgICBOU0FycmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9yVGV4dE1h
cmtlcnM6QFtzdGFydE1hcmtlciwgZW5kTWFya2VyXSBhdHRyaWJ1dGVkOk5PXTsKICAgICBOU011
dGFibGVBcnJheSogZWxlbWVudHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIGZvciAo
aWQgZWxlbWVudCBpbiBhcnJheSkgewogICAgICAgICBpZiAoIVtlbGVtZW50IGlzS2luZE9mQ2xh
c3M6W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0pCkBAIC0yODUyLDcgKzI4NTIs
NyBAQCAtIChOU0FycmF5ICopdGV4dE1hcmtlcnNGb3JSYW5nZTooUmVmUHRyPFJhbmdlPilyYW5n
ZQogICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmQgPSBbV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTpyYW5nZSBpc1N0YXJ0Ok5P
IGNhY2hlOnNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCldOwogICAgIGlmICgh
c3RhcnQgfHwgIWVuZCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czpzdGFydCwgZW5kLCBuaWxdOworICAgIHJldHVybiBAW3N0YXJ0LCBl
bmRdOwogfQogCiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlFeHBhbmRlZFRleHRWYWx1ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNo
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVN
YWMubW0KaW5kZXggNjg4NzgyY2ZkZWQ3YWU1MzdkNGE3NGIyNmIyY2E4NDk1MjE0MTMyYi4uYjE1
Y2QwNTgwNTJlNmJkNmNmMzRkMTUzNGZhZmI4MTFmY2QwYTNjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC00NDUs
NyArNDQ1LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGlj
dGlvbmFyeShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhUZXgKICAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpjaGFuZ2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6NF07CiAgICAgW2NoYW5nZSBzZXRPYmplY3Q6QChwbGF0Zm9ybUVkaXRUeXBlRm9yV2ViQ29y
ZUVkaXRUeXBlKHR5cGUpKSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRUeXBlXTsKICAg
ICBpZiAobGVuZ3RoID4gQVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGgpIHsKLSAgICAgICAg
W2NoYW5nZSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGVuZ3RoXSBmb3JLZXk6
TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlTGVuZ3RoXTsKKyAgICAgICAgW2NoYW5nZSBz
ZXRPYmplY3Q6QChsZW5ndGgpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVM
ZW5ndGhdOwogICAgICAgICB0ZXh0ID0gW3RleHQgc3Vic3RyaW5nVG9JbmRleDpBWFZhbHVlQ2hh
bmdlVHJ1bmNhdGlvbkxlbmd0aF07CiAgICAgfQogICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHQg
Zm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggMWFlNmFhOWM1OGU0ZmU0MWY1YWRkNThkYjU2
NWE1M2E1YzI3OWM4OC4uZTBiYTBiZjQwOGJhMDUzOTc1ZGE0N2M4Yzg3ODFjNWUwZDk3NTA1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtNjUsNiArNjUs
NyBAQAogI2ltcG9ydCAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW1wb3J0ICJWaXNpYmxlVW5p
dHMuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
SElTZXJ2aWNlc1NQSS5oPgpAQCAtNjE0LDcgKzYxNSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0
eVBvc3RlZE5vdGlmaWNhdGlvbjooTlNTdHJpbmcgKilub3RpZmljYXRpb25OYW1lIHVzZXJJbmZv
OihOCiAgICAgaWYgKGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zKSB7CiAg
ICAgICAgIEFTU0VSVChub3RpZmljYXRpb25OYW1lKTsKICAgICAgICAgdXNlckluZm8gPSBkaWN0
aW9uYXJ5UmVtb3ZpbmdOb25TdXBwb3J0ZWRUeXBlcyh1c2VySW5mbyk7Ci0gICAgICAgIE5TRGlj
dGlvbmFyeSAqaW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czpub3RpZmljYXRpb25OYW1lLCBAIm5vdGlmaWNhdGlvbk5hbWUiLCB1c2VySW5mbywgQCJ1c2Vy
SW5mbyIsIG5pbF07CisgICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IEB7IEAibm90aWZpY2F0
aW9uTmFtZSI6IG5vdGlmaWNhdGlvbk5hbWUsIEAidXNlckluZm8iOiB1c2VySW5mbyB9OwogICAg
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOkAiQVhEUlROb3RpZmljYXRpb24iIG9iamVjdDpzZWxmIHVzZXJJbmZvOmluZm9dOwog
ICAgIH0KIH0KQEAgLTY5MSw2ICs2OTIsMTMgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHUKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzZWFyY2hLZXkpID8gc2VhcmNoS2V5IDogQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXkqLCBpZCBhcnJheUVsZW1lbnQpCit7CisgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2lu
ZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiB7IHsgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhhcnJheUVsZW1l
bnQpIH0gfTsKK30KKwogQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29u
c3QgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlKQogewogICAgIE5TU3RyaW5n
ICpkaXJlY3Rpb25QYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JL
ZXk6QCJBWERpcmVjdGlvbiJdOwpAQCAtNzI5LDE2ICs3MzcsOSBAQCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRl
UGFyYW1ldAogICAgIAogICAgIGlmIChbc2VhcmNoS2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMuYXBwZW5kKGFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoc2VhcmNoS2V5UGFyYW1ldGVyKSk7Ci0gICAg
ZWxzZSBpZiAoW3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNz
XV0pIHsKLSAgICAgICAgc2l6ZV90IHNlYXJjaEtleUNvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90
Pihbc2VhcmNoS2V5UGFyYW1ldGVyIGNvdW50XSk7Ci0gICAgICAgIGNyaXRlcmlhLnNlYXJjaEtl
eXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWFyY2hLZXlDb3VudCk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2VhcmNoS2V5Q291bnQ7ICsraSkgewotICAgICAgICAgICAgTlNT
dHJpbmcgKnNlYXJjaEtleSA9IFtzZWFyY2hLZXlQYXJhbWV0ZXIgb2JqZWN0QXRJbmRleDppXTsK
LSAgICAgICAgICAgIGlmIChbc2VhcmNoS2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCi0gICAgICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy51bmNoZWNrZWRBcHBlbmQo
YWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhzZWFyY2hLZXkpKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKKyAgICBlbHNlIGlmIChbc2VhcmNoS2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cyA9IG1ha2VW
ZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4oc2VhcmNoS2V5UGFyYW1ldGVyKTsKKwogICAg
IHJldHVybiBjcml0ZXJpYTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQppbmRleCAzNjQwNDMzOGQ2NTczMzYwZGUyZWEwZTcyOWFhYjY4ZDllNTliZDY1Li5iNDAz
ZDNmNmM1MTZmYjZiZDYwZmE5Y2JjZmFmYzVhNDQ0MTUyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzgsNyArNzgsNyBAQAogI2ltcG9ydCAiV2ViQ29y
ZUZyYW1lVmlldy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KLSNpbXBvcnQgPHd0Zi9P
YmpDUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
ICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CkBAIC02NDUsMTQgKzY0NSw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0
eVNlYXJjaFRleHRDcml0ZXJpYSwgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24+IGFjCiAgICAg
aWYgKFtyZXBsYWNlbWVudFN0cmluZ1BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQogICAgICAgICBvcGVyYXRpb24ucmVwbGFjZW1lbnRUZXh0ID0gcmVwbGFjZW1lbnRT
dHJpbmdQYXJhbWV0ZXI7CiAKLSAgICBpZiAoW3NlYXJjaFN0cmluZ3NQYXJhbWV0ZXIgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0gICAgICAgIHNpemVfdCBzZWFyY2hTdHJpbmdz
Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFtzZWFyY2hTdHJpbmdzUGFyYW1ldGVyIGNvdW50
XSk7Ci0gICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzZWFyY2hTdHJpbmdzQ291bnQpOwotICAgICAgICBmb3IgKE5TU3RyaW5nICpzZWFyY2hTdHJp
bmcgaW4gc2VhcmNoU3RyaW5nc1BhcmFtZXRlcikgewotICAgICAgICAgICAgaWYgKFtzZWFyY2hT
dHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBj
cml0ZXJpYS5zZWFyY2hTdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChzZWFyY2hTdHJpbmcpOwotICAg
ICAgICB9Ci0gICAgfQorICAgIGlmIChbc2VhcmNoU3RyaW5nc1BhcmFtZXRlciBpc0tpbmRPZkNs
YXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MgPSBt
YWtlVmVjdG9yPFN0cmluZz4oc2VhcmNoU3RyaW5nc1BhcmFtZXRlcik7CiAKICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoY3JpdGVyaWEsIG9wZXJhdGlvbik7CiB9CkBAIC02NjUsMTQgKzY1OSw4
IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0CiAgICAgTlNTdHJpbmcgKnN0YXJ0ID0gW3BhcmFt
cyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbV07CiAgICAg
TlNTdHJpbmcgKmRpcmVjdGlvbiA9IFtwYXJhbXMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0
eVNlYXJjaFRleHREaXJlY3Rpb25dOwogCi0gICAgaWYgKFtzZWFyY2hTdHJpbmdzIGlzS2luZE9m
Q2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgewotICAgICAgICBzaXplX3Qgc2VhcmNoU3RyaW5nc0Nv
dW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihbc2VhcmNoU3RyaW5ncyBjb3VudF0pOwotICAgICAg
ICBjcml0ZXJpYS5zZWFyY2hTdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VhcmNoU3Ry
aW5nc0NvdW50KTsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqc2VhcmNoU3RyaW5nIGluIHNlYXJj
aFN0cmluZ3MpIHsKLSAgICAgICAgICAgIGlmIChbc2VhcmNoU3RyaW5nIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5n
cy51bmNoZWNrZWRBcHBlbmQoc2VhcmNoU3RyaW5nKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBp
ZiAoW3NlYXJjaFN0cmluZ3MgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAg
ICBjcml0ZXJpYS5zZWFyY2hTdHJpbmdzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHNlYXJjaFN0cmlu
Z3MpOwogCiAgICAgaWYgKFtzdGFydCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7
CiAgICAgICAgIGlmIChbc3RhcnQgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlYXJj
aFRleHRTdGFydEZyb21CZWdpbl0pCkBAIC0xMDE5LDkgKzEwMDcsOSBAQCBzdGF0aWMgdm9pZCBB
WEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJT
dHJpbmcsIFJlbgogICAgIC8vIHNldCBzdXBlci9zdWIgc2NyaXB0aW5nCiAgICAgVmVydGljYWxB
bGlnbiBhbGlnbm1lbnQgPSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CiAgICAgaWYgKGFsaWdubWVu
dCA9PSBWZXJ0aWNhbEFsaWduOjpTdWIpCi0gICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVt
YmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwg
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KC0xKV0sIHJhbmdlKTsKKyAgICAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRU
ZXh0QXR0cmlidXRlLCBAKC0xKSwgcmFuZ2UpOwogICAgIGVsc2UgaWYgKGFsaWdubWVudCA9PSBW
ZXJ0aWNhbEFsaWduOjpTdXBlcikKLSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIo
YXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlLCBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDoxXSwgcmFuZ2UpOworICAgICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRy
aWJ1dGUsIEAoMSksIHJhbmdlKTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92
ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUgcmFuZ2U6
cmFuZ2VdOwogICAgIApAQCAtMTA3NCw3ICsxMDYyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clMKICAgICBpbnQgcXVvdGVMZXZlbCA9IG9iai0+YmxvY2txdW90ZUxldmVsKCk7CiAgICAgCiAg
ICAgaWYgKHF1b3RlTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0Fj
Y2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgdmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAgICAgICBbYXR0clN0cmluZyBh
ZGRBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlIHZhbHVl
OkAocXVvdGVMZXZlbCkgcmFuZ2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0
ZSByYW5nZTpyYW5nZV07CiB9CkBAIC0xMTUzLDcgKzExNDEsNyBAQCBzdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaQogICAgIH0KICAgICAKICAgICBpZiAocGFyZW50SGVhZGluZ0xldmVsKQotICAgICAg
ICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgdmFsdWU6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6cGFyZW50SGVhZGluZ0xldmVsXSByYW5nZTpyYW5nZV07CisgICAg
ICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpAIkFYSGVhZGluZ0xldmVsIiB2YWx1ZTpAKHBh
cmVudEhlYWRpbmdMZXZlbCkgcmFuZ2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJT
dHJpbmcgcmVtb3ZlQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHJhbmdlOnJhbmdlXTsKIH0K
QEAgLTEzMTIsMTcgKzEzMDAsMTcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQgU2Nyb2xs
VG9WaXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZlcnNpb25z
IGRvIG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMgdGhlbSB0
byBzZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50
QWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0
eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rpb24sIG5p
bF07CisgICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0aW9ucyA9IFtAW05TQWNj
ZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVB
Y3Rpb25dIHJldGFpbl07CiAKICAgICAvLyBBY3Rpb24gZWxlbWVudHMgYWxsb3cgUHJlc3MuCiAg
ICAgLy8gVGhlIG9yZGVyIGlzIGltcG9ydGFudCB0byBWb2ljZU92ZXIsIHdoaWNoIGV4cGVjdHMg
dGhlICdkZWZhdWx0JyBhY3Rpb24gdG8gYmUgdGhlIGZpcnN0IGFjdGlvbi4gSW4gdGhpcyBjYXNl
IHRoZSBkZWZhdWx0IGFjdGlvbiBzaG91bGQgYmUgcHJlc3MuCi0gICAgc3RhdGljIE5TQXJyYXkg
KmFjdGlvbkVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9u
LCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rpb24sIG5pbF07CisgICAgc3RhdGlj
IE5TQXJyYXkgKmFjdGlvbkVsZW1lbnRBY3Rpb25zID0gW0BbTlNBY2Nlc3NpYmlsaXR5UHJlc3NB
Y3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3Jv
bGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CiAKICAgICAvLyBNZW51IGVsZW1lbnRzIGFsbG93
IFByZXNzIGFuZCBDYW5jZWwuCiAgICAgc3RhdGljIE5TQXJyYXkgKm1lbnVFbGVtZW50QWN0aW9u
cyA9IFtbYWN0aW9uRWxlbWVudEFjdGlvbnMgYXJyYXlCeUFkZGluZ09iamVjdDpOU0FjY2Vzc2li
aWxpdHlDYW5jZWxBY3Rpb25dIHJldGFpbl07CiAKICAgICAvLyBTbGlkZXIgZWxlbWVudHMgYWxs
b3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNBcnJheSAqc2xpZGVyQWN0aW9u
cyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5
OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9u
LCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb24sIG5pbF1dIHJldGFpbl07CisgICAgc3Rh
dGljIE5TQXJyYXkgKnNsaWRlckFjdGlvbnMgPSBbW2RlZmF1bHRFbGVtZW50QWN0aW9ucyBhcnJh
eUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpAW05TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlv
biwgTlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uXV0gcmV0YWluXTsKIAogICAgIE5TQXJy
YXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzUHJlc3NBY3Rpb24o
KSkKQEAgLTE4ODgsMTQgKzE4NzYsNiBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNB
cnJheSogYXJyYXksIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogICAgIH0K
IH0KIAotc3RhdGljIE5TTXV0YWJsZUFycmF5ICpjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmVjdG9yKQotewotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHN0cmluZyA6IHZlY3RvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpzdHJpbmddOwotICAgIHJldHVybiBhcnJheTsKLX0KLQogLSAoaWQpdGV4dE1hcmtlclJhbmdl
Rm9yU2VsZWN0aW9uCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBzZWxmLmF4
QmFja2luZ09iamVjdC0+c2VsZWN0aW9uKCk7CkBAIC0yNDAyLDkgKzIzODIsOSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpAIkFYTG9hZGVkIl0pCiAgICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3QtPmlzTG9hZGVkKCldOwogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMYXlvdXRDb3VudCJdKQotICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPmxh
eW91dENvdW50KCldOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+bGF5b3V0
Q291bnQoKSk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5TG9hZGluZ1Byb2dyZXNzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpiYWNraW5nT2JqZWN0LT5lc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5lc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRj
aEF0dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OmJhY2tpbmdPYmplY3QtPnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKV07CiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2Fy
ZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQpAQCAtMjQxOCw3ICsyMzk4LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0g
YmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpOwogICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDAp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Omxlbmd0aF07CisgICAgICAgICAgICByZXR1cm4gQChs
ZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0pIHsKICAgICAgICAg
ICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHQoKTsK
QEAgLTI0NDcsNyArMjQyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQogICAgICAgICAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsaW5l
TnVtYmVyXTsKKyAgICAgICAgICAgIHJldHVybiBAKGxpbmVOdW1iZXIpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0yNTA2LDE2ICsyNDg2LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6YmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCktPnZhbHVlRm9y
UmFuZ2UoKV07CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0hlYWRpbmcoKSkKLSAgICAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5oZWFk
aW5nTGV2ZWwoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5oZWFkaW5n
TGV2ZWwoKSk7CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQ2hlY2tib3hPclJhZGlv
KCkgfHwgYmFja2luZ09iamVjdC0+aXNNZW51SXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzU3dp
dGNoKCkgfHwgYmFja2luZ09iamVjdC0+aXNUb2dnbGVCdXR0b24oKSkgewogICAgICAgICAgICAg
c3dpdGNoIChiYWNraW5nT2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpKSB7CiAgICAgICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOgotICAgICAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gQCgwKTsKICAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjoK
LSAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEAoMSk7CiAgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlC
dXR0b25TdGF0ZTo6TWl4ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OjJdOworICAgICAgICAgICAgICAgIHJldHVybiBAKDIpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKQEAgLTI1MzUsNyArMjUxNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3Qt
PmlzVGFiSXRlbSgpKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50
OmJhY2tpbmdPYmplY3QtPmlzU2VsZWN0ZWQoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNr
aW5nT2JqZWN0LT5pc1NlbGVjdGVkKCkpOwogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c0NvbG9yV2VsbCgpKSB7CiAgICAgICAgICAgICBpbnQgciwgZywgYjsKQEAgLTI2OTEsNyArMjY3
MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzVGFibGVDb2x1bW4oKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXSkKLSAgICAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmJhY2tpbmdPYmpl
Y3QtPmNvbHVtbkluZGV4KCldOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+
Y29sdW1uSW5kZXgoKSk7CiAKICAgICAgICAgLy8gcm93cyBhdHRyaWJ1dGUgZm9yIGEgY29sdW1u
IGlzIHRoZSBsaXN0IG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhhdCBjb2x1bW4gYXQgZWFjaCBy
b3cKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXQpAQCAtMjc0Miw3ICsyNzIyLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBw
b3J0IGNvbHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBj
b2x1bW5zIGF0IHRoZSBsZWFzdC4KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgICAgICByZXR1cm4gQFtdOwogICAgIH0KIAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5k
ZXhBdHRyaWJ1dGVdKSB7CkBAIC0yNzYwLDEzICsyNzQwLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gcm93c0NvcHku
c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBjb3VudDsgKytrKQog
ICAgICAgICAgICAgICAgIGlmIChyb3dzQ29weVtrXS0+d3JhcHBlcigpID09IHNlbGYpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Omtd
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQChrKTsKIAogICAgICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlUm93
KCkpCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09i
amVjdC0+cm93SW5kZXgoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5y
b3dJbmRleCgpKTsKICAgICB9CiAKICAgICAvLyBUaGUgcm93cyB0aGF0IGFyZSBjb25zaWRlcmVk
IGluc2lkZSB0aGlzIHJvdy4KQEAgLTI4MDEsNyArMjc4MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpbnQgbGV2ZWwgPSBiYWNraW5nT2JqZWN0LT5o
aWVyYXJjaGljYWxMZXZlbCgpOwogICAgICAgICBpZiAobGV2ZWwgPiAwKQogICAgICAgICAgICAg
bGV2ZWwgLT0gMTsKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxldmVs
XTsKKyAgICAgICAgcmV0dXJuIEAobGV2ZWwpOwogICAgIH0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdKQog
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3QtPmlz
RXhwYW5kZWQoKV07CkBAIC0yODMyLDkgKzI4MTIsOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZV0pCi0gICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmJhY2tpbmdPYmplY3QtPmJs
b2NrcXVvdGVMZXZlbCgpXTsKKyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YmxvY2tx
dW90ZUxldmVsKCkpOwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WFRhYmxlTGV2ZWwiXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJh
Y2tpbmdPYmplY3QtPnRhYmxlTGV2ZWwoKV07CisgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmpl
Y3QtPnRhYmxlTGV2ZWwoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXSkgewogICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua2Vk
VUlFbGVtZW50czsKQEAgLTI4NTEsNyArMjgzMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXSAmJiBiYWNr
aW5nT2JqZWN0LT5pc01lbnVCdXR0b24oKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiB1aUVsZW1lbnQgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0PigqYmFja2lu
Z09iamVjdCkubWVudUZvck1lbnVCdXR0b24oKTsKICAgICAgICAgaWYgKHVpRWxlbWVudCkKLSAg
ICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dWlFbGVtZW50LT53cmFw
cGVyKCldOworICAgICAgICAgICAgcmV0dXJuIEBbdWlFbGVtZW50LT53cmFwcGVyKCldOwogICAg
IH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdKSB7CkBAIC0yOTIxLDE3ICsyOTAxLDE1IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0
cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdP
YmplY3QtPnBvc0luU2V0KCldOworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wb3NJ
blNldCgpKTsKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUFSSUFTZXRTaXplQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPnNldFNpemUoKV07CisgICAgICAgIHJldHVybiBA
KGJhY2tpbmdPYmplY3QtPnNldFNpemUoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQogICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3QtPmlzQVJJQUdyYWJi
ZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlXSkgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBk
cm9wRWZmZWN0cyA9IGJhY2tpbmdPYmplY3QtPmRldGVybWluZUFSSUFEcm9wRWZmZWN0cygpOwot
ICAgICAgICByZXR1cm4gY29udmVydFN0cmluZ3NUb05TQXJyYXkoZHJvcEVmZmVjdHMpOwotICAg
IH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eURyb3BFZmZlY3RzQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoYmFj
a2luZ09iamVjdC0+ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkpLmF1dG9yZWxlYXNlKCk7CiAK
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBs
YWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+
cGxhY2Vob2xkZXJWYWx1ZSgpOwpAQCAtMzAxNiw3ICsyOTk0LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlET01DbGFzc0xpc3RBdHRyaWJ1dGVdKSB7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGNsYXNzTGlzdDsKICAgICAgICAgYmFja2luZ09iamVjdC0+Y2xhc3NMaXN0
KGNsYXNzTGlzdCk7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShjbGFz
c0xpc3QpOworICAgICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShjbGFzc0xpc3QpLmF1dG9yZWxl
YXNlKCk7CiAgICAgfQogCiAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gY29ubmVjdCB0byBhIHBs
dWdpbiB0aGF0IGNyZWF0ZXMgYSBzaGFkb3cgbm9kZSBmb3IgZWRpdGluZyAobGlrZSBQREZzKS4K
QEAgLTQxMDEsNyArNDA3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbcHJvdGVjdGVkU2Vs
ZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICAgICAg
cmV0dXJuIGJhY2tpbmdPYmplY3QtPmxpbmVGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsKICAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpyZXN1bHRdOwor
ICAgICAgICByZXR1cm4gQChyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yTGluZSJdKSB7CkBAIC00MzI5LDcg
KzQzMDcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
fSk7CiAgICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Omxlbmd0aF07CisgICAgICAgIHJl
dHVybiBAKGxlbmd0aCk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJU
cmVlIChzbyBmYXIpLgpAQCAtNDM3OSw3ICs0MzU3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IGJhY2tpbmdPYmpl
Y3QtPmRvQVhMaW5lRm9ySW5kZXgoW251bWJlciBpbnRWYWx1ZV0pOwogICAgICAgICAgICAgaWYg
KGxpbmVOdW1iZXIgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpsaW5lTnVtYmVyXTsKKyAg
ICAgICAgICAgIHJldHVybiBAKGxpbmVOdW1iZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcgKilrQVhSYW5nZUZvckxpbmVQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGRlM2E0M2RlZjBiOTc4YzA3ODEzZDgwMDQ3MmU5Zjk5
YWVmNzg0Y2UuLmU5MDYyMjFjYTk4YzNkYWZjNzMzMzBlNTgyYTRkMWY2NmRiZjg4YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTU4Niw3
ICs1ODYsNyBAQCArIChpZClfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6KEpTQzo6SlNWYWx1ZSl2
YWx1ZSBvcmlnaW5Sb290T2JqZWN0OihSb290T2JqZWN0KgogICAgICAgICByZXR1cm4gYXNTdHJp
bmcodmFsdWUpLT52YWx1ZShyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICBpZiAo
dmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOnZhbHVlLmFzTnVtYmVyKCldOworICAgICAgICByZXR1cm4gQCh2YWx1ZS5hc051bWJlcigp
KTsKIAogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDp2YWx1ZS5hc0Jvb2xlYW4oKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1t
CmluZGV4IDUwNzJkNmIzMmFjNzVkNzFjYjhmYmU1MzhjZTg3ZTE1NjM5NzI2YTMuLmU1OGVhZWRl
YzAwN2U0Yjk5YzY4MjcxNDcyNWRlMWEyNWQ1MDk3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1t
CkBAIC0yOCw3ICsyOCw4IEBACiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKIAot
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9y
dCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CkBAIC00NywxMiArNDgsNyBAQCB1aW50NjRfdCBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5Q
dHI8TlNUZXh0QWx0ZQogCiBWZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKIHsKLSAgICBOU1Rl
eHRBbHRlcm5hdGl2ZXMgKnRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFs
dGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWx0ZXJu
YXRpdmVTdHJpbmdzOwotICAgIGFsdGVybmF0aXZlU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzLmNvdW50KTsKLSAgICBmb3Ig
KE5TU3RyaW5nICpzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3Mp
Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoc3RyaW5nKTsKLSAg
ICByZXR1cm4gYWx0ZXJuYXRpdmVTdHJpbmdzOworICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmlu
Zz4obV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpLmFs
dGVybmF0aXZlU3RyaW5ncyk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
OjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KaW5kZXggYTU0M2FjMmQxYWUyYWMzOGY4Y2QyN2ZiMjU3ZmUyZDE2MjQwZGNlZi4uNGY0NjM1
MjgwZDY0NTgxNDM5YWY3Y2I1MmFlNjE1YzhlMTMzZjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRp
YyBOU1BhcmFncmFwaFN0eWxlICpkZWZhdWx0UGFyYWdyYXBoU3R5bGUoKQogICAgIGlmICghZGVm
YXVsdFBhcmFncmFwaFN0eWxlKSB7CiAgICAgICAgIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZSA9IFtb
UGxhdGZvcm1OU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNv
cHldOwogICAgICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldERlZmF1bHRUYWJJbnRlcnZh
bDozNl07Ci0gICAgICAgIFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUgc2V0VGFiU3RvcHM6W05TQXJy
YXkgYXJyYXldXTsKKyAgICAgICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXRUYWJTdG9wczpA
W11dOwogICAgIH0KICAgICByZXR1cm4gZGVmYXVsdFBhcmFncmFwaFN0eWxlOwogfQpAQCAtMTAy
Nyw3ICsxMDI3LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJp
YnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgZmxvYXQgc3Ryb2tlV2lkdGgg
PSAwLjA7CiAgICAgaWYgKF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVu
dCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoKSkgewogICAg
ICAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aCAvIChbZm9udCBwb2ludFNp
emVdICogMC4wMSk7Ci0gICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6dGV4dFN0cm9rZVdpZHRoXSBmb3JLZXk6TlNTdHJva2VXaWR0aEF0dHJpYnV0ZU5h
bWVdOworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAodGV4dFN0cm9rZVdpZHRoKSBmb3JLZXk6
TlNTdHJva2VXaWR0aEF0dHJpYnV0ZU5hbWVdOwogICAgIH0KICAgICBpZiAoc3Ryb2tlQ29sb3Ip
CiAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6c3Ryb2tlQ29sb3IgZm9yS2V5Ok5TU3Ryb2tlQ29s
b3JBdHRyaWJ1dGVOYW1lXTsKQEAgLTEwNDIsNyArMTA0Miw3IEBAIE5TRGljdGlvbmFyeSAqSFRN
TENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KQogICAgICAgICAgICAgaWYgKFVJRmxvYXRJc1plcm8oa2VyblZhbCkpCiAgICAgICAgICAgICAg
ICAgW2F0dHJzIHNldE9iamVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRyaWJ1dGVOYW1lXTsgLy8g
YXV0byBhbmQgbm9ybWFsLCB0aGUgb3RoZXIgcG9zc2libGUgdmFsdWVzLCBhcmUgYm90aCAia2Vy
bmluZyBlbmFibGVkIgogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFthdHRycyBz
ZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6a2VyblZhbF0gZm9yS2V5Ok5TS2Vy
bkF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6QChrZXJu
VmFsKSBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEwNzQsNyArMTA3NCw3IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRB
dHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiAgICAgZmxvYXQgYmFzZWxp
bmVPZmZzZXQgPSAwLjA7CiAgICAgaWYgKF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5v
ZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBiYXNlbGluZU9mZnNldCkpCi0g
ICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YmFzZWxp
bmVPZmZzZXRdIGZvcktleTpOU0Jhc2VsaW5lT2Zmc2V0QXR0cmlidXRlTmFtZV07CisgICAgICAg
IFthdHRycyBzZXRPYmplY3Q6QChiYXNlbGluZU9mZnNldCkgZm9yS2V5Ok5TQmFzZWxpbmVPZmZz
ZXRBdHRyaWJ1dGVOYW1lXTsKIAogICAgIFN0cmluZyB0ZXh0U2hhZG93ID0gX2NhY2hlcy0+cHJv
cGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlUZXh0U2hhZG93KTsKICAgICBp
ZiAodGV4dFNoYWRvdy5sZW5ndGgoKSA+IDQpIHsKQEAgLTE1NTYsNyArMTU1Niw3IEBAIHZvaWQg
SFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NNZXRhRWxlbWVudFdpdGhOYW1lKE5TU3RyaW5nICpuYW1l
LCBOU1N0cmluZyAqY29udGVuCiAgICAgICAgIGlmICh2ZXJzaW9uTnVtYmVyID4gMC4wKSB7CiAg
ICAgICAgICAgICAvLyA/Pz8gdGhpcyBzaG91bGQgYmUga2V5ZWQgb2ZmIG9mIHZlcnNpb24gbnVt
YmVyIGluIGZ1dHVyZQogICAgICAgICAgICAgW19kb2N1bWVudEF0dHJzIHJlbW92ZU9iamVjdEZv
cktleTpOU0NvbnZlcnRlZERvY3VtZW50QXR0cmlidXRlXTsKLSAgICAgICAgICAgIFtfZG9jdW1l
bnRBdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmVyc2lvbk51bWJl
cl0gZm9yS2V5Ok5TQ29jb2FWZXJzaW9uRG9jdW1lbnRBdHRyaWJ1dGVdOworICAgICAgICAgICAg
W19kb2N1bWVudEF0dHJzIHNldE9iamVjdDpAKHZlcnNpb25OdW1iZXIpIGZvcktleTpOU0NvY29h
VmVyc2lvbkRvY3VtZW50QXR0cmlidXRlXTsKICAgICAgICAgfQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgfSBlbHNlIGlmIChOU09yZGVyZWRTYW1lID09IFtAIkdlbmVyYXRvciIgY29t
cGFyZTpuYW1lIG9wdGlvbnM6TlNDYXNlSW5zZW5zaXRpdmVTZWFyY2hdKSB7CkBAIC0xNjcyLDgg
KzE2NzIsOCBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9hZGRUYWJsZUZvckVsZW1lbnQoRWxlbWVu
dCAqdGFibGVFbGVtZW50KQogICAgIH0KICAgICAKICAgICBbX3RleHRUYWJsZXMgYWRkT2JqZWN0
OnRhYmxlLmdldCgpXTsKLSAgICBbX3RleHRUYWJsZVNwYWNpbmdzIGFkZE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTpjZWxsU3BhY2luZ1ZhbF1dOwotICAgIFtfdGV4dFRhYmxlUGFk
ZGluZ3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmNlbGxQYWRkaW5nVmFs
XV07CisgICAgW190ZXh0VGFibGVTcGFjaW5ncyBhZGRPYmplY3Q6QChjZWxsU3BhY2luZ1ZhbCld
OworICAgIFtfdGV4dFRhYmxlUGFkZGluZ3MgYWRkT2JqZWN0OkAoY2VsbFBhZGRpbmdWYWwpXTsK
ICAgICBbX3RleHRUYWJsZVJvd3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdl
cjowXV07CiAgICAgW190ZXh0VGFibGVSb3dBcnJheXMgYWRkT2JqZWN0OltOU011dGFibGVBcnJh
eSBhcnJheV1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCAwYWZlY2Fm
ZDE5ZGUwMTRlNzIzZWU1ZGM1ZTRlMjJkNjg3OTFkMTY3Li40ZjcwZGE2ZjlhZjIzYTdkOGQ0Yzg0
ZDc3NWU1OWUwMWZlMTVlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAt
NzMwLDcgKzczMCw3IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50
Um9vdCgpIGNvbnN0CiAKICAgICAvLyBUaGVyZSBhcmUgbm8gcGhyYXNlcyB3aXRoIGFsdGVybmF0
aXZlcywgc28gdGhlcmUgaXMganVzdCBvbmUgaW50ZXJwcmV0YXRpb24uCiAgICAgaWYgKG1hcmtl
cnNJblJvb3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OnBsYWluVGV4dChyYW5nZU9mUm9vdENvbnRlbnRzKV07CisgICAgICAgIHJldHVybiBAW3Bs
YWluVGV4dChyYW5nZU9mUm9vdENvbnRlbnRzKV07CiAKICAgICAvLyBUaGUgbnVtYmVyIG9mIGlu
dGVycHJldGF0aW9ucyB3aWxsIGJlIGkxICogaTIgKiAuLi4gKiBpTiwgd2hlcmUgaVggaXMgdGhl
IG51bWJlciBvZiBpbnRlcnByZXRhdGlvbnMgZm9yIHRoZSBYdGggcGhyYXNlIHdpdGggYWx0ZXJu
YXRpdmVzLgogICAgIHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3VudCA9IDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
aW5kZXggYTg3Y2Y1YzRlOGY4NTZkZjdjNzkwMDExNDNmM2M3NDRjN2ZmODA2YS4uMmIzZmUwNTU4
NGY5NjRlMDk5NzY4NDZhYTEyOTgwNzZlYTRiZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwxMCArMjQsMTEgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogCi0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVUeXBlTWFwcGlu
Z3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJ
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOCwxNiArMzksNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIFZlY3RvcjxTdHJp
bmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7Ci0gICAgTlNBcnJheSAqc3RyaW5nc0FycmF5ID0gW1tOU1VSTEZpbGVUeXBl
TWFwcGluZ3Mgc2hhcmVkTWFwcGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTooTlNTdHJpbmcg
Kil0eXBlXTsKLSAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdzVmVjdG9yID0gVmVjdG9yPFN0cmlu
Zz4oKTsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFtzdHJpbmdzQXJyYXkgY291bnRdOwotICAgIGlm
IChjb3VudCA+IDApIHsKLSAgICAgICAgTlNFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gW3N0cmlu
Z3NBcnJheSBvYmplY3RFbnVtZXJhdG9yXTsKLSAgICAgICAgTlNTdHJpbmcqIHN0cmluZzsKLSAg
ICAgICAgd2hpbGUgKChzdHJpbmcgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKQot
ICAgICAgICAgICAgc3RyaW5nc1ZlY3Rvci5hcHBlbmQoc3RyaW5nKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHN0cmluZ3NWZWN0b3I7CisgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihbW05TVVJM
RmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlOnR5
cGVdKTsKIH0KIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKaW5kZXggMzMxNzBlYmM0NTZiZTg0NmIzMTdhYzEzNGMz
MTUwNDVkNzY1ZTNmYy4uMWI2ZDQ5M2U5MjZiZmVhYWE5MjllMjY0MjhiY2QwN2FiYTI5ZThjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKQEAgLTI3
OSw1ICsyNzksOCBAQCBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHJvdW5kZWRJbnRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpOwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKLX0KKyNpZmRlZiBfX09C
SkNfXworV0VCQ09SRV9FWFBPUlQgaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IEZsb2F0UmVj
dCYpOworI2VuZGlmCiAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJl
Y3QuaAppbmRleCAxMjJkZDUwNTNiMDIxYjVlMWUzOWMwMDgzZGUxZTI0MGI1OThkNWU0Li4wM2M1
YWFmNDhiMGZjMzgyYzFkOTBhMGRhYjI5NmRjYmYwMWQxY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCkBAIC0yNTAsNSArMjUwLDggQEAgV0VCQ09SRV9F
WFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5TUmVjdCYpOwogCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgSW50UmVjdCYpOwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjaWZkZWYgX19PQkpDX18K
K1dFQkNPUkVfRVhQT1JUIGlkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBJbnRSZWN0Jik7Cisj
ZW5kaWYKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCmluZGV4IDgzYjY0MjE3MmUxOWU2N2JlOWVhYmQ5
YTZmOTlhYmMzNDkwNDhmMjAuLjhmODQ3YjgyNzMzMDg2ZTgyYjJmNGVmMDU1YzMwYTI1MmNmZThl
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMu
bW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0u
aD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0xhbmd1YWdlLmg+Cisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKQEAgLTEz
MiwxMCArMTMzLDggQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAgICBpZiAoIW1fc2hvdWxk
U2VsZWN0T3B0aW9uQXV0b21hdGljYWxseSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBuc0xhbmd1YWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkuc2l6ZSgp
XSk7Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkK
LSAgICAgICAgW25zTGFuZ3VhZ2VzIGFkZE9iamVjdDooTlNTdHJpbmcqKWxhbmd1YWdlXTsKLSAg
ICBOU0FycmF5KiBmaWx0ZXJlZE9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3Jv
dXBDbGFzcygpIG1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVjdGlv
bkdyb3VwIG9wdGlvbnNdIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5n
dWFnZXM6bnNMYW5ndWFnZXMuZ2V0KCldOworICAgIE5TQXJyYXkqIGZpbHRlcmVkT3B0aW9ucyA9
IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRp
b25zRnJvbUFycmF5OlttX21lZGlhU2VsZWN0aW9uR3JvdXAgb3B0aW9uc10KKyAgICAgICAgZmls
dGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpjcmVhdGVOU0FycmF5
KHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkuZ2V0KCldOwogCiAgICAgaWYgKCFbZmlsdGVyZWRP
cHRpb25zIGNvdW50XSAmJiBjaGFyYWN0ZXJpc3RpY3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNDQsMTEgKzE0Myw3IEBAIHZvaWQgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6
OnVwZGF0ZU9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzCiAgICAgaWYg
KCFbZmlsdGVyZWRPcHRpb25zIGNvdW50XSkKICAgICAgICAgZmlsdGVyZWRPcHRpb25zID0gW21f
bWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXTsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gbnNDaGFyYWN0ZXJpc3RpY3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6Y2hhcmFjdGVyaXN0aWNzLnNpemUoKV0pOwotICAgIGZvciAoYXV0
byYgY2hhcmFjdGVyaXN0aWMgOiBjaGFyYWN0ZXJpc3RpY3MpCi0gICAgICAgIFtuc0NoYXJhY3Rl
cmlzdGljcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopY2hhcmFjdGVyaXN0aWNdOwotCi0gICAgTlNB
cnJheSogb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0
aW9uR3JvdXBDbGFzcygpIG1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpmaWx0ZXJlZE9w
dGlvbnMgd2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWNzOm5zQ2hhcmFjdGVyaXN0aWNzLmdldCgpXTsK
KyAgICBOU0FycmF5KiBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyA9IFtQQUw6OmdldEFWTWVk
aWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZp
bHRlcmVkT3B0aW9ucyB3aXRoTWVkaWFDaGFyYWN0ZXJpc3RpY3M6Y3JlYXRlTlNBcnJheShjaGFy
YWN0ZXJpc3RpY3MpLmdldCgpXTsKICAgICBpZiAob3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3Mg
JiYgW29wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzIGNvdW50XSkKICAgICAgICAgZmlsdGVyZWRP
cHRpb25zID0gb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGUxMjJiYmRhZjFhNGVhZDEzMDgyY2U2NDMwMWU0MTVlNmRlN2IzYjQuLjU2MTZl
YjgyMjA5MTUzNzBmNWI0M2IyODI2YzBmZmQ3N2FmODBjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtNjk3LDcgKzY5Nyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUo
QVZGX0NBUFRJT05TKQotc3RhdGljIGNvbnN0IE5TQXJyYXkqIG1lZGlhRGVzY3JpcHRpb25Gb3JL
aW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCkKKworc3RhdGljIGNvbnN0IE5T
QXJyYXkgKm1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja0tp
bmQga2luZCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYW51YWxTZWxlY3Rpb25Nb2RlID0gTVRFbmFi
bGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyKCkgJiYgTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9y
UHRyKCkoKTsKICAgICBpZiAobWFudWFsU2VsZWN0aW9uTW9kZSkKQEAgLTcwNSwxOCArNzA2LDE4
IEBAIHN0YXRpYyBjb25zdCBOU0FycmF5KiBtZWRpYURlc2NyaXB0aW9uRm9yS2luZChQbGF0Zm9y
bVRleHRUcmFjazo6VHJhY2tLaW5kIGtpbmQpCiAKICAgICAvLyBGSVhNRTogTWF0Y2ggdGhlc2Ug
dG8gY29ycmVjdCB0eXBlczoKICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6Q2Fw
dGlvbikKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFD
aGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgbmls
XTsKKyAgICAgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBdOwogCiAgICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1U
ZXh0VHJhY2s6OlN1YnRpdGxlKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nl
c3NpYmlsaXR5LCBuaWxdOworICAgICAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGlj
VHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiAKICAgICBpZiAoa2lu
ZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6RGVzY3JpcHRpb24pCi0gICAgICAgIHJldHVybiBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nw
b2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJl
c011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOworICAgICAgICByZXR1cm4gQFsg
QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmls
aXR5LCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNz
aWJpbGl0eSBdOwogCiAgICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkZvcmNlZCkK
LSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgbmlsXTsKKyAgICAgICAgcmV0dXJu
IEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyBdOwog
Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKKyAgICBy
ZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JB
Y2Nlc3NpYmlsaXR5IF07CiB9CiAgICAgCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKQpAQCAtNzU0LDggKzc1NSw4IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25pemVUZXh0VHJh
Y2tTdGF0ZSgpCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5kaWYKIAorI2VuZGlmCiAKIHN0YXRp
YyBOU1VSTCAqY2Fub25pY2FsVVJMKGNvbnN0IFVSTCYgdXJsKQogewpAQCAtNzg1LDcgKzc4Niw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3Nl
dEZvclVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiBvcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsgICAgCiAKLSAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9M
b2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9S
ZW1vdGVdIGZvcktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKKyAgICBb
b3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6QChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3Ji
aWRSZW1vdGVSZWZlcmVuY2VUb0xvY2FsIHwgQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9y
YmlkTG9jYWxSZWZlcmVuY2VUb1JlbW90ZSkgZm9yS2V5OkFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0
cmljdGlvbnNLZXldOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGhlYWRl
ckZpZWxkcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAK
QEAgLTk4OSw3ICs5OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNyZWF0ZUFWUGxheWVySXRlbSgpCiAKICAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBhdlBs
YXllck91dHB1dEFkdmFuY2VJbnRlcnZhbCA9IDI7CiAKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4g
c3VidHlwZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOltOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6a0NNU3VidGl0bGVGb3JtYXRUeXBlX1dlYlZUVF0s
IG5pbF0pOworICAgIFJldGFpblB0cjxOU0FycmF5PiBzdWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QChrQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2ViVlRU
KSwgbmlsXSk7CiAgICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5h
dGl2ZVJlcHJlc2VudGF0aW9uOnN1YnR5cGVzLmdldCgpXSk7CiAgICAgW21fbGVnaWJsZU91dHB1
dC5nZXQoKSBzZXRTdXBwcmVzc2VzUGxheWVyUmVuZGVyaW5nOllFU107CiAKQEAgLTEwMjgsNyAr
MTAyOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tQ
bGF5YWJpbGl0eSgpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgYXV0byB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKIAotICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9hZFZh
bHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAicGxh
eWFibGUiLCBAInRyYWNrcyIsIG5pbF0gY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICBbbV9hdkFz
c2V0LmdldCgpIGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInBsYXlhYmxlIiwg
QCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb246OkFzc2V0UGxheWFiaWxpdHlLbm93bik7CkBA
IC0yMTcxLDcgKzIxNzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNyZWF0ZVZpZGVvT3V0cHV0KCkKICNpZiBVU0UoVklERU9UT09MQk9YKQogICAgIE5TRGlj
dGlvbmFyeSogYXR0cmlidXRlcyA9IG5pbDsKICNlbHNlCi0gICAgTlNEaWN0aW9uYXJ5KiBhdHRy
aWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6a0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQV0sIGtD
VlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdOworICAgIE5TRGljdGlvbmFyeSog
YXR0cmlidXRlcyA9IEB7IGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBp
eGVsRm9ybWF0VHlwZV8zMkJHUkEpIH07CiAjZW5kaWYKICAgICBtX3ZpZGVvT3V0cHV0ID0gYWRv
cHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0
aFBpeGVsQnVmZmVyQXR0cmlidXRlczphdHRyaWJ1dGVzXSk7CiAgICAgQVNTRVJUKG1fdmlkZW9P
dXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCmluZGV4IGQ5
N2NjYjNiZGFiYWU1MzM1N2Q1MjgxOWM3ODgyMTcxOWYxNWViN2YuLjQ4MTZiMDA0ZjE0ODE4MGZi
OTAxNTc5MTljZWJlN2I1ZWRkZjU1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2EubW0KQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXS0V4cGxpY2l0QmVnaW5UaW1lRmxhZyA9IEAiV0tQbGF0
Zm9ybUNBQW5pbWF0aW9uRXhwbGljaXRCZWdpblRpbWVGbGFnIjsKK2NvbnN0ZXhwciBOU1N0cmlu
ZyAqIGNvbnN0IFdLRXhwbGljaXRCZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRp
b25FeHBsaWNpdEJlZ2luVGltZUZsYWciOwogCiBib29sIGhhc0V4cGxpY2l0QmVnaW5UaW1lKENB
QW5pbWF0aW9uICphbmltYXRpb24pCiB7CkBAIC0zNjIsOCArMzYyLDcgQEAgdm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OnNldEFkZGl0aXZlKGJvb2wgdmFsdWUpCiAKIFBsYXRmb3JtQ0FB
bmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6dmFs
dWVGdW5jdGlvbigpIGNvbnN0CiB7Ci0gICAgQ0FWYWx1ZUZ1bmN0aW9uKiB2ZiA9IFttX2FuaW1h
dGlvbiB2YWx1ZUZ1bmN0aW9uXTsKLSAgICByZXR1cm4gZnJvbUNBVmFsdWVGdW5jdGlvblR5cGUo
W3ZmIG5hbWVdKTsKKyAgICByZXR1cm4gZnJvbUNBVmFsdWVGdW5jdGlvblR5cGUoW1ttX2FuaW1h
dGlvbiB2YWx1ZUZ1bmN0aW9uXSBuYW1lXSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpzZXRWYWx1ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlKQpAQCAtMzc1
LDE0ICszNzQsMTMgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEZyb21WYWx1
ZShmbG9hdCB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24u
Z2V0KCkpIHNldEZyb21WYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZV1dOwor
ICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNl
dEZyb21WYWx1ZTpAKHZhbHVlKV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpzZXRGcm9tVmFsdWUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewogICAg
IGlmICghaXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KICAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6
W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQogCkBAIC0zOTAsMzIg
KzM4OCwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKGNv
bnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKLQotICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueCgp
XSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueSgpXSwKLSAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueigpXSwKLSAgICAgICAgbmlsXTsK
LSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRGcm9tVmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4o
bV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpAWyBAKHZhbHVlLngoKSksIEAodmFsdWUu
eSgpKSwgQCh2YWx1ZS56KCkpIF1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2Nv
YTo6c2V0RnJvbVZhbHVlKGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNB
bmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZS5yZWQoKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVl
LmdyZWVuKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ibHVl
KCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwK
LSAgICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5p
bWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJh
c2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpAW0AodmFsdWUu
cmVkKCkpLCBAKHZhbHVlLmdyZWVuKCkpLCBAKHZhbHVlLmJsdWUoKSksIEAodmFsdWUuYWxwaGEo
KSldXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEZyb21WYWx1ZShj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVy
dHlJbmRleCkKIHsKLSAgICBSZXRhaW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6
OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KTsKKyAgICBhdXRvIHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVl
Rm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKICAg
ICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRG
cm9tVmFsdWU6dmFsdWUuZ2V0KCldOwogfQogCkBAIC00MjMsOCArNDA4LDcgQEAgdm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24mIHZhbHUKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSB8fCAhdmFsdWUu
aXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBDQUJhc2ljQW5pbWF0
aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3du
Y2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7
CisgICAgYXV0byBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24q
Pihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5n
ZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5n
ZXQoKSkgc2V0RnJvbVZhbHVlOltvdGhlckFuaW1hdGlvbiBmcm9tVmFsdWVdXTsKIH0KIApAQCAt
NDMyLDE0ICs0MTYsMTMgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFs
dWUoZmxvYXQgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9u
LmdldCgpKSBzZXRUb1ZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlXV07Cisg
ICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0
VG9WYWx1ZTpAKHZhbHVlKV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpz
ZXRUb1ZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKICAgICBpZiAo
IWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgW3N0YXRpY19jYXN0
PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbTlNWYWx1
ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlXV07CiB9CiAKQEAgLTQ0NywzMiArNDMwLDE5
IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0
UG9pbnQzRCYgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKLQotICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueCgpXSwKLSAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueSgpXSwKLSAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueigpXSwKLSAgICAgICAgbmlsXTsKLSAgICBbc3Rh
dGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVl
OmFycmF5XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9u
LmdldCgpKSBzZXRUb1ZhbHVlOkBbIEAodmFsdWUueCgpKSwgQCh2YWx1ZS55KCkpLCBAKHZhbHVl
LnooKSkgXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVl
KGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5yZWQoKV0s
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmdyZWVuKCldLAotICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ibHVlKCldLAotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKLSAgICAgICAgbmlsXTsK
LSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRUb1ZhbHVlOmFycmF5XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOkBbQCh2YWx1ZS5yZWQoKSksIEAodmFsdWUuZ3Jl
ZW4oKSksIEAodmFsdWUuYmx1ZSgpKSwgQCh2YWx1ZS5hbHBoYSgpKV1dOwogfQogCiB2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IG9wZXJhdGlvbiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkKIHsKLSAgICBSZXRh
aW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0
aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKKyAgICBhdXRvIHZh
bHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlv
biwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNp
Y0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOnZhbHVlLmdldCgpXTsK
IH0KIApAQCAtNDgxLDcgKzQ1MSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpj
b3B5VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiAgICAgaWYg
KCFpc0Jhc2ljQW5pbWF0aW9uKCkgfHwgIXZhbHVlLmlzQmFzaWNBbmltYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ0FCYXNpY0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0
aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOworICAgIGF1dG8gb3RoZXJBbmltYXRpb24g
PSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxD
QUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W290aGVyQW5p
bWF0aW9uIHRvVmFsdWVdXTsKIH0KIApAQCAtNDkyLDkgKzQ2Miw5IEBAIHZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCiAg
ICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKQotICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldXV07CisgICAgYXV0
byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCld
OworICAgIGZvciAoYXV0byBudW1iZXIgOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpAKG51bWJlcildOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUwMywxMSArNDczLDkg
QEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8
VHJhbnNmb3JtYXRpb25NYXRyaXg+JiB2YWwKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtl
eWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZS5zaXplKCk7ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdp
dGhDQVRyYW5zZm9ybTNEOnZhbHVlW2ldXV07Ci0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBt
YXRyaXggOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdp
dGhDQVRyYW5zZm9ybTNEOm1hdHJpeF1dOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUx
NiwxNiArNDg0LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhj
b25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUo
KSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFy
cmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTlNBcnJheSogb2JqZWN0ID0gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOnZhbHVlW2ldLngoKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZVtpXS55KCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dmFsdWVbaV0ueigpXSwKLSAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIFthcnJheSBhZGRPYmpl
Y3Q6b2JqZWN0XTsKLSAgICB9CisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byYgcG9pbnQgOiB2YWx1
ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAW0AocG9pbnQueCgpKSwgQChwb2ludC55KCkp
LCBAKHBvaW50LnooKSldXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+
KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOwogfQogCkBAIC01MzQsMTcgKzQ5
NSw5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29uc3QgVmVj
dG9yPENvbG9yPiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgTlNBcnJheSogb2JqZWN0ID0gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLnJl
ZCgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLmdy
ZWVuKCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0u
Ymx1ZSgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ld
LmFscGhhKCldLAotICAgICAgICAgICAgbmlsXTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpv
YmplY3RdOwotICAgIH0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBjb2xvciA6IHZhbHVlKQor
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkBbQChjb2xvci5yZWQoKSksIEAoY29sb3IuZ3JlZW4o
KSksIEAoY29sb3IuYmx1ZSgpKSwgQChjb2xvci5hbHBoYSgpKV1dOwogICAgIFtzdGF0aWNfY2Fz
dDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJh
eV07CiB9CiAKQEAgLTU1MywxMiArNTA2LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JgogICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBSZXRh
aW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0
aW9uKHZhbHVlc1tpXS5nZXQoKSwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKLSAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDp2YWx1ZS5nZXQoKV07Ci0gICAgfQorICAgIGF1dG8gYXJyYXkg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWVzLnNpemUoKV07CisgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpQbGF0
Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24odmFsdWUuZ2V0KCksIGludGVy
bmFsRmlsdGVyUHJvcGVydHlJbmRleCkuZ2V0KCldOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZy
YW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAK
QEAgLTU2NywzOSArNTE3LDM1IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5
VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKICAgICBpZiAoYW5p
bWF0aW9uVHlwZSgpICE9IEtleWZyYW1lIHx8IHZhbHVlLmFuaW1hdGlvblR5cGUoKSAhPSBLZXlm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXJB
bmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxh
dGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOworICAgIGF1
dG8gb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkp
OwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0
KCkpIHNldFZhbHVlczpbb3RoZXJBbmltYXRpb24gdmFsdWVzXV07CiB9CiAKIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1
ZSkKIHsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKLSAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnZhbHVlW2ldXV07
Ci0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZh
bHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvIHRpbWUgOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAKHRpbWUpXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlv
bio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczphcnJheV07CiB9CiAKIHZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24mIHZhbHVlKQogewotICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIG90aGVyID0gc3Rh
dGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBhdXRvIG90aGVyID0gc3Rh
dGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FL
ZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczpbb3RoZXIg
a2V5VGltZXNdXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRpbWlu
Z0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYgdmFsdWUsIGJv
b2wgcmV2ZXJzZSkKIHsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsr
aSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbih2YWx1
ZVtpXSwgcmV2ZXJzZSldOwotCisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiB2
YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbihm
dW5jdGlvbiwgcmV2ZXJzZSldOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9u
Kj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRpbWluZ0Z1bmN0aW9uczphcnJheV07CiB9CiAKIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25z
dCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9u
KiBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0
byBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0
YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGlt
aW5nRnVuY3Rpb25zOltvdGhlciB0aW1pbmdGdW5jdGlvbnNdXTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KaW5kZXggZTFhZTVkOWI3NzEyMDQzMjA2ZmNlZmFkNDll
NGFiZjA1NjgwNzhlYi4uM2M0ZGNlMmFiM2IyZTA5MzU0YjhiNzQ0ZTkxM2MzMDZmNjA3NzZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUZpbHRlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCkBAIC0zMjQsNyArMzI0LDcg
QEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9w
ZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgaWYgKG9wZXJhdGlvbikKICAgICAg
ICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOworICAgICAgICB2YWx1ZSA9IEAoYW1vdW50KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTog
ewpAQCAtMzYzLDcgKzM2Myw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVy
czo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlm
IChvcGVyYXRpb24pCiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKKyAgICAgICAg
dmFsdWUgPSBAKGFtb3VudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewpAQCAtMzc0LDcgKzM3NCw3IEBAIFJldGFpblB0cjxO
U1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCiAgICAg
ICAgIGFtb3VudCA9IGRlZzJyYWQoYW1vdW50KTsKLSAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTphbW91bnRdOworICAgICAgICB2YWx1ZSA9IEAoYW1vdW50KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsK
QEAgLTQ1Miw3ICs0NTIsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6
OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAo
b3BlcmF0aW9uKQogICAgICAgICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7CiAgICAgICAgIAot
ICAgICAgICB2YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAg
ICAgIHZhbHVlID0gQChhbW91bnQpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQ2Myw3ICs0NjMsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZp
bHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAob3Bl
cmF0aW9uKQogICAgICAgICAgICAgYW1vdW50ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChkb3duY2Fz
dDxCbHVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5zdGREZXZpYXRpb24oKSwgMCk7CiAg
ICAgICAgIAotICAgICAgICB2YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3Vu
dF07CisgICAgICAgIHZhbHVlID0gQChhbW91bnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0Zsb2F0UmVjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNhOWRhZmY0MmJlZWI0NWNj
YzIxNzJkNTFiZmI0MWJjM2JlMDI2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vTlNHZW9tZXRyeS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lkIG1ha2VOU0FycmF5
RWxlbWVudChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIFtO
U1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdF07Cit9CisKKyNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQorCitGbG9h
dFJlY3Q6OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHIpIDogbV9sb2NhdGlvbihyLm9yaWdpbiks
IG1fc2l6ZShyLnNpemUpCit7Cit9CisKK0Zsb2F0UmVjdDo6b3BlcmF0b3IgTlNSZWN0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkp
OworfQorCisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZmI4Y2Q3YzMzM2Rk
NjlkNWU3Mzg1Njc4NzdhMWRlMGI2MDlhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKKyNpbmNsdWRlIDxG
b3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpZCBtYWtl
TlNBcnJheUVsZW1lbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gW05TVmFs
dWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisKK0ludFJlY3Q6
Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5TTWFrZVJlY3QoeCgpLCB5
KCksIHdpZHRoKCksIGhlaWdodCgpKTsKK30KKworSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNv
bnN0IE5TUmVjdCYgcmVjdCkKK3sKKyAgICBpbnQgbCA9IHN0YXRpY19jYXN0PGludD4oZmxvb3Jm
KHJlY3Qub3JpZ2luLngpKTsKKyAgICBpbnQgdCA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKHJl
Y3Qub3JpZ2luLnkpKTsKKyAgICBpbnQgciA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYoTlNNYXhY
KHJlY3QpKSk7CisgICAgaW50IGIgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKE5TTWF4WShyZWN0
KSkpOworICAgIHJldHVybiBJbnRSZWN0KGwsIHQsIHIgLSBsLCBiIC0gdCk7Cit9CisKKyNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQppbmRleCA3NzkxMWU1MzQ1MTNiMDhmZGE5NjY1NDE5Mjc3ZjdlNzQwOGVh
ZTNkLi5hOTI3M2I3NGMxYTU2OGFlNGM5NmQzZDY1YzE1NzRhNGQzYjlkZDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
QEAgLTE2Myw3ICsxNjMsNyBAQCAtICh2b2lkKWRpc3BsYXkKICAgICAgICAgaWYgKF9sYXRjaGVk
UGJ1ZmZlcikgewogCiAgICAgICAgICAgICBHQ0dMZW51bSB0ZXh0dXJlID0gX2NvbnRleHQtPnBs
YXRmb3JtVGV4dHVyZSgpOwotICAgICAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGds
OjpCaW5kVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVy
ZVRhcmdldCwgdGV4dHVyZSk7CiAgICAgICAgICAgICBpZiAoIUVHTF9SZWxlYXNlVGV4SW1hZ2Uo
X2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKSkgewogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IuCiAgICAgICAgICAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCAtICh2b2lkKWFsbG9jYXRlSU9TdXJmYWNl
QmFja2luZ1N0b3JlV2l0aFNpemU6KFdlYkNvcmU6OkludFNpemUpc2l6ZSB1c2luZ0FscGhhOgog
ICAgICAgICBFR0xfV0lEVEgsIHNpemUud2lkdGgoKSwKICAgICAgICAgRUdMX0hFSUdIVCwgc2l6
ZS5oZWlnaHQoKSwKICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgMCwKLSAgICAg
ICAgRUdMX1RFWFRVUkVfVEFSR0VULCBHcmFwaGljc0NvbnRleHRHTDo6RUdMSU9TdXJmYWNlVGV4
dHVyZVRhcmdldCwKKyAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCwKICAgICAgICAgRUdMX1RFWFRV
UkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCB1c2luZ0FscGhhID8gR0xfQkdSQV9FWFQgOiBHTF9S
R0IsCiAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdCQSwKICAgICAg
ICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgR0xfVU5TSUdORURfQllURSwKQEAgLTI1Niw3ICsy
NTYsNyBAQCAtICh2b2lkKWJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2UKICNl
bGlmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSB0ZXh0dXJlID0gX2NvbnRleHQtPnBsYXRmb3Jt
VGV4dHVyZSgpOwogCi0gICAgZ2w6OkJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpJT1N1
cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBnbDo6QmluZFRleHR1cmUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQsIHRleHR1cmUpOwog
CiAgICAgaWYgKF9sYXRjaGVkUGJ1ZmZlcikgewogICAgICAgICBpZiAoIUVHTF9SZWxlYXNlVGV4
SW1hZ2UoX2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNo
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJ
T1MubW0KaW5kZXggY2UzZjhkYjFjMTJhMDkwOWRiZjU1ZGM4NWQ2NDkwZTljODg5YjYyZS4uNGYw
OGNhMDZkMjRlOWRjM2ZhMDQzNDE4YzNjYmZjMjgyNzZlZTFkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCkBAIC0xMTcs
NyArMTE3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHN5c3RlbUZvbnRNb2Rp
ZmljYXRpb25BdHRyaWJ1dGVzKEZvbnRTZWxlY3Rpb25WYWwKICAgICBbdHJhaXRzRGljdGlvbmFy
eSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa0NURm9udFVJ
Rm9udERlc2lnblRyYWl0KV07CiAKICAgICBpZiAoaXRhbGljKQotICAgICAgICBbdHJhaXRzRGlj
dGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6a0NURm9udEl0YWxpY1Ry
YWl0XSBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa0NURm9udFN5bWJvbGljVHJhaXQp
XTsKKyAgICAgICAgW3RyYWl0c0RpY3Rpb25hcnkgc2V0T2JqZWN0OkAoa0NURm9udEl0YWxpY1Ry
YWl0KSBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa0NURm9udFN5bWJvbGljVHJhaXQp
XTsKIAogICAgIHJldHVybiBAeyBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihrQ1RGb250VHJhaXRz
QXR0cmlidXRlKSA6IHRyYWl0c0RpY3Rpb25hcnkuZ2V0KCkgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRSZWN0TWFjLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWQzNDhhY2NiYmU0NDE4NTFlYWVhYWVjYWM5ZWRiNjZk
ZmUxMWYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUg
Tm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQot
I2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwotCi1GbG9h
dFJlY3Q6OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHIpIDogbV9sb2NhdGlvbihyLm9yaWdpbiks
IG1fc2l6ZShyLnNpemUpCi17Ci19Ci0KLUZsb2F0UmVjdDo6b3BlcmF0b3IgTlNSZWN0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkp
OwotfQotCi0jZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFJlY3RNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5NjFlYjgzNzA0OTU2OTE2M2U2OTFkNzAx
MzIzZWNhMDU2MzYyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJJbnRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQotI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBF
UwotCi1JbnRSZWN0OjpvcGVyYXRvciBOU1JlY3QoKSBjb25zdAotewotICAgIHJldHVybiBOU01h
a2VSZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci19Ci0KLUludFJlY3QgZW5jbG9z
aW5nSW50UmVjdChjb25zdCBOU1JlY3QmIHJlY3QpCi17Ci0gICAgaW50IGwgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGZsb29yZihyZWN0Lm9yaWdpbi54KSk7Ci0gICAgaW50IHQgPSBzdGF0aWNfY2FzdDxp
bnQ+KGZsb29yZihyZWN0Lm9yaWdpbi55KSk7Ci0gICAgaW50IHIgPSBzdGF0aWNfY2FzdDxpbnQ+
KGNlaWxmKE5TTWF4WChyZWN0KSkpOwotICAgIGludCBiID0gc3RhdGljX2Nhc3Q8aW50PihjZWls
ZihOU01heFkocmVjdCkpKTsKLSAgICByZXR1cm4gSW50UmVjdChsLCB0LCByIC0gbCwgYiAtIHQp
OwotfQotCi0jZW5kaWYKLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBjMGUxZjJkYTZiMzI5OGM3
NjBhY2M1NTExZTQ2ZTg5MWJiMmNlOTlkLi5iYWEyNTU1MDhjMzgwODZhYzYwYzRlMTAyOTFhMTNj
NzM2MTUxZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTM5LDEzICszOSwxNSBAQAogI2ltcG9ydCA8VUlLaXQv
VUlDb2xvci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQ
YXN0ZWJvYXJkLmg+Ci0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQg
PHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgorCiAjZGVmaW5lIFBB
U1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICEoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikpKQogI2RlZmluZSBQQVNU
RUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBIChQQVNURUJP
QVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkpCiAj
ZGVmaW5lIE5TVVJMX1NVUFBPUlRTX1RJVExFICghUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQpAQCAt
NzQsOCArNzYsNyBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmKQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzKQogewotICAgIGZvciAoTlNTdHJpbmcgKnBhc3RlYm9hcmRUeXBlIGluIFtt
X3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSkKLSAgICAgICAgdHlwZXMuYXBwZW5kKHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJk
IHBhc3RlYm9hcmRUeXBlc10pOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNTg3LDEwICs1
ODgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9M
aXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgICAgICAgICAgLy8gZXZlbnRzLCB3
ZSBuZWVkIGFuIGFkZGl0aW9uYWwgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXN0
ZWJvYXJkIHR5cGVzIGFycmF5IHRoYXQgY29udGFpbnMKICAgICAgICAgICAgIC8vIGFsbCBvZiB0
aGUgY3VzdG9tIHR5cGVzLiBXZSB1c2UgdGhlIHRlYW1EYXRhIHByb3BlcnR5LCBhdmFpbGFibGUg
b24gTlNJdGVtUHJvdmlkZXIgb24gaU9TLCB0byBzdG9yZQogICAgICAgICAgICAgLy8gdGhpcyBp
bmZvcm1hdGlvbiwgc2luY2UgdGhlIGNvbnRlbnRzIG9mIHRlYW1EYXRhIGFyZSBpbW1lZGlhdGVs
eSBhdmFpbGFibGUgcHJpb3IgdG8gdGhlIGRyb3AuCi0gICAgICAgICAgICBOU011dGFibGVBcnJh
eTxOU1N0cmluZyAqPiAqdHlwZXNBc05TQXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwot
ICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKLSAgICAg
ICAgICAgICAgICBbdHlwZXNBc05TQXJyYXkgYWRkT2JqZWN0OnR5cGVdOwotICAgICAgICAgICAg
TlNEaWN0aW9uYXJ5ICp0ZWFtRGF0YURpY3Rpb25hcnkgPSBAeyBAKG9yaWdpbktleUZvclRlYW1E
YXRhKSA6IGRhdGEub3JpZ2luKCksIEAoY3VzdG9tVHlwZXNLZXlGb3JUZWFtRGF0YSkgOiB0eXBl
c0FzTlNBcnJheSB9OworICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp0ZWFtRGF0YURpY3Rpb25h
cnkgPSBAeyBAKG9yaWdpbktleUZvclRlYW1EYXRhKSA6IGRhdGEub3JpZ2luKCksIEAoY3VzdG9t
VHlwZXNLZXlGb3JUZWFtRGF0YSkgOiBjcmVhdGVOU0FycmF5KGRhdGEub3JkZXJlZFR5cGVzKCkp
LmdldCgpIH07CiAgICAgICAgICAgICBpZiAoTlNEYXRhICp0ZWFtRGF0YSA9IFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dGVhbURhdGFEaWN0aW9uYXJ5IHJlcXVp
cmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pIHsKICAgICAgICAgICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRUZWFtRGF0YTp0ZWFtRGF0YV07CiAgICAgICAg
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpzZXJpYWxpemVkU2hh
cmVkQnVmZmVyLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpXTsKQEAgLTc1MywxMSArNzUxLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHkKICAgICBp
ZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnM6KV0pCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJs
ZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnR5
cGVzLnNpemUoKV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAg
IFt0eXBlc0FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKil0eXBlXTsKLQotICAgIFttX3Bhc3Rl
Ym9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOnR5cGVzQXJyYXldOworICAgIFtt
X3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOmNyZWF0ZU5TQXJyYXko
dHlwZXMpLmdldCgpXTsKIH0KIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCBlMDNl
Y2ZjOThjODI5NjgyZGY3YzYzN2JkN2VlNGU4MWM1ZjRkNDhhLi45NTU5ODgyMDA5ODBjOWRjODk5
ZTkzZjQ2YTEzNmZlZjgyOTI3YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtNTE4LDcgKzUxOCw3
IEBAIC0gKE5TQXJyYXk8X19raW5kb2YgTlNJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJz
CiAKIC0gKHZvaWQpc2V0SXRlbVByb3ZpZGVyczooTlNBcnJheTxfX2tpbmRvZiBOU0l0ZW1Qcm92
aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKLSAgICBpdGVtUHJvdmlkZXJzID0gaXRlbVByb3Zp
ZGVycyA/OiBbTlNBcnJheSBhcnJheV07CisgICAgaXRlbVByb3ZpZGVycyA9IGl0ZW1Qcm92aWRl
cnMgPzogQFsgXTsKICAgICBpZiAoX2l0ZW1Qcm92aWRlcnMgPT0gaXRlbVByb3ZpZGVycyB8fCBb
X2l0ZW1Qcm92aWRlcnMgaXNFcXVhbFRvQXJyYXk6aXRlbVByb3ZpZGVyc10pCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtW
aWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCmluZGV4
IGUzMzVkNzViZGNhNGZhNzllNWYzZGQwMjlhMDY4YzM0YjY3ZDM2MWYuLjI0N2Y5MmZlOWFkMzNm
MzM2OTRjMzkyYjVhMmI5Yjk2MGI1NmE4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTI4NCwxNSArMjg0LDE1IEBAIC0gKE5TQXJyYXkgKilzdWJ2
aWV3cwogewogICAgIENGQXJyYXlSZWYgc3Vidmlld3MgPSBXS1ZpZXdHZXRTdWJ2aWV3cyhbc2Vs
ZiBfdmlld1JlZl0pOwogICAgIGlmICghc3Vidmlld3MpCi0gICAgICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheV07CisgICAgICAgIHJldHVybiBAWyBdOwogICAgIAogICAgIENGSW5kZXggY291bnQg
PSBDRkFycmF5R2V0Q291bnQoc3Vidmlld3MpOwogICAgIGlmIChjb3VudCA9PSAwKQotICAgICAg
ICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFsgXTsKICAgICAKICAg
ICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5OmNvdW50XTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5XTsKKyAgICAgICAgcmV0dXJuIEBbIF07CiAgICAgCiAgICAgQ0ZBcnJheUFwcGx5RnVuY3Rp
b24oc3Vidmlld3MsIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgX1dBS0NvcHlXcmFwcGVyLCAodm9p
ZCopcmVzdWx0KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE0MThlNWM0YzMwZTFlYzM2NDhjMzgzMmIz
OTJmMzNhY2I4NDVmZjYuLmNmMGIzMmVkYjE2NTQzYWJkYjYwZjA0YzI4ZWRkMjY0OTY2NjcxMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2lt
cG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMTAgKzQ5LDcgQEAgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAog
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykK
IHsKLSAgICBOU0FycmF5ICpwYXN0ZWJvYXJkVHlwZXMgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHR5
cGVzXTsKLQotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtwYXN0ZWJvYXJkVHlwZXMg
Y291bnRdOyBpKyspCi0gICAgICAgIHR5cGVzLmFwcGVuZChbcGFzdGVib2FyZFR5cGVzIG9iamVj
dEF0SW5kZXg6aV0pOworICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9h
cmQuZ2V0KCkgdHlwZXNdKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCkBAIC04
NiwxMyArODQsMTIgQEAgaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNv
bnN0CiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
CiB7Ci0gICAgTlNBcnJheSogcGF0aHMgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHByb3BlcnR5TGlz
dEZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIGlkIHBhdGhzID0gW21fcGFzdGVib2FyZC5n
ZXQoKSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoW3BhdGhz
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgcGF0aG5hbWVzLmFw
cGVuZCgoTlNTdHJpbmcgKilwYXRocyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3BhdGhzIGNvdW50XTsgaSsrKQotICAgICAgICBwYXRo
bmFtZXMuYXBwZW5kKFtwYXRocyBvYmplY3RBdEluZGV4OmldKTsKKyAgICBwYXRobmFtZXMgPSBt
YWtlVmVjdG9yPFN0cmluZz4ocGF0aHMpOwogfQogCiBzdGF0aWMgYm9vbCBwYXN0ZWJvYXJkTWF5
Q29udGFpbkZpbGVQYXRocyhOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCkBAIC0zMDgsMjMgKzMw
NSwxMiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShjb25zdCBTdHJpbmcmIGZy
b21QYXN0ZWJvYXJkKQogCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6YWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKIHsKLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXN0ZWJvYXJkVHlwZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6cGFzdGVib2FyZFR5cGVzW2ldXTsK
LQotICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5cGVzLmdldCgpIG93
bmVyOm5pbF07CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQuZ2V0KCkgYWRkVHlwZXM6Y3JlYXRl
TlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAKIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzKQogewotICAgIGlmIChwYXN0ZWJvYXJkVHlwZXMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtdIG93bmVyOm5pbF07Ci0KLSAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXN0ZWJvYXJk
VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6cGFzdGVi
b2FyZFR5cGVzW2ldXTsKLQotICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGRlY2xhcmVU
eXBlczp0eXBlcy5nZXQoKSBvd25lcjpuaWxdOworICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdl
dCgpIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3du
ZXI6bmlsXTsKIH0KIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggYWJm
MmJmMTMwOGFmZGNlZGVkYjUzYTUxMTkxY2VmYzQxMWNlYmJhNS4uY2JjNjY2ZTVlYzdiMDQ2ODlk
NzcwMDJkNzMxMThlZjUyNGJjYzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaApAQCAtMzIsOCArMzIsNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nVG9CZU1hdGNoZWQsIGNvbnN0IFN0cmluZyYgd2lsZGNhcmRTdHJpbmcp
OwogCi0jaWZkZWYgX19PQkpDX18KLVdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IHdlYkNv
cmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICopOwot
I2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IGYxZjU2YjMwODdkMGUwOTExZjE4MGU1
NTMyMDY2ZmIwZGExZTZhOWUuLjdjZDFiZDgwYWU5ZTMzZTc1NmY2NTkxMjI0MGY3ZWQ2Y2MzM2M1
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5t
bQpAQCAtNTksMTUgKzU5LDQgQEAgYm9vbCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgd2lsZGNhcmRTdHIKICAgICByZXR1cm4g
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbih3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmluZyh3
aWxkY2FyZFN0cmluZyksIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2goc3Ry
aW5nKSAhPSAtMTsKIH0KIAotVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21O
U1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5zU3RyaW5nQXJyYXkpCi17Ci0gICAg
VmVjdG9yPFN0cmluZz4gc3RyaW5nVmVjdG9yOwotICAgIHN0cmluZ1ZlY3Rvci5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KFtuc1N0cmluZ0FycmF5IGNvdW50XSk7Ci0KLSAgICBmb3IgKE5TU3RyaW5n
ICpuc1N0cmluZyBpbiBuc1N0cmluZ0FycmF5KQotICAgICAgICBzdHJpbmdWZWN0b3IudW5jaGVj
a2VkQXBwZW5kKG5zU3RyaW5nKTsKLQotICAgIHJldHVybiBzdHJpbmdWZWN0b3I7Ci19Ci0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRy
YXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1t
CmluZGV4IDM4MzY4ZWMyNDdkZDAwNDRhYjlkYWFlOGRmNjQwNTkwZGQwMjAyOGIuLmM3NWQyMGYw
Zjc3NTYxNzlkNGY5ZDgwMjgxZWNhNDQ4ZWQyMDBiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQpAQCAtMzEsNyArMzEsNiBAQAog
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0
aW9uLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNo
YXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi40
NGZmZGMwYjc1M2YzZjdkMjhmYzZmZDQ3ODY5OWQ3MmU0ZWRkN2Y1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xNjIsNyAr
MTYyLDcgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgQVNTRVJUKCFtX3ZpZGVvSW5wdXQpOwogICAgIAog
ICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZW
aWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBo
ZWlnaHQgKiAxMl0sCisgICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IEAod2lkdGgg
KiBoZWlnaHQgKiAxMiksCiAgICAgICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtl
eSA6IEAoMzApLAogICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIw
KSwKICAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxI
MjY0TWFpbkF1dG9MZXZlbApAQCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAg
TlNEaWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKICAgICAgICAgQVZWaWRlb0NvZGVjS2V5
OiBBVlZpZGVvQ29kZWNIMjY0LAotICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051bWJlciBu
dW1iZXJXaXRoSW50OndpZHRoXSwKLSAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6aGVpZ2h0XSwKKyAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBAKHdpZHRo
KSwKKyAgICAgICAgQVZWaWRlb0hlaWdodEtleTogQChoZWlnaHQpLAogICAgICAgICBBVlZpZGVv
Q29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKICAgICB9Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDEzZWRjMzU1YTUzNTgzNmE2
Njg1MDEyNzg4MzliMjkwZjQ3ODM1MmMuLmYxNzdlMDk2N2FmNzU5ZDg1OWNkZWI1ODk0ODQ5NmQw
NWYyNDY4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTQ0Miw3ICs0NDIs
NyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkKICAg
ICBbc2Vzc2lvbigpIGFkZElucHV0OnZpZGVvSW4uZ2V0KCldOwogCiAgICAgbV92aWRlb091dHB1
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRJbnN0YW5jZSgp
IGluaXRdKTsKLSAgICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDphdlZpZGVvQ2FwdHVyZVBpeGVsQnVmZmVyRm9ybWF0KCldLCBrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7CisgICAgYXV0byBzZXR0aW5nc0RpY3Rpb25h
cnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
QW5kS2V5czogQChhdlZpZGVvQ2FwdHVyZVBpeGVsQnVmZmVyRm9ybWF0KCkpLCBrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7CiAKICAgICBbbV92aWRlb091dHB1dCBzZXRW
aWRlb1NldHRpbmdzOnNldHRpbmdzRGljdGlvbmFyeS5nZXQoKV07CiAgICAgW21fdmlkZW9PdXRw
dXQgc2V0QWx3YXlzRGlzY2FyZHNMYXRlVmlkZW9GcmFtZXM6WUVTXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCmluZGV4IGY2
NzZhMjQ1NThkODk4MGZmMjEyNTIxMzg0NDQxYTNmNGViZTMxOTEuLmM5N2FlYmQ3ZGY4ZjBiYWQy
NjkxNDJhZWUzZjUyZDNiZTA3ZDMxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIENv
b2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICogX051bGxhYmxlICgpIGNvbnN0CiAgICAgfQog
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW3Byb3BlcnRpZXMgc2V0T2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmNyZWF0ZWQgLyAxMDAwLjAgLSBOU1RpbWVJ
bnRlcnZhbFNpbmNlMTk3MF0gZm9yS2V5OkAiQ3JlYXRlZCJdOworICAgIFtwcm9wZXJ0aWVzIHNl
dE9iamVjdDpAKGNyZWF0ZWQgLyAxMDAwLjAgLSBOU1RpbWVJbnRlcnZhbFNpbmNlMTk3MCkgZm9y
S2V5OkAiQ3JlYXRlZCJdOwogI2VuZGlmCiAKICAgICBhdXRvKiBwb3J0U3RyaW5nID0gcG9ydFN0
cmluZ0Zyb21WZWN0b3IocG9ydHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KaW5kZXggYmQwZmQ2NzUzODgyNWJlMDgxYzc5NWM0ODdmMjYxMDFkOGMzNGZkNS4uYzRiZDVl
ZmJhY2JhZGEwY2VhMmU4MGZjODU3MThkNmExNjc2ZTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVMKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gY29va2llU3RyLmNvbnRhaW5zKCc9Jykg
PyBjb29raWVTdHIgOiBjb29raWVTdHIgKyAiPSI7CiAKICAgICBOU1VSTCAqY29va2llVVJMID0g
dXJsOwotICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdOworICAg
IE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gQHsgQCJTZXQtQ29va2llIjogY29va2llU3Ry
aW5nIH07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNBcnJheSAqdW5maWx0ZXJlZENvb2tp
ZXMgPSBbTlNIVFRQQ29va2llIF9wYXJzZWRDb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRz
OmhlYWRlckZpZWxkcyBmb3JVUkw6Y29va2llVVJMXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CmluZGV4IGQ2ZWVlZmRkOGM5NmQzODg5Y2ZlNmRlOTRmMjVkNWJjYWNmZWNmNzIuLjc2NmVhM2I4
MmY1ODVhZjE2YWZkYWJlMTJhY2E4NzI4NjI0NDBiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCgpCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
bnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpzaXRlRm9yQ29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRp
b24sIG5zUmVxdWVzdC5VUkwpIGZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlT
aXRlRm9yQ29va2llcyJdOwotICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJlciBu
dW1iZXJXaXRoQm9vbDptX2lzVG9wU2l0ZV0gZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQ
cm9wZXJ0eUlzVG9wTGV2ZWxOYXZpZ2F0aW9uIl07CisgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVy
dHk6bV9pc1RvcFNpdGUgPyBAWUVTIDogQE5PIGZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9saWN5
UHJvcGVydHlJc1RvcExldmVsTmF2aWdhdGlvbiJdOwogI2VuZGlmCiAKICAgICAvLyBDYW5ub3Qg
anVzdCB1c2Ugc2V0QWxsSFRUUEhlYWRlckZpZWxkcyBoZXJlLCBiZWNhdXNlIGl0IGRvZXMgbm90
IHJlbW92ZSBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDliMDEwNGQ0NmU1NWFjOGQ0
YjJiYmExYzljMmU5YTYzMWNiYWUwY2IuLjBlMTUxMGIyNzVmZjVhNzE4MGQ3YTg3N2U5ZmI1ODQx
NjgyNDM2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTUyLDcgKzUyLDYgQEAKICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmFrZWRSZWYuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0KaW5kZXggZWNiYjc5Nzc3NmMyYjhmOTcxNjVjMzM5ZWYwNGZmYmY0
OTRhNjhkOS4uNjg0ZmQ4ODc5NzY1M2Y0OGNiMzZjNDVkYjIwODE3ZjRjMmFlODQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpAQCAtMjksNyAr
MjksNiBAQAogI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NG
LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZWd1bGFyRXhwcmVzc2lvbi5oPgotI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDEzYjlhZGE2
MTAyYzY0MWUyMjc3MWFlZWE0NjRkMWQwYmFkNjQ3NjIuLjI3MDNiMjhiMWYzNjRjMmNiMTMxZWMx
MDFkYjcwMjFkZjAyYzJmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTU2LDYgKzU2LDcgQEAKICNpbXBvcnQgPHN5
c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogY29uc3QgQ0ZT
dHJpbmdSZWYga0xTUGx1Z0luQnVuZGxlSWRlbnRpZmllcktleSA9IENGU1RSKCJMU1BsdWdJbkJ1
bmRsZUlkZW50aWZpZXJLZXkiKTsKIApAQCAtMjU2LDEyICsyNTcsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlZE5TQ29uY3JldGVUYXNrX2xhdW5jaChOU1Rhc2sgKnNlbGYsIFNFTCBfY21kKQogewog
ICAgIFN0cmluZyBsYXVuY2hQYXRoID0gc2VsZi5sYXVuY2hQYXRoOwogCi0gICAgVmVjdG9yPFN0
cmluZz4gYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNl
bGYuYXJndW1lbnRzLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICphcmd1bWVudCBpbiBzZWxm
LmFyZ3VtZW50cykKLSAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZChhcmd1bWVudCk7
Ci0KLSAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkubGF1bmNoUHJvY2VzcyhsYXVu
Y2hQYXRoLCBhcmd1bWVudHMpKQorICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5s
YXVuY2hQcm9jZXNzKGxhdW5jaFBhdGgsIG1ha2VWZWN0b3I8U3RyaW5nPihzZWxmLmFyZ3VtZW50
cykpKQogICAgICAgICByZXR1cm47CiAKICAgICBOU0NvbmNyZXRlVGFza19sYXVuY2goc2VsZiwg
X2NtZCk7CkBAIC0yNzEsMTYgKzI2Nyw4IEBAIHN0YXRpYyBOU1J1bm5pbmdBcHBsaWNhdGlvbiAq
KCpOU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29uZmlnCiAKIHN0
YXRpYyBOU1J1bm5pbmdBcHBsaWNhdGlvbiAqcmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBs
aWNhdGlvbkF0VVJMX29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcihOU1dvcmtzcGFjZSAqc2Vs
ZiwgU0VMIF9jbWQsIE5TVVJMICp1cmwsIE5TV29ya3NwYWNlTGF1bmNoT3B0aW9ucyBvcHRpb25z
LCBOU0RpY3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24sIE5TRXJyb3IgKiplcnJvcikKIHsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBhcmd1bWVudHM7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KLSAgICBpZiAoTlNBcnJheSAqYXJndW1lbnRzQXJyYXkgPSBbY29uZmlndXJhdGlv
biBvYmplY3RGb3JLZXk6TlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzXSkg
ewotICAgICAgICBpZiAoW2FyZ3VtZW50c0FycmF5IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgYXJy
YXldXSkgewotICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqYXJndW1lbnQgaW4gYXJndW1lbnRz
QXJyYXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJn
dW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIGF1dG8gYXJndW1l
bnRzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFtjb25maWd1cmF0aW9uIG9iamVjdEZvcktleTpOU1dv
cmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25Bcmd1bWVudHNdKTsKICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24o
KS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFVSTCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCBmMjMzOGI4
Y2MwMTc1YzJkMDZlNjdjOThjMzU0NDU4NzZiNDQ0OThkLi4zMTMwODg2NjUyNWY2MThiOGY2MThh
NmQ1NzlkYjg3MzYwNzAwZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW0KQEAgLTMyLDEwICszMiwxMiBAQAogI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KLSNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAK
ICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2FBZGRpdGlvbnMubW0+CkBAIC0xMzEsMTQgKzEz
Myw2IEBAIHN0YXRpYyBQS01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hhbnRDYXBhYmlsaXRp
ZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b1N1cHBvcnRlZE5ldHdvcmtzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzdXBwb3J0ZWROZXR3b3JrcykKLXsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzdXBwb3J0ZWROZXR3
b3Jrcy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8mIHN1cHBvcnRlZE5ldHdvcmsgOiBzdXBwb3J0
ZWROZXR3b3JrcykKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6c3VwcG9ydGVkTmV0d29ya107
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlw
cGluZ1R5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
VHlwZSBzaGlwcGluZ1R5cGUpCiB7CiAgICAgc3dpdGNoIChzaGlwcGluZ1R5cGUpIHsKQEAgLTIx
Miw3ICsyMDYsNyBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QoYwogICAgIFtyZXN1bHQgc2V0UmVx
dWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczp0b1BLQ29udGFjdEZpZWxkcyhwYXltZW50UmVxdWVz
dC5yZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKCkpLmdldCgpXTsKICAgICBbcmVzdWx0IHNl
dFJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOnRvUEtDb250YWN0RmllbGRzKHBheW1lbnRS
ZXF1ZXN0LnJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKCkpLmdldCgpXTsKIAotICAgIFty
ZXN1bHQgc2V0U3VwcG9ydGVkTmV0d29ya3M6dG9TdXBwb3J0ZWROZXR3b3JrcyhwYXltZW50UmVx
dWVzdC5zdXBwb3J0ZWROZXR3b3JrcygpKS5nZXQoKV07CisgICAgW3Jlc3VsdCBzZXRTdXBwb3J0
ZWROZXR3b3JrczpjcmVhdGVOU0FycmF5KHBheW1lbnRSZXF1ZXN0LnN1cHBvcnRlZE5ldHdvcmtz
KCkpLmdldCgpXTsKICAgICBbcmVzdWx0IHNldE1lcmNoYW50Q2FwYWJpbGl0aWVzOnRvUEtNZXJj
aGFudENhcGFiaWxpdGllcyhwYXltZW50UmVxdWVzdC5tZXJjaGFudENhcGFiaWxpdGllcygpKV07
CiAKICAgICBbcmVzdWx0IHNldFNoaXBwaW5nVHlwZTp0b1BLU2hpcHBpbmdUeXBlKHBheW1lbnRS
ZXF1ZXN0LnNoaXBwaW5nVHlwZSgpKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJFcnJvcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkVycm9yc0NvY29hLm1tCmluZGV4IDZmOWZkYjAwZWNkNGFhYzMzMTc5MjY4OGI3MjA1YzRhMGQw
NjQ2YjcuLjc0ZWM5YWMyYWQ5MTYyNWFhMGZlNzQxZWMyNzdkNGZiMmM1ZDNlMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tCkBAIC0yNiwzMyArMjYs
MjggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViRXJyb3JzLmgiCiAKLSNpbXBv
cnQgIkFQSUVycm9yLmgiCi0jaW1wb3J0ICJXS0Vycm9yUmVmLmgiCi0jaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIFJldGFpblB0cjxOU0Vycm9y
PiBjcmVhdGVOU0Vycm9yKE5TU3RyaW5nKiBkb21haW4sIGludCBjb2RlLCBOU1VSTCAqVVJMKQor
c3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yKE5TU3RyaW5nICpkb21haW4s
IGludCBjb2RlLCBOU1VSTCAqVVJMKQogewotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIFVSTCwg
QCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCi0gICAgICAgIFtVUkwgYWJzb2x1dGVTdHJpbmddLCBA
Ik5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5IiwKLSAgICAgICAgbmlsXTsKLQorICAgIE5TRGlj
dGlvbmFyeSAqdXNlckluZm8gPSBAeworICAgICAgICBAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Ijog
VVJMLAorICAgICAgICBAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5IjogVVJMLmFic29sdXRl
U3RyaW5nLAorICAgIH07CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0
V2l0aERvbWFpbjpkb21haW4gY29kZTpjb2RlIHVzZXJJbmZvOnVzZXJJbmZvXSk7CiB9CiAKLVJl
c291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoY3Jl
YXRlTlNFcnJvcihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9yQ2FuY2VsbGVkLCByZXF1ZXN0
LnVybCgpKS5nZXQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZU5TRXJyb3IoTlNVUkxFcnJvckRvbWFp
biwgTlNVUkxFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSkuZ2V0KCk7CiB9CiAKLVJlc291
cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoY3JlYXRlTlNFcnJvcihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9yRmls
ZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkpLmdldCgpKTsKKyAgICByZXR1cm4gY3JlYXRl
TlNFcnJvcihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVz
cG9uc2UudXJsKCkpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCmluZGV4IDcwMTMyODFlYzM0YmJm
NGE1OGUwMjMwZjRlOGY0NDljZjQ5ZDQ0MzEuLmRmZDRiNjBlYjllOGRmMWVhZGFmMDI0N2U5YjJk
MmIwZDQ2YzgyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJv
YXJkVHlwZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBl
cy5tbQpAQCAtNDYsMzIgKzQ2LDMyIEBAIHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqcmV0YWluKE5T
QXJyYXkgKmFycmF5KQogICAgIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5n
KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2FyZFR5cGUoKSwKLSAg
ICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUNv
bG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORywgbmls
XSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViQXJjaGl2ZVBib2Fy
ZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjps
ZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksCisgICAgICAgIFdlYkNvcmU6OmxlZ2FjeVVSTFBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lDb2xvclBhc3RlYm9hcmRUeXBlKCksIChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKIE5T
QXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAq
dHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJVUkxzV2l0aFRpdGxl
c1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBi
b2FyZFR5cGUsICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CisgICAg
c3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRU
eXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBl
LCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKTsKICAgICByZXR1cm4gdHlwZXM7
CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCkKIHsKLSAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJD
b3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRU
eXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBl
LCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViQ29y
ZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlw
ZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwg
V2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6
Zm9ySW1hZ2VzV2l0aEFyY2hpdmUoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJl
dGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVS
TFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBl
LCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG5pbF0pOworICAgIHN0
YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVS
TFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBl
LCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGVdKTsKICAgICByZXR1cm4g
dHlwZXM7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkKIHsK
LSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdl
YkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjps
ZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJk
VHlwZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJB
cmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUs
IFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSk7
CiAgICAgcmV0dXJuIHR5cGVzOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQppbmRleCAx
ZDAwODNjNTdjYmVhOTdkZWI3YjkwZWRjYjE3OGQwM2ZmZTQyZGUzLi4xNjRmNjBlY2NjYzVkNjc2
M2Y1YTkzZDA3M2MyOGEyNzUyMGRiYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQpAQCAtMzIs
NiArMzIsNyBAQAogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIHN0YXRpYyBXS0Vycm9yQ29kZSB0b1dLRXJyb3JDb2Rl
KGNvbnN0IHN0ZDo6ZXJyb3JfY29kZSYgZXJyb3IpCiB7CkBAIC05MywxMCArOTQsNyBAQCAtICh2
b2lkKWxvb2tVcENvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRp
ZmllciBjb21wbGV0aW9uSGFuZAogLSAodm9pZClnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJ
ZGVudGlmaWVyczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiopKWNvbXBsZXRpb25IYW5k
bGVyCiB7CiAgICAgX2NvbnRlbnRSdWxlTGlzdFN0b3JlLT5nZXRBdmFpbGFibGVDb250ZW50UnVs
ZUxpc3RJZGVudGlmaWVycyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXShWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgewotICAgICAgICBOU011
dGFibGVBcnJheTxOU1N0cmluZyAqPiAqbnNJZGVudGlmaWVycyA9IFtOU011dGFibGVBcnJheSBh
cnJheVdpdGhDYXBhY2l0eTppZGVudGlmaWVycy5zaXplKCldOwotICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykKLSAgICAgICAgICAgIFtuc0lkZW50aWZp
ZXJzIGFkZE9iamVjdDppZGVudGlmaWVyXTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnNJ
ZGVudGlmaWVycyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5TQXJyYXkoaWRl
bnRpZmllcnMpLmdldCgpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAwMzI1ODQ1NzFjYjYzZGJl
NmI0OWE3OTUzZjZlOGQ2ZDdlODNlMzc1Li5mNWVhY2VlMGU4Y2UzYjMxNDkzNDU0MTBmOWEyNjFk
NTI3ZTM5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5o
PgpAQCAtNjEwLDEwICs2MTEsNyBAQCAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZy
b21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KAogLSAodm9pZClf
Z2V0QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBfcHJvY2Vzc1Bvb2wtPmFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJv
Y2Vzc0ZvclRlc3RpbmcocGlkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFN0cmluZz4mJiBhY3RpdmVQYWdlc09yaWdpbnMpIHsK
LSAgICAgICAgTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKmFycmF5ID0gW1tbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YWN0aXZlUGFnZXNPcmlnaW5zLnNpemUoKV0g
YXV0b3JlbGVhc2VdOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGFjdGl2ZVBhZ2VzT3Jp
Z2lucykKLSAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6b3JpZ2luXTsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoYXJyYXkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVO
U0FycmF5KGFjdGl2ZVBhZ2VzT3JpZ2lucykuZ2V0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQppbmRleCA1
ODhhODZiNDIwYzQwMmQxOTRiODBlOWM2ODYwNzNmNzczMDFkNDcyLi44ZTEwZWZmZWJlNzVhZjJl
NmVhYjVhNzE5YTM2ZmRjYzEwYzhiZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQg
IldLVXNlclNjcmlwdEludGVybmFsLmgiCiAKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJ
bnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbXBsZW1l
bnRhdGlvbiBXS1VzZXJTY3JpcHQKIApAQCAtODQsNyArODUsNyBAQCAtIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJT
Y3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3Jp
cHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6
OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6
OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWlu
RnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5U
b3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
bkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6
Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwor
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxm
LCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2Ny
aXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVs
aXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3Jl
VXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNl
ckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KQEAgLTk0LDcgKzk1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNv
dXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW4KICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRV
UkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxl
Z2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBBUEk6
OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWlu
RnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5U
b3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
bkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6
Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMTAsNyArMTExLDcgQEAgLSAoaW5zdGFuY2V0eXBl
KV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2Vy
U2NyaXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2Ny
aXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJ
OjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJ
Ojp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
VG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6
Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpj
b25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2Ny
aXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxT
dHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlv
blRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTIwLDcgKzEyMSw3IEBAIC0gKGlu
c3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRp
bWU6KFdLVXNlclNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0
ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJD
b3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9u
bHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAq
Y29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgbWFrZVZlY3RvcjxTdHJpbmc+
KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGlu
Zzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTEzMCw3ICsxMzEsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNl
OihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJ
OjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNv
cmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3Rv
cihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
KGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgZGVmZXJSdW5uaW5nVW50aWxOb3Rp
ZmljYXRpb24gPyBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgOiBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAq
Y29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgbWFrZVZlY3RvcjxTdHJpbmc+
KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJbkFsbEZyYW1lcywgZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb24gPyBXZWJDb3JlOjpX
YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgOiBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYWVmNjc1ZGVhY2RlOWM0YTJkOWE2OGE5
ZmFjNzFlZDdlNjBiOTRjZS4uMjNhMmJlYTA5OTU2NjlkNDEwYjdhYTM0Yjg5ZDdjZDdhOGNlNWE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xMzYsNiArMTM2LDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC00MzcsNyArNDM4LDcgQEAgLSAodm9p
ZClfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+Jilw
YWdlQ29uZmlndXJhdGlvbgogICAgICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGdyb3VwSWRlbnRpZmllcikucHRyKCkp
OwogICAgIH0KIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRBZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcyhXZWJDb3JlOjp3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXko
W19jb25maWd1cmF0aW9uIF9hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMobWFrZVZl
Y3RvcjxTdHJpbmc+KFtfY29uZmlndXJhdGlvbiBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXNdKSk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U3VwcHJl
c3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCEhW19jb25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNy
ZW1lbnRhbFJlbmRlcmluZ10pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDdhYTdkMTFl
YTA3YzZlNDIyNjUzN2IxY2YwMWEzODMwYzljZTFkYzAuLjliYWI4YzhkMzZkNmU4MTVmMjgxMTRj
YTBiY2ZiMTQ0OWM1NmQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC00Niw2ICs0Niw3
IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+
CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JD
b2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CkBAIC04OTcsMjAgKzg5OCwxMiBAQCAtIChXS1dlYnNpdGVEYXRhU3RvcmUgKilfd2Vic2l0ZURh
dGFTdG9yZUlmRXhpc3RzCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfY29yc0Rpc2FibGlu
Z1BhdHRlcm5zCiB7Ci0gICAgYXV0byYgdmVjdG9yID0gX3BhZ2VDb25maWd1cmF0aW9uLT5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMoKTsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmVjdG9yLnNpemUoKV07Ci0gICAgZm9yIChhdXRv
JiBwYXR0ZXJuIDogdmVjdG9yKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnBhdHRlcm5dOwot
ICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfcGFnZUNvbmZpZ3Vy
YXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2
b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXR0
ZXJucwogewotICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKLSAgICB2ZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShwYXR0ZXJucy5jb3VudCk7Ci0gICAgZm9yIChOU1N0cmluZyAqcGF0dGVy
biBpbiBwYXR0ZXJucykKLSAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChwYXR0ZXJuKTsK
LSAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3Zl
KHZlY3RvcikpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1BhdHRl
cm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOwogfQogCiAtICh2b2lkKV9zZXRMb2Fk
c0Zyb21OZXR3b3JrOihCT09MKWxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmluZGV4IDE5ZmE0ZjBlMTA2OGE0Y2E4
NmVjODk4NGMyZGJhOTUyNGY1MzQyOTkuLjlhZDAzZDU5MmI4MWUzMzNhZGU4ZWU3Yjk4ODE0YzI1
MWU0ZmE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC02Niw3ICs2Niw3IEBAIC0gKE5TRGljdGlvbmFyeSAq
KV9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0
ZW0KICAgICAgICAgYXV0byogdmFsaWRhdGlvbkJ1YmJsZSA9IF9wYWdlLT52YWxpZGF0aW9uQnVi
YmxlKCk7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gdmFsaWRhdGlvbkJ1YmJsZSA/IHZhbGlk
YXRpb25CdWJibGUtPm1lc3NhZ2UoKSA6IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGRvdWJsZSBm
b250U2l6ZSA9IHZhbGlkYXRpb25CdWJibGUgPyB2YWxpZGF0aW9uQnViYmxlLT5mb250U2l6ZSgp
IDogMDsKLSAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRlcmZhY2VJdGVtOiBAeyBAIm1lc3NhZ2Ui
OiAoTlNTdHJpbmcgKiltZXNzYWdlLCBAImZvbnRTaXplIjogW05TTnVtYmVyIG51bWJlcldpdGhE
b3VibGU6Zm9udFNpemVdIH0gfTsKKyAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRlcmZhY2VJdGVt
OiBAeyBAIm1lc3NhZ2UiOiAoTlNTdHJpbmcgKiltZXNzYWdlLCBAImZvbnRTaXplIjogQChmb250
U2l6ZSkgfSB9OwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxl
TGlzdEFjdGlvbi5tbQppbmRleCAyNGQ0Njc4YzllNmRlMzhhOGMxY2RjZjliMDk1YzVkMWE5YjQ2
YmU3Li4yN2ExMzViMmRmYzMxZGQwYjM5ODBmNGE3ZDU4ODBjMjY2ZjUzM2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50
UnVsZUxpc3RBY3Rpb24ubW0KQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKIAorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CisKIEBpbXBsZW1lbnRhdGlvbiBfV0tDb250ZW50UnVs
ZUxpc3RBY3Rpb24KIAogLSAodm9pZClkZWFsbG9jCkBAIC01MiwxNCArNTQsMTAgQEAgLSAoQk9P
TCltYWRlSFRUUFMKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKW5vdGlmaWNhdGlvbnMKIHsK
LSAgICBjb25zdCBhdXRvJiB2ZWN0b3IgPSBfYWN0aW9uLT5ub3RpZmljYXRpb25zKCk7CisgICAg
YXV0byYgdmVjdG9yID0gX2FjdGlvbi0+bm90aWZpY2F0aW9ucygpOwogICAgIGlmICh2ZWN0b3Iu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNNdXRhYmxlQXJyYXk8TlNT
dHJpbmcgKj4gKmFycmF5ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6dmVjdG9yLnNpemUoKV0gYXV0b3JlbGVhc2VdOwotICAgIGZvciAoY29uc3QgYXV0byYgbm90
aWZpY2F0aW9uIDogdmVjdG9yKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Om5vdGlmaWNhdGlv
bl07Ci0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHZlY3Rvciku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVs
ZHMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVy
RmllbGRzLm1tCmluZGV4IGRkZWY3MWY4ZTQ0MzUwZTIwYmYxYmQ3NjRiOGE5YWU2ZmRjNmQyMWMu
LjUwZWU4NDViYmQ1OGQxZDBlODIxM2Q0YmE5M2Y1Y2VlODc4ZjllOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZp
ZWxkcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVs
ZHNJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS0N1c3RvbUhlYWRlckZpZWxk
cwogCkBAIC02OCwyMCArNjksMTIgQEAgLSAodm9pZClzZXRGaWVsZHM6KE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWZpZWxkcwogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+
ICopdGhpcmRQYXJ0eURvbWFpbnMKIHsKLSAgICBhdXRvJiBkb21haW5zID0gX2ZpZWxkcy0+dGhp
cmRQYXJ0eURvbWFpbnMoKTsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6ZG9tYWlucy5zaXplKCldOwotICAgIGZvciAoYXV0byYg
ZG9tYWluIDogZG9tYWlucykKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpkb21haW5dOwotICAg
IHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZmllbGRzLT50aGlyZFBh
cnR5RG9tYWlucygpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldFRoaXJkUGFydHlE
b21haW5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopdGhpcmRQYXJ0eURvbWFpbnMKIHsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBkb21haW5zOwotICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSh0aGlyZFBhcnR5RG9tYWlucy5jb3VudCk7Ci0gICAgZm9yIChOU1N0cmluZyAqZG9tYWluIGlu
IHRoaXJkUGFydHlEb21haW5zKQotICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZChkb21h
aW4pOwotICAgIF9maWVsZHMtPnNldFRoaXJkUGFydHlEb21haW5zKFdURk1vdmUoZG9tYWlucykp
OworICAgIF9maWVsZHMtPnNldFRoaXJkUGFydHlEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPih0
aGlyZFBhcnR5RG9tYWlucykpOwogfQogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggMThkYWUxYzUwNWEyZDA2ODc0MGQ1NTlj
ZjBhZDMxZWExNzJjN2MwNy4uYWQzNjViY2IxZjUxYWRiMDZlNzYyNjE2MzNlMTg1ZDhjMTVjYWVk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW1wb3J0ICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbgogCkBA
IC0xNzYsNTEgKzE3NywyMiBAQCAtICh2b2lkKXNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI6
KE5TVUludGVnZXIpaWRlbnRpZmllcgogCiAtIChOU0FycmF5ICopY2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXMKIHsKLSAgICBhdXRvIHNjaGVtZXMgPSBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LT5jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpOwotICAgIGlmIChzY2hlbWVzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIEBbXTsKLQotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzY2hlbWVzLnNpemUoKV07Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBzY2hlbWUgOiBzY2hlbWVzKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OihOU1N0cmluZyAqKXNjaGVtZV07Ci0KLSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXMoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClzZXRDYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lczooTlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzCiB7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gc2NoZW1lczsKLSAgICBmb3IgKGlkIHVybFNjaGVtZSBpbiBjYWNo
ZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykgewotICAgICAgICBpZiAoW3VybFNjaGVtZSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgc2NoZW1lcy5hcHBlbmQoU3Ry
aW5nKChOU1N0cmluZyAqKXVybFNjaGVtZSkpOwotICAgIH0KLSAgICAKLSAgICBfcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLT5zZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyhXVEZNb3ZlKHNj
aGVtZXMpKTsKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRDYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lcyhtYWtlVmVjdG9yPFN0cmluZz4oY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVt
ZXMpKTsKIH0KIAogLSAoTlNBcnJheSAqKWFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcwogewot
ICAgIGF1dG8mIHNjaGVtZXMgPSBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5hbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXMoKTsKLSAgICBpZiAoc2NoZW1lcy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBAW107Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2NoZW1lcy5zaXplKCldOwotICAgIGZvciAoYXV0byYgc2No
ZW1lIDogc2NoZW1lcykKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKilzY2hl
bWVdOwotCi0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9wcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcygpKS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczoo
TlNBcnJheSAqKWFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcwogewotICAgIFZlY3RvcjxTdHJp
bmc+IHNjaGVtZXM7Ci0gICAgc2NoZW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFsd2F5c1Jl
dmFsaWRhdGVkVVJMU2NoZW1lcy5jb3VudCk7Ci0gICAgZm9yIChpZCBzY2hlbWUgaW4gYWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzKSB7Ci0gICAgICAgIGlmIChbc2NoZW1lIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBzY2hlbWVzLmFwcGVuZCgoTlNTdHJp
bmcgKilzY2hlbWUpOwotICAgIH0KLQotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNl
dEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyhXVEZNb3ZlKHNjaGVtZXMpKTsKKyAgICBfcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMobWFr
ZVZlY3RvcjxTdHJpbmc+KGFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcykpOwogfQogCiAtIChO
U1N0cmluZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50
V29ybGRJbnRlcm5hbC5oCmluZGV4IDc1OTFiZWNlZTE0ZjAzNDg2NmIxNzE3NGI5ZTczMjUzNjhm
MGI0NDkuLjI4NmQyYjMyNDYxY2RhODIzNTJlOWJmYmFkMjU0NWI2NGUzMmM4Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxk
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRXb3JsZEludGVybmFsLmgKQEAgLTI3LDI2ICsyNyw2IEBACiAKIEBjbGFzcyBXS0Nv
bnRlbnRXb3JsZDsKIAotbmFtZXNwYWNlIEFQSSB7Ci0KLWlubGluZSBWZWN0b3I8V1RGOjpTdHJp
bmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkgKmlucHV0KQotewotICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gdmVjdG9yOwotCi0gICAgTlNVSW50ZWdlciBzaXplID0gaW5wdXQuY291bnQ7Ci0gICAg
aWYgKCFzaXplKQotICAgICAgICByZXR1cm4gdmVjdG9yOwotCi0gICAgdmVjdG9yLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0gICAgZm9yIChpZCBzdHJpbmcgOiBpbnB1dCkgewotICAg
ICAgICBpZiAoW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAg
ICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdHJpbmcpOwotICAgIH0KLSAgICByZXR1cm4g
dmVjdG9yOwotfQotCi19Ci0KIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRlbnRXb3JsZCAoKSA8V0tP
YmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgUmV0YWluUHRyPFdLQ29udGVudFdvcmxkPiBfY29udGVu
dFdvcmxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDY0MjNiY2I5NWM3NjNmNDBmNzU0YjI5ZTAxMzFlYTg0
ZmMwZTEzYjguLjQ2YWY4YWQyYmM0OTI2ZmFlODEyOTRhZTZiYTI4OTMxN2E4NDcwYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxl
U2hlZXQubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldlYktpdDJJbml0aWFsaXplLmgi
CiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJ
bnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbXBsZW1l
bnRhdGlvbiBfV0tVc2VyU3R5bGVTaGVldAogCkBAIC03MSw3ICs3Miw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seToo
Qk9PTClmb3JNYWluCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBn
ZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9y
IGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktp
dDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVz
ZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5n
KHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIG1ha2VW
ZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5
QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg0LDcgKzg1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZv
ck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRl
VW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRv
bmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0
aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdp
bmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxp
c3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9u
bHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJ
bldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hl
ZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwg
X3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdh
Y3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
VG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
NzZkZmZmZTczY2NkMDczNGFjMGY5MjM3MDBhYWVmNzc3MDViZWE5NC4uNDZhZjczYjQzNzlmYzc3
NjFmMDRkMzI0YmM2YmJhZDdkZmYxNDg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEyNiw2ICsxMjYsNyBAQAogI2ltcG9ydCA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9j
Zi9UeXBlQ2FzdHNDRi5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgSEFWRShUT1VDSF9CQVIp
ICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTM2NjgsNyArMzY2
OSw3IEBAIGlkIFdlYlZpZXdJbXBsOjphY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoTlNTdHJp
bmcgKmF0dHJpYnV0ZSwgaWQgcGFyYW1ldGVyKQogCiAgICAgICAgICAgICBpZiAoIWNoaWxkKQog
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6Y2hpbGRdOworICAgICAgICByZXR1cm4gQFtjaGlsZF07CiAgICAgfQogICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmli
dXRlXSkKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZTsKQEAgLTQwNDMs
MTEgKzQwNDQsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8
TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lczsKLQotICAgICAg
ICBmb3IgKE5TU3RyaW5nICpmaWxlIGluIGZpbGVzKQotICAgICAgICAgICAgZmlsZU5hbWVzLmFw
cGVuZChmaWxlKTsKLSAgICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVl
ZGVkKGZpbGVOYW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZv
clVwbG9hZCk7CisgICAgICAgIG1fcGFnZS0+Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRl
ZChtYWtlVmVjdG9yPFN0cmluZz4oZmlsZXMpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5k
Ym94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICB9CiAKICAgICBTdHJpbmcgZHJhZ2dpbmdQYXN0
ZWJvYXJkTmFtZSA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZTsKQEAgLTQz
MzUsNyArNDMzMiw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxl
c0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgaWYgKCFtX3Byb21p
c2VkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoU3Ry
aW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKKyAgICByZXR1cm4gQFtbcGF0aCBs
YXN0UGF0aENvbXBvbmVudF1dOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlKT4mJiBjb21wbGV0aW9uKQpAQCAtNDc0OSw3ICs0NzQ2LDcgQEAgVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4gV2ViVmlld0ltcGw6OmNvbGxlY3RLZXlib2FyZExheW91dENv
bW1hbmRzRm9yRXYKICAgICBpZiAoTlNUZXh0SW5wdXRDb250ZXh0ICpjb250ZXh0ID0gaW5wdXRD
b250ZXh0KCkpCiAgICAgICAgIFtjb250ZXh0IGhhbmRsZUV2ZW50QnlLZXlib2FyZExheW91dDpl
dmVudF07CiAgICAgZWxzZQotICAgICAgICBbbV92aWV3IGludGVycHJldEtleUV2ZW50czpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6ZXZlbnRdXTsKKyAgICAgICAgW21fdmlldyBpbnRlcnByZXRL
ZXlFdmVudHM6QFtldmVudF1dOwogCiAgICAgbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzID0g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9t
YWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IGE4YTdiNjVmNDZmMDkwZTcz
MGZhYzI5ZDliMWEzZDExZTM0MzQ3YmYuLjU2ZjdlZDI0ODI2ZjQ5NzQ2NzYzOWYwMWNmMDk4MjFl
NWVmNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFj
L1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNp
bXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5o
PgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgV0tQbGFjZWhvbGRl
ck1vZGFsV2luZG93IDogTlNXaW5kb3cgCkBAIC0yNTEsMTEgKzI1Miw3IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFN0cmluZyYgbGF1bmNoUGF0aCwgY29u
c3QgVmVjdG9yPFN0CiAgICAgaWYgKCFzaG91bGRMYXVuY2hQcm9jZXNzKG1fcGx1Z2luUHJvY2Vz
c0F0dHJpYnV0ZXMsIGxhdW5jaFBhdGgsIGFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFy
Z3VtZW50c0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OmFyZ3VtZW50cy5zaXplKCldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgW2FyZ3VtZW50c0FycmF5IGFkZE9iamVjdDoo
TlNTdHJpbmcgKilhcmd1bWVudHNbaV1dOwotCi0gICAgW05TVGFzayBsYXVuY2hlZFRhc2tXaXRo
TGF1bmNoUGF0aDpsYXVuY2hQYXRoIGFyZ3VtZW50czphcmd1bWVudHNBcnJheS5nZXQoKV07Cisg
ICAgW05TVGFzayBsYXVuY2hlZFRhc2tXaXRoTGF1bmNoUGF0aDpsYXVuY2hQYXRoIGFyZ3VtZW50
czpjcmVhdGVOU0FycmF5KGFyZ3VtZW50cykuZ2V0KCldOwogICAgIGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOwogfQogCkBAIC0yNjUsMTAgKzI2MiwxMCBAQCBzdGF0aWMgYm9vbCBpc0phdmFVcGRh
dGVyVVJMKGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmli
dQogICAgIGlmICghW3VybCBpc0ZpbGVVUkxdKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBOU0FycmF5ICpqYXZhVXBkYXRlckFwcE5hbWVzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czpAIkphdmEgVXBkYXRlci5hcHAiLCBAIkphdmFVcGRhdGVyLmFwcCIsIG5pbF07CisgICAgTlNB
cnJheSAqamF2YVVwZGF0ZXJBcHBOYW1lcyA9IEBbQCJKYXZhIFVwZGF0ZXIuYXBwIiwgQCJKYXZh
VXBkYXRlci5hcHAiXTsKIAogICAgIGZvciAoTlNTdHJpbmcgKmphdmFVcGRhdGVyQXBwTmFtZSBp
biBqYXZhVXBkYXRlckFwcE5hbWVzKSB7Ci0gICAgICAgIE5TU3RyaW5nICpqYXZhVXBkYXRlclBh
dGggPSBbTlNTdHJpbmcgcGF0aFdpdGhDb21wb25lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6KE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBA
IkNvbnRlbnRzL1Jlc291cmNlcyIsIGphdmFVcGRhdGVyQXBwTmFtZSwgbmlsXV07CisgICAgICAg
IE5TU3RyaW5nICpqYXZhVXBkYXRlclBhdGggPSBbTlNTdHJpbmcgcGF0aFdpdGhDb21wb25lbnRz
OkBbKE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBA
IkNvbnRlbnRzL1Jlc291cmNlcyIsIGphdmFVcGRhdGVyQXBwTmFtZV1dOwogICAgICAgICBpZiAo
W3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpqYXZhVXBkYXRlclBhdGhdKQogICAgICAgICAgICAg
cmV0dXJuIFlFUzsKICAgICB9CkBAIC0yODksMjAgKzI4NiwxNiBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6bGF1bmNoQXBwbGljYXRpb25BdFVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgVgogICAgIGlmICghc2hvdWxkTGF1bmNoQXBwbGljYXRpb25BdFVSTChtX3BsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzLCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBhcmd1bWVudHNB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTph
cmd1bWVudHMuc2l6ZSgpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIFthcmd1bWVudHNBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5n
ICopYXJndW1lbnRzW2ldXTsKLQotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCi0gICAgTlNEaWN0aW9uYXJ5ICpjb25maWd1cmF0aW9uID0gW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdDphcmd1bWVudHNBcnJheS5nZXQoKSBmb3JLZXk6TlNXb3Jrc3BhY2VM
YXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzXTsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQHsgTlNXb3Jrc3BhY2VMYXVuY2hD
b25maWd1cmF0aW9uQXJndW1lbnRzOiBjcmVhdGVOU0FycmF5KGFyZ3VtZW50cykuZ2V0KCkgfTsK
ICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gbGF1bmNoQXBwbGljYXRpb25BdFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxTdHJpbmddIG9wdGlvbnM6TlNXb3Jrc3BhY2VMYXVu
Y2hBc3luYyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZXJyb3I6bnVsbHB0cl07Ci0gICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECitBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAogc3RhdGljIGJv
b2wgaXNTaWx2ZXJsaWdodFByZWZlcmVuY2VzVVJMKGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1
dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7
Ci0gICAgTlNVUkwgKnNpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoQ29tcG9uZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihOU1N0cmluZyAqKXBs
dWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0aCwgQCJDb250ZW50cy9SZXNvdXJj
ZXMvU2lsdmVybGlnaHQgUHJlZmVyZW5jZXMuYXBwIiwgbmlsXV07CisgICAgTlNVUkwgKnNpbHZl
cmxpZ2h0UHJlZmVyZW5jZXNVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoQ29tcG9uZW50czpA
WyhOU1N0cmluZyAqKXBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0aCwgQCJD
b250ZW50cy9SZXNvdXJjZXMvU2lsdmVybGlnaHQgUHJlZmVyZW5jZXMuYXBwIl1dOwogCiAgICAg
cmV0dXJuIFtbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxTdHJpbmddIGlzRXF1YWw6c2lsdmVybGln
aHRQcmVmZXJlbmNlc1VSTF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQppbmRleCBkYjBh
YmI4MjE2ZDZjZTQxN2RiNThjYTZlYTlkMGVlZjRhNWIzM2M5Li4yYjg4YzlmYzcyMmU2MGRmYTU1
YjE3ZDk4MTFmYmY5MmJmYzE5ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KQEAgLTUz
LDggKzUzLDggQEAgSGlkU2VydmljZTo6SGlkU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7
CiAgICAgbV9tYW5hZ2VyID0gYWRvcHRDRihJT0hJRE1hbmFnZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwga0lPSElET3B0aW9uc1R5cGVOb25lKSk7CiAgICAgTlNEaWN0aW9uYXJ5ICptYXRj
aGluZ0RpY3Rpb25hcnkgPSBAewotICAgICAgICBAa0lPSElEUHJpbWFyeVVzYWdlUGFnZUtleTog
YWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDprQ3RhcEhpZFVzYWdlUGFnZV0pLmdldCgp
LAotICAgICAgICBAa0lPSElEUHJpbWFyeVVzYWdlS2V5OiBhZG9wdE5TKFtOU051bWJlciBudW1i
ZXJXaXRoSW50OmtDdGFwSGlkVXNhZ2VdKS5nZXQoKQorICAgICAgICBAa0lPSElEUHJpbWFyeVVz
YWdlUGFnZUtleTogQChrQ3RhcEhpZFVzYWdlUGFnZSksCisgICAgICAgIEBrSU9ISURQcmltYXJ5
VXNhZ2VLZXk6IEAoa0N0YXBIaWRVc2FnZSksCiAgICAgfTsKICAgICBJT0hJRE1hbmFnZXJTZXRE
ZXZpY2VNYXRjaGluZyhtX21hbmFnZXIuZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
bWF0Y2hpbmdEaWN0aW9uYXJ5KTsKICAgICBJT0hJRE1hbmFnZXJSZWdpc3RlckRldmljZU1hdGNo
aW5nQ2FsbGJhY2sobV9tYW5hZ2VyLmdldCgpLCBkZXZpY2VBZGRlZENhbGxiYWNrLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCA3NDg4N2YxNzIz
NGNhYzc3M2FhMTI1MWI3ODA1MDRhYWZjZjVhYjQ2Li5kMGQ3NmFkNWNlZTgxZWIwODIxMTUxNTY3
ZDM1ZDZkMGQ4OGRmNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRl
c3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEgKiwgQXR0ZXN0YXQKIAogICAgICAg
ICBhdXRvIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3Jl
YXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+dXNl
ckNlcnRpZmljYXRlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtu
b3duQ2hhcmFjdGVyc10pLmdldCgpKSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25Jc3N1aW5n
Q0FDZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxM
LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFz
ZTY0RW5jb2RlZFN0cmluZzpjb25maWd1cmF0aW9uLmxvY2FsLT5pbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hh
cmFjdGVyc10pLmdldCgpKSk7Ci0gICAgICAgIGNhbGxiYWNrKFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6IChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbkNlcnRpZmljYXRlLmdldCgpLCAoX19icmlk
Z2UgaWQpYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZS5nZXQoKSwgbmlsXSwgTlVMTCk7
CisgICAgICAgIGNhbGxiYWNrKEBbIChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbkNlcnRpZmljYXRl
LmdldCgpLCAoX19icmlkZ2UgaWQpYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZS5nZXQo
KV0sIE5VTEwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmMDUyMDQ2N2FkYTU5
OWVkNDM3YmIxMTdiZWMzMWFjNmFjNjJlNzMzLi41NGI5Yzc3ODgxZWYzNjJlMGQ5NWU4ZmY2ZTA1
YjkzZmI2ZmM1MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTExOSw4ICsxMTksNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYktp
dC9XZWJTZWxlY3Rpb25SZWN0Lmg+IC8vIEZJWE1FOiBXSzIgc2hvdWxkIG5vdCBpbmNsdWRlIFdl
YktpdCBoZWFkZXJzIQotI2ltcG9ydCA8cGFsL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRM
aW5rLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV2Vi
S2l0IHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXRMZWdhY3kgaGVhZGVycyEKICNpbXBvcnQgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0RhdGFE
ZXRlY3RvcnNDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2Vz
U1BJLmg+CkBAIC0xMzUsNiArMTM0LDcgQEAKICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE2OCw2ICsx
NjgsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNl
bmRpZgogCisjaW1wb3J0IDxwYWwvaW9zL01hbmFnZWRDb25maWd1cmF0aW9uU29mdExpbmsuaD4K
KwogI2lmIEhBVkUoTElOS19QUkVWSUVXKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIHN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IHdlYmtpdFNob3dMaW5rUHJldmlld3NQcmVmZXJlbmNlS2V5ID0gQCJX
ZWJLaXRTaG93TGlua1ByZXZpZXdzIjsKICNlbmRpZgpAQCAtMzE4NSw3ICszMTg3LDcgQEAgLSAo
TlNEaWN0aW9uYXJ5ICopdGV4dFN0eWxpbmdBdFBvc2l0aW9uOihVSVRleHRQb3NpdGlvbiAqKXBv
c2l0aW9uIGluRGlyZWN0aW9uOigKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6KGlkKWZvbnQu
Z2V0KCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogICAgIAogICAgIGlmICh0eXBpbmdB
dHRyaWJ1dGVzICYgV2ViS2l0OjpBdHRyaWJ1dGVVbmRlcmxpbmUpCi0gICAgICAgIFtyZXN1bHQg
c2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Ok5TVW5kZXJsaW5lU3R5bGVTaW5nbGVd
IGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07CisgICAgICAgIFtyZXN1bHQg
c2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5Ok5TVW5kZXJsaW5lU3R5
bGVBdHRyaWJ1dGVOYW1lXTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zOTg0LDEwICsz
OTg2LDcgQEAgLSAodm9pZClyZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2VsZWN0aW9uQ29tbWFuZHNX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlMKICAgICAgICAgfQogCiAgICAgICAgIHN0
cm9uZ1NlbGYtPl9wYWdlLT5yZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oW2NvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoYXV0byYgcmVjdHMpIHsKLSAgICAgICAgICAg
IGF1dG8gcmVjdHNBc1ZhbHVlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTpyZWN0cy5zaXplKCldKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgZmxv
YXRSZWN0IDogcmVjdHMpCi0gICAgICAgICAgICAgICAgW3JlY3RzQXNWYWx1ZXMgYWRkT2JqZWN0
OltOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpmbG9hdFJlY3RdXTsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb24ocmVjdHNBc1ZhbHVlcy5nZXQoKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uKGNyZWF0
ZU5TQXJyYXkocmVjdHMpLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC03Mzg2
LDcgKzczODUsNyBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5p
bmdPckFkZGluZ1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaQogICAgIGZvciAoTlNJdGVtUHJv
dmlkZXIgKml0ZW1Qcm92aWRlciBpbiBhZGp1c3RlZEl0ZW1Qcm92aWRlcnMpIHsKICAgICAgICAg
YXV0byBpdGVtID0gYWRvcHROUyhbW1VJRHJhZ0l0ZW0gYWxsb2NdIGluaXRXaXRoSXRlbVByb3Zp
ZGVyOml0ZW1Qcm92aWRlcl0pOwogICAgICAgICBbaXRlbSBfc2V0UHJpdmF0ZUxvY2FsQ29udGV4
dDpAKHN0YWdlZERyYWdTb3VyY2UuaXRlbUlkZW50aWZpZXIpXTsKLSAgICAgICAgW2RyYWdJdGVt
cyBhZGRPYmplY3Q6aXRlbS5hdXRvcmVsZWFzZSgpXTsKKyAgICAgICAgW2RyYWdJdGVtcyBhZGRP
YmplY3Q6aXRlbS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIGRyYWdJdGVtczsKQEAgLTg0
MTYsNyArODQxNSw2IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFj
ZUl0ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW0KICAgICAgICAgICAgICAgICBAImlz
SW1hZ2UiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNJ
bWFnZV0sCiAgICAgICAgICAgICAgICAgQCJpbWFnZVVSTCI6IF9wb3NpdGlvbkluZm9ybWF0aW9u
LmltYWdlVVJMLmlzVmFsaWQoKSA/IFdURjo6dXNlclZpc2libGVTdHJpbmcoX3Bvc2l0aW9uSW5m
b3JtYXRpb24uaW1hZ2VVUkwpIDogQCIiCiAgICAgICAgICAgICB9IH07Ci0KICAgICAgICAgTlNT
dHJpbmcgKnVybCA9IFtfcHJldmlld0l0ZW1Db250cm9sbGVyIHByZXZpZXdEYXRhXVtVSVByZXZp
ZXdEYXRhTGlua107CiAgICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJmYWNlSXRlbTogQHsKICAg
ICAgICAgICAgIEAidXJsIjogdXJsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDJmOTJiYjZlNGFjMGFlNzYz
ODFkY2Q5MTYxMWQ1NmNlOWYyOWE2YjMuLmQ4YjMwMDZiNWQwMTkyYjAwOWMzZGFmMWUxZmIwNWZl
NWFkZjgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KQEAgLTY2NiwxMiArNjY2LDEyIEBAIC0gKHZvaWQpaW1h
Z2VQaWNrZXJDb250cm9sbGVyOihVSUltYWdlUGlja2VyQ29udHJvbGxlciAqKWltYWdlUGlja2Vy
IGRpZEZpbmlzaFBpCiAKICAgICBbc2VsZiBfZGlzbWlzc0Rpc3BsYXlBbmltYXRlZDpZRVNdOwog
Ci0gICAgW3NlbGYgX3Byb2Nlc3NNZWRpYUluZm9EaWN0aW9uYXJpZXM6W05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0OmluZm9dCisgICAgW3NlbGYgX3Byb2Nlc3NNZWRpYUluZm9EaWN0aW9uYXJpZXM6
QFtpbmZvXQogICAgICAgICBzdWNjZXNzQmxvY2s6XihOU0FycmF5ICpwcm9jZXNzZWRSZXN1bHRz
LCBOU1N0cmluZyAqZGlzcGxheVN0cmluZykgewogICAgICAgICAgICAgQVNTRVJUKFtwcm9jZXNz
ZWRSZXN1bHRzIGNvdW50XSA9PSAxKTsKICAgICAgICAgICAgIF9XS0ZpbGVVcGxvYWRJdGVtICpy
ZXN1bHQgPSBbcHJvY2Vzc2VkUmVzdWx0cyBvYmplY3RBdEluZGV4OjBdOwogICAgICAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAg
ICAgICBbc2VsZiBfY2hvb3NlRmlsZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnJlc3VsdC5m
aWxlVVJMXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOnJlc3VsdC5kaXNw
bGF5SW1hZ2VdOworICAgICAgICAgICAgICAgIFtzZWxmIF9jaG9vc2VGaWxlczpAW3Jlc3VsdC5m
aWxlVVJMXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOnJlc3VsdC5kaXNw
bGF5SW1hZ2VdOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbHVyZUJs
b2NrOl57CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtQ29sb3JQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtQ29sb3JQaWNrZXIubW0KaW5kZXggZmUzOWY4MzdiZjQ0NGVlZDNhOTgwYWI5N2ZhZjQ0NjNi
NzA4NzBkZC4uY2U2Nzg0MmM3ZmUwM2I1MWM2NjBhMTg5NjUyMjM3MjllMTU1ZmZiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yUGlja2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBp
Y2tlci5tbQpAQCAtMTEyLDggKzExMiw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUgY29sb3JNYXRyaXg6KE5TQXJyYXk8TlNBcnJheTxVSUNvbG9yCiAgICAg
ICAgICAgICBbYnV0dG9ucyBhZGRPYmplY3Q6YnV0dG9uXTsKICAgICAgICAgICAgIFtzZWxmIGFk
ZFN1YnZpZXc6YnV0dG9uXTsKICAgICAgICAgfQotICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4g
Y29sb3JCdXR0b25zUm93ID0gYnV0dG9uczsKLSAgICAgICAgW2NvbG9yQnV0dG9ucyBhZGRPYmpl
Y3Q6Y29sb3JCdXR0b25zUm93LmdldCgpXTsKKyAgICAgICAgW2NvbG9yQnV0dG9ucyBhZGRPYmpl
Y3Q6YnV0dG9uc107CiAgICAgfQogICAgIF9jb2xvckJ1dHRvbnMgPSBjb2xvckJ1dHRvbnM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4
IGZlNGU4NDY2OTgwYjczNThhMDljYTExOWQyYzIzNzBjZjVkOTE1ZmQuLjcyM2IzMjZmNGY0ZjI4
OGRlZjRiMDM3YzY0NzI2NWQ1ZDliOThlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KIAogc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JU
eXBlIGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUg
YWx0ZXJuYXRpdmVUZXh0VHlwZSkKIHsKQEAgLTY1LDI4ICs2NiwyNSBAQCBDb3JyZWN0aW9uUGFu
ZWw6On5Db3JyZWN0aW9uUGFuZWwoKQogdm9pZCBDb3JyZWN0aW9uUGFuZWw6OnNob3coTlNWaWV3
ICp2aWV3LCBXZWJWaWV3SW1wbCYgd2ViVmlld0ltcGwsIEFsdGVybmF0aXZlVGV4dFR5cGUgdHlw
ZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsKICAg
ICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9y
ZWQsIGZhbHNlKTsKLSAgICAKKwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gd2ViVmlld0ltcGwuc3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcoKTsKIAotICAgIE5TU3RyaW5nKiByZXBsYWNlZFN0cmluZ0FzTlNT
dHJpbmcgPSByZXBsYWNlZFN0cmluZzsKLSAgICBOU1N0cmluZyogcmVwbGFjZW1lbnRTdHJpbmdB
c05TU3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgTlNTdHJpbmcgKnJlcGxhY2VkU3Ry
aW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOworICAgIE5TU3RyaW5nICpyZXBsYWNlbWVu
dFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKKwogICAgIG1fdmlldyA9IHZp
ZXc7CiAgICAgbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZyA9IHNwZWxsQ2hlY2tlckRvY3VtZW50
VGFnOwogICAgIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgaW5kaWNhdG9yVHlwZSA9IGNvcnJl
Y3Rpb25JbmRpY2F0b3JUeXBlKHR5cGUpOwogICAgIAotICAgIE5TTXV0YWJsZUFycmF5KiBhbHRl
cm5hdGl2ZVN0cmluZ3MgPSAwOwotICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNl
bWVudFN0cmluZ3Muc2l6ZSgpOwotICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRP
YmplY3Q6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07Ci0gICAg
fQorICAgIFJldGFpblB0cjxOU0FycmF5PiBhbHRlcm5hdGl2ZVN0cmluZ3M7CisgICAgaWYgKCFh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpCisgICAgICAgIGFsdGVybmF0
aXZlU3RyaW5ncyA9IGNyZWF0ZU5TQXJyYXkoYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
OwogCiAgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdOwotICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRp
Y2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5n
QXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmlu
Z0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICBbc3BlbGxD
aGVja2VyIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOmluZGljYXRvclR5cGUgcHJpbWFy
eVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFs
dGVybmF0aXZlU3RyaW5ncy5nZXQoKSBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcq
IGFjY2VwdGVkU3RyaW5nKSB7CiAgICAgICAgIGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQod2Vi
Vmlld0ltcGwsIGFjY2VwdGVkU3RyaW5nLCByZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcsIHJlcGxh
Y2VtZW50U3RyaW5nQXNOU1N0cmluZywgaW5kaWNhdG9yVHlwZSk7CiAgICAgfV07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KaW5kZXggZDc4NmYx
MWQzOTNjN2U0Yjc4OGJjZWMzNjdlYWUwOTZmN2Y3NTJlMS4uMDE2MTlhNTgzYTllNjg2ZDA0NjZh
MjUwMmViNTJhN2M5ZjUwZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9U
ZXh0Q2hlY2tlck1hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
TlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIEBpbnRlcmZhY2UgTlNTcGVsbENo
ZWNrZXIgKFdlYk5TU3BlbGxDaGVja2VyRGV0YWlscykKQEAgLTQzNSwxMyArNDM2LDEwIEBAIHZv
aWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoU3BlbGxE
b2N1bWVudFRhZywgY29uc3QgU3RyCiAKIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIGJhZEdy
YW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdyYW1tYXJEZXRhaWwpCiB7Ci0gICAg
YXV0byBjb3JyZWN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwotICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpCi0gICAgICAg
IFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOwogICAgIE5TRGljdGlvbmFyeSAqZGV0YWls
ID0gQHsKICAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpn
cmFtbWFyRGV0YWlsLnJhbmdlXSwKICAgICAgICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDog
Z3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24sCi0gICAgICAgIE5TR3JhbW1hckNvcnJlY3Rp
b25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25zIDog
Y3JlYXRlTlNBcnJheShncmFtbWFyRGV0YWlsLmd1ZXNzZXMpLmdldCgpLAogICAgIH07CiAgICAg
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxX
aXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpkZXRhaWxdOwogfQpAQCAt
NDU5LDEwICs0NTcsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZChTcGVs
bERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cgogICAgICAgICBbY2hlY2tl
ciBjaGVja1N0cmluZzpjb250ZXh0IHJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRleHQubGVuZ3Ro
KCkpIHR5cGVzOk5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IG9wdGlvbnM6b3B0aW9ucyBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRUYWcgb3J0aG9ncmFwaHk6Jm9ydGhv
Z3JhcGh5IHdvcmRDb3VudDowXTsKICAgICAgICAgbGFuZ3VhZ2UgPSBbY2hlY2tlciBsYW5ndWFn
ZUZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0aCgpKSBpblN0cmluZzpj
b250ZXh0IG9ydGhvZ3JhcGh5Om9ydGhvZ3JhcGh5XTsKICAgICB9Ci0gICAgTlNBcnJheSogc3Ry
aW5nc0FycmF5ID0gW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCB3
b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1
bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZ107Ci0KLSAgICBmb3IgKE5TU3RyaW5nICpndWVz
cyBpbiBzdHJpbmdzQXJyYXkpCi0gICAgICAgIGd1ZXNzZXMuYXBwZW5kKGd1ZXNzKTsKKyAgICBn
dWVzc2VzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFtjaGVja2VyIGd1ZXNzZXNGb3JXb3JkUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgd29yZC5sZW5ndGgoKSkgaW5TdHJpbmc6d29yZCBsYW5ndWFnZTpsYW5n
dWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRUYWddKTsKIH0KIAogdm9p
ZCBUZXh0Q2hlY2tlcjo6bGVhcm5Xb3JkKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYg
d29yZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5n
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpp
bmRleCAwMWU0MzIxNjBkZjI5YzEzYjI0ZTMwYWRhZmUxZDNmZjVhNDkxYzYxLi41OTA0YzQyNzlm
ODFmOWJjMzllZmZiZGVhMGY2Njg4ODYxNmRkOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0xNDUsOCArMTQ1LDggQEAgLSAodm9pZClf
YWRqdXN0UHJpbnRpbmdNYXJnaW5zRm9ySGVhZGVyQW5kRm9vdGVyCiAgICAgICAgIEFTU0VSVCgh
W2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRPcmlnaW5hbEJvdHRvbVByaW50aW5n
TWFyZ2luS2V5XSk7CiAgICAgICAgIG9yaWdpbmFsVG9wTWFyZ2luID0gW2luZm8gdG9wTWFyZ2lu
XTsKICAgICAgICAgb3JpZ2luYWxCb3R0b21NYXJnaW4gPSBbaW5mbyBib3R0b21NYXJnaW5dOwot
ICAgICAgICBbaW5mb0RpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOm9yaWdpbmFsVG9wTWFyZ2luXSBmb3JLZXk6V2ViS2l0T3JpZ2luYWxUb3BQcmludGluZ01h
cmdpbktleV07Ci0gICAgICAgIFtpbmZvRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6b3JpZ2luYWxCb3R0b21NYXJnaW5dIGZvcktleTpXZWJLaXRPcmlnaW5h
bEJvdHRvbVByaW50aW5nTWFyZ2luS2V5XTsKKyAgICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9i
amVjdDpAKG9yaWdpbmFsVG9wTWFyZ2luKSBmb3JLZXk6V2ViS2l0T3JpZ2luYWxUb3BQcmludGlu
Z01hcmdpbktleV07CisgICAgICAgIFtpbmZvRGljdGlvbmFyeSBzZXRPYmplY3Q6QChvcmlnaW5h
bEJvdHRvbU1hcmdpbikgZm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5L
ZXldOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChbb3JpZ2luYWxUb3BNYXJnaW5OdW1i
ZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CiAgICAgICAgIEFTU0VSVChbW2lu
Zm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRPcmlnaW5hbEJvdHRvbVByaW50aW5nTWFy
Z2luS2V5XSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDM5NjhlZGE2
M2RlZGUyOTA1ZWMyZjcwZTU1OWMxYjhkYTk0NDAyOGUuLjM2YWJkZmQyNDY1ZTRkZmQ1MTAyNDNk
ZjdmOWE3OGMxMGI5MWE3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIC8vIEZJWE1FOiBJbXBsZW1l
bnQgc2Nyb2xsRmluZE1hdGNoVG9WaXNpYmxlLgogLy8gRklYTUU6IFRoZSBOU1RleHRGaW5kZXIg
b3ZlcmxheSBkb2Vzbid0IG1vdmUgd2l0aCBzY3JvbGxpbmc7IHdlIHNob3VsZCBoYXZlIGEgbW9k
ZSB3aGVyZSB3ZSBtYW5hZ2UgdGhlIG92ZXJsYXkuCkBAIC0yNzAsMzEgKzI3MSwyMSBAQCAtICh2
b2lkKXNjcm9sbEZpbmRNYXRjaFRvVmlzaWJsZTooaWQgPE5TVGV4dEZpbmRlckFzeW5jaHJvbm91
c0RvY3VtZW50RmluZE1hdGNoPgogCiAjcHJhZ21hIG1hcmsgLSBGaW5kTWF0Y2hlc0NsaWVudAog
Ci1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGFycmF5RnJvbVJlY3RzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgbWF0Y2hSZWN0cykKLXsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG5zTWF0Y2hSZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTptYXRjaFJlY3RzLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgcmVjdCA6
IG1hdGNoUmVjdHMpCi0gICAgICAgIFtuc01hdGNoUmVjdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aFJlY3Q6cmVjdF1dOwotICAgIHJldHVybiBuc01hdGNoUmVjdHM7Ci19Ci0KIC0gKHZv
aWQpZGlkRmluZFN0cmluZ01hdGNoZXNXaXRoUmVjdHM6KGNvbnN0IFZlY3RvcjxWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4+JilyZWN0c0Zvck1hdGNoZXMgZGlkV3JhcEFyb3VuZDooQk9PTClkaWRX
cmFwQXJvdW5kCiB7CiAgICAgaWYgKF9maW5kUmVwbHlDYWxsYmFja3MuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlcGx5Q2FsbGJhY2sgPSBfZmluZFJlcGx5Q2FsbGJh
Y2tzLnRha2VGaXJzdCgpOwotICAgIHVuc2lnbmVkIG1hdGNoQ291bnQgPSByZWN0c0Zvck1hdGNo
ZXMuc2l6ZSgpOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWF0Y2hPYmplY3RzID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om1hdGNoQ291
bnRdKTsKKyAgICBhdXRvIG1hdGNoQ291bnQgPSByZWN0c0Zvck1hdGNoZXMuc2l6ZSgpOworICAg
IGF1dG8gbWF0Y2hPYmplY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5Om1hdGNoQ291bnRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bWF0Y2hDb3VudDsgaSsrKSB7CiAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBuc01hdGNoUmVj
dHM7Ci0KICAgICAgICAgaWYgKF91c2VQbGF0Zm9ybUZpbmRVSSkKLSAgICAgICAgICAgIG5zTWF0
Y2hSZWN0cyA9IGFycmF5RnJvbVJlY3RzKHJlY3RzRm9yTWF0Y2hlc1tpXSk7CisgICAgICAgICAg
ICBuc01hdGNoUmVjdHMgPSBjcmVhdGVOU0FycmF5KHJlY3RzRm9yTWF0Y2hlc1tpXSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG5zTWF0Y2hSZWN0cyA9IEBbXTsKLSAgICAgICAgUmV0YWlu
UHRyPFdLVGV4dEZpbmRlck1hdGNoPiBtYXRjaCA9IGFkb3B0TlMoW1tXS1RleHRGaW5kZXJNYXRj
aCBhbGxvY10gaW5pdFdpdGhDbGllbnQ6c2VsZiB2aWV3Ol92aWV3IGluZGV4OmkgcmVjdHM6bnNN
YXRjaFJlY3RzLmdldCgpXSk7Ci0gICAgICAgIFttYXRjaE9iamVjdHMgYWRkT2JqZWN0Om1hdGNo
LmdldCgpXTsKKyAgICAgICAgW21hdGNoT2JqZWN0cyBhZGRPYmplY3Q6YWRvcHROUyhbW1dLVGV4
dEZpbmRlck1hdGNoIGFsbG9jXSBpbml0V2l0aENsaWVudDpzZWxmIHZpZXc6X3ZpZXcgaW5kZXg6
aSByZWN0czpuc01hdGNoUmVjdHMuZ2V0KCldKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmVwbHlD
YWxsYmFjayhtYXRjaE9iamVjdHMuZ2V0KCksIGRpZFdyYXBBcm91bmQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25NYWMubW0KaW5kZXggM2JkOTQxYzcyODk3MTcwZWNjMTU3YjlmZWI1N2RhNTM3
MjhlODEzMy4uN2QyMDI0NDMwZTY1ZjEyZjczMjk3NzE2NzcxZDZhNjZiMWE5NmQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCkBAIC0zNzksMTAgKzM3OSwxMCBAQCAtICh2b2lk
KXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3Jt
YXRpb24mJilpbmZvcm1hdAogCiAtICh2b2lkKW5vdGlmeUFjY2Vzc2liaWxpdHlDbGllbnRzOihO
U1N0cmluZyAqKWluZm8KIHsKLSAgICBOU0RpY3Rpb25hcnk8TlNBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uVXNlckluZm9LZXksIGlkPiAqdXNlckluZm8gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIE5TQWNjZXNzaWJpbGl0eVByaW9yaXR5S2V5
LCBAKE5TQWNjZXNzaWJpbGl0eVByaW9yaXR5SGlnaCksCi0gICAgICAgIE5TQWNjZXNzaWJpbGl0
eUFubm91bmNlbWVudEtleSwgaW5mbywgbmlsXTsKLSAgICBOU0FjY2Vzc2liaWxpdHlQb3N0Tm90
aWZpY2F0aW9uV2l0aFVzZXJJbmZvKE5TQXBwLCBOU0FjY2Vzc2liaWxpdHlBbm5vdW5jZW1lbnRS
ZXF1ZXN0ZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKKyAgICBOU0FjY2Vzc2liaWxpdHlQb3N0
Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKE5TQXBwLCBOU0FjY2Vzc2liaWxpdHlBbm5vdW5jZW1l
bnRSZXF1ZXN0ZWROb3RpZmljYXRpb24sIEB7CisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVByaW9y
aXR5S2V5OiBAKE5TQWNjZXNzaWJpbGl0eVByaW9yaXR5SGlnaCksCisgICAgICAgIE5TQWNjZXNz
aWJpbGl0eUFubm91bmNlbWVudEtleTogaW5mbywKKyAgICB9KTsKIH0KIAogLSAodm9pZCltb3Zl
U2VsZWN0aW9uQnlEaXJlY3Rpb246KGNvbnN0IFN0cmluZyYpZGlyZWN0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBkMmQ5MGUzM2Yy
MjFjZGY2NDA2MTFlNjQ5YTVhYTE0ZmMxODEyZGE5Li44MzQzMDdjNjk1ZTg1YmJlMzI1MDVmODU0
OWJhNjE4ZTdmMjIzZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Vh
cmNoV2l0aFNwb3RsaWdodChjb25zdCBTdHJpbmcmIHN0cmluZykKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZWFyY2hUaGVXZWIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgTlNQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOwot
ICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6QFtsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOwog
ICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzpzdHJpbmcgZm9yVHlwZTpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKICAgICAKICAgICBOU1BlcmZvcm1TZXJ2aWNlKEAiU2VhcmNoIFdpdGgg
JVdlYlNlYXJjaFByb3ZpZGVyQCIsIHBhc3RlYm9hcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50
ZXJuYWxzLmgKaW5kZXggMTUxYjliY2UwODY1ODc3YWIzYjY4YjdhMTFhMGFjYzBlZTAyZTFkNS4u
N2EzZGU4M2IyYmFiMmZiNDY5MTA3NzFhNDZkZTkyYmY2NDYzNmU2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTUludGVybmFscy5oCkBAIC0xMDksOCArMTA5LDQgQEAgV0tET01UZXh0ICp0b1dLRE9N
VGV4dChXZWJDb3JlOjpUZXh0Kik7CiBXZWJDb3JlOjpSYW5nZSogdG9XZWJDb3JlUmFuZ2UoV0tE
T01SYW5nZSAqKTsKIFdLRE9NUmFuZ2UgKnRvV0tET01SYW5nZShXZWJDb3JlOjpSYW5nZSopOwog
Ci0vLyAtLSBIZWxwZXJzIC0tCi0KLU5TQXJyYXkgKnRvTlNBcnJheShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVy
bmFscy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NSW50ZXJuYWxzLm1tCmluZGV4IGY0MWU5NGMyZGE1ZmZkYWM5NjllMTI2NTY2OGEyYTNi
ODdhMzAwNjMuLjYzY2RkMmJjMmJjNGI3OThiNTg3NzBiNDMxZjNhMTY0ZDljMGRhY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCkBAIC0xNjEsMTMgKzE2MSw0IEBAIHN0YXRp
YyBXS0RPTVR5cGUgdG9XS0RPTVR5cGUoV2ViQ29yZVR5cGUgaW1wbCwgRE9NQ2FjaGU8V2ViQ29y
ZVR5cGUsIFdLRE9NVHlwZT4mCiAgICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKIH0K
IAotTlNBcnJheSAqdG9OU0FycmF5KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVj
dHMpCi17Ci0gICAgc2l6ZV90IHNpemUgPSByZWN0cy5zaXplKCk7Ci0gICAgTlNNdXRhYmxlQXJy
YXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdHNbaV1dXTsKLSAgICByZXR1cm4gYXJyYXk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCmluZGV4
IGY5YzU3MWRlZWI5MzVjZTg4YjQzN2FmYTY1ZDdmZmU3NjUzYmIxOTIuLmNkODA2MWVjMWIyMDNm
MDMzNDY3ZjU0MGI5MzdkMGMxYjcxYjg0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0KQEAg
LTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tE
T01JbnRlcm5hbHMuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1wbGVtZW50YXRpb24gV0tET01Ob2RlCiAKQEAg
LTExMiw3ICsxMTMsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwogICAgIF9pbXBsLT50ZXh0
UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBXZWJLaXQ6OnRvTlNBcnJheShyZWN0cyk7CisgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKQEAg
LTEyMSw4ICsxMjIsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tET01Ob2RlIChXS1ByaXZhdGUpCiAK
IC0gKFdLQnVuZGxlTm9kZUhhbmRsZVJlZilfY29weUJ1bmRsZU5vZGVIYW5kbGVSZWYKIHsKLSAg
ICBhdXRvIG5vZGVIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0
T3JDcmVhdGUoX2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSkubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggMjJiZTQ2MjZkYTMyYzYzNTU5ZDEwYTAyOGZhZWFmMmQy
YTY1Yzc2Zi4uYWM2ZmZiMWU5NzhjODM4ODEyYThiMTFiMzcyMjQ5MThlZWUyOGU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJXS0RPTUlu
dGVybmFscy5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9WaXNpYmxlVW5pdHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBA
aW1wbGVtZW50YXRpb24gV0tET01SYW5nZQogCkBAIC0xMzAsNyArMTMxLDcgQEAgLSAoTlNBcnJh
eSAqKXRleHRSZWN0cwogICAgIF9pbXBsLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJl
Y3RzOwogICAgIF9pbXBsLT5hYnNvbHV0ZVRleHRSZWN0cyhyZWN0cyk7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9OU0FycmF5KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShyZWN0cyku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV0tET01SYW5nZSAqKXJhbmdlQnlFeHBhbmRpbmdUb1dv
cmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczooTlNVSW50ZWdlciljaGFyYWN0ZXJzIGluRGlyZWN0aW9u
OihXS0RPTVJhbmdlRGlyZWN0aW9uKWRpcmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVN
YWMubW0KaW5kZXggMGU4OTRmYzQ3MzFjNDc4OThkZGQ0NmEwMTI5NTc3ZWRhODU3NDRlZC4uYTZk
YTkxOWEyMmY3NWQ5NzNhNTk3YWM5ODExMzc4YWMyMmNkZjc2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVj
dGVkQnVuZGxlTWFjLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
c2V0QnVuZGxlUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBJUEM6OkRhdGFSZWZl
cmUKICAgICB9CiAKICAgICBpZiAoIW1fYnVuZGxlUGFyYW1ldGVycyAmJiBwYXJhbWV0ZXIpCi0g
ICAgICAgIG1fYnVuZGxlUGFyYW1ldGVycyA9IGFkb3B0TlMoW1tXS1dlYlByb2Nlc3NCdW5kbGVQ
YXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6W05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XV0pOworICAgICAgICBtX2J1bmRsZVBhcmFtZXRlcnMgPSBhZG9wdE5TKFtbV0tXZWJQcm9j
ZXNzQnVuZGxlUGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OkB7IH1dKTsKIAog
ICAgIFttX2J1bmRsZVBhcmFtZXRlcnMgc2V0UGFyYW1ldGVyOnBhcmFtZXRlciBmb3JLZXk6a2V5
XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbQppbmRleCA1NjYxZWY5NmZhMWZlNDQ4
ZWQyNWE2NWYzZjRlYWFlMDE1NjNiZDkyLi4zNTEzYjAzODQ0ZWMwMDAwMWNkOGY0NzVjNjQ2YjA2
ZTkwMDRlMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1tCkBAIC00Myw3ICs0Myw3
IEBAIHN0YXRpYyB2b2lkIG1ha2VSZW5kZXJMYXllcihDQUxheWVyICpwbHVnaW5MYXllciwgdWlu
dDMyX3QgbGF5ZXJIb3N0aW5nQ29udGV4dElECiAgICAgQ0FMYXllciAqcmVuZGVyTGF5ZXIgPSBb
Q0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpsYXllckhvc3RpbmdDb250ZXh0
SURdOwogICAgIFtyZW5kZXJMYXllciBzZXRGcmFtZTpbcGx1Z2luTGF5ZXIgYm91bmRzXV07CiAg
ICAgW3JlbmRlckxheWVyIHNldEF1dG9yZXNpemluZ01hc2s6a0NBTGF5ZXJXaWR0aFNpemFibGUg
fCBrQ0FMYXllckhlaWdodFNpemFibGVdOwotICAgIFtwbHVnaW5MYXllciBzZXRTdWJsYXllcnM6
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnJlbmRlckxheWVyXV07CisgICAgW3BsdWdpbkxheWVy
IHNldFN1YmxheWVyczpAW3JlbmRlckxheWVyXV07CiB9CiAKIFBsYXRmb3JtTGF5ZXIqIFBsdWdp
blByb3h5OjpwbHVnaW5MYXllcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAyOTgwMjRmYjk5NWMxOGI3YWRlYzhkMmI0ZWJj
MGE4YzdlMzI5NzNkLi4yYmY5MDliYWE4ODkzMjI3YzkwN2Q0NGM4MjBmNzNlNzk2OTNiMjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTkyLDYgKzkyLDcgQEAKICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAjaW1wb3J0IDx3dGYv
V1RGU2VtYXBob3JlLmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
I2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCkBAIC0yMzMwLDEwICsyMzMxLDcgQEAgdm9p
ZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oKQogCiB2b2lkIFBERlBsdWdp
bjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJy
YXkgKml0ZW1zLCBOU0FycmF5ICp0eXBlcykKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJv
YXJkVHlwZXM7Ci0KLSAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIHR5cGVzKQotICAgICAgICBw
YXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOworICAgIGF1dG8gcGFzdGVib2FyZFR5cGVzID0g
bWFrZVZlY3RvcjxTdHJpbmc+KHR5cGVzKTsKIAogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7
CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCA3MGU1Mjg1NjQ2ZmY4ZGY1NmE5ZDI1MjE3NDhiZmQ1YWY4Y2M0YzUxLi40MjdkNDQyYTYzMjk1
YmJmYTk0ZDI5NTlmZmI0N2Y0ZGVlODI4MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzcxMCw3ICszNzEwLDcgQEAg
dm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogCiB2b2lkIFdlYlBh
Z2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxv
Y2spCiB7Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90
aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0
aW9uIG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3VzcGVuZGVkVW5kZXJMb2NrIjogW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOmlzU3VzcGVuZGVkVW5kZXJMb2NrXX1dOworICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViVUlB
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsIHVzZXJJ
bmZvOkB7QCJpc1N1c3BlbmRlZFVuZGVyTG9jayI6IEAoaXNTdXNwZW5kZWRVbmRlckxvY2spfV07
CiAKICAgICBtX2lzU3VzcGVuZGVkVW5kZXJMb2NrID0gaXNTdXNwZW5kZWRVbmRlckxvY2s7CiAg
ICAgZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6QmFja2dyb3VuZEFwcGxp
Y2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA5
YzA4ODdlNjkzZTI4OGVjNGU3YTNlMDMwN2Q2ZGM3MTk5OTJkOGQ0Li4wMjhhODhjMTY3NDkwNzkw
ZjRhYWY2NGU2NWFjN2EwNTA2YjYzZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkKIAogICAgIC8vIFRoaXMgaXMgYSBzaWduYWwg
dG8gbWVkaWEgZnJhbWV3b3JrczsgaXQgZG9lcyBub3QgYWN0aXZlbHkgcGF1c2UgYW55dGhpbmcu
CiAgICAgW21faG9zdGluZ0xheWVyIHNldFZhbHVlOkBZRVMgZm9yS2V5OkAiTlNDQVZpZXdSZW5k
ZXJQYXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlvbiIg
b2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1f
aG9zdGluZ0xheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOworICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1Jl
bmRlckRpZFBhdXNlTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOkB7IEAibGF5ZXIi
OiBtX2hvc3RpbmdMYXllci5nZXQoKSB9XTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQpAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKICAgICBtX2lzUGFp
bnRpbmdTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIFttX2hvc3RpbmdMYXllciBzZXRWYWx1ZTpA
Tk8gZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5k
ZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdMYXllci5nZXQoKSBmb3JLZXk6QCJsYXll
ciJdXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVj
dDpuaWwgdXNlckluZm86QHsgQCJsYXllciI6IG1faG9zdGluZ0xheWVyLmdldCgpIH1dOwogfQog
CiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRWaWV3RXhwb3NlZFJlY3Qo
T3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggMDhmZTdmZDE0YWYyMTQyMzYyMzY3ODk5
NDI5NjZlZDljNGVhY2E4Ni4uYTFkNmUzMGY0NTEzNTQzYTVhMzg2ZTg2NTZiZjU4ZGQwNWNkZGM3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAt
NDEsNyArNDEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+Ci0jaW1wb3J0IDx3
dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RNYWMubW0KaW5kZXggZjBjZWNhMjA2ODBjOWJhYzg0MTcyMzVmNzU0YTQ0ZWVjMjljNmNhZi4u
YTA5ZmY2MTM3YTk4YjQwM2E1MDY2OTk1Mzg2NmQ3M2MwZjY2MjEzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0KQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJp
bGl0eVNQSS5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAKQEAgLTE0MiwxNiArMTQxLDE2IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtIChOU0FycmF5ICopYWNjZXNz
aWJpbGl0eUFjdGlvbk5hbWVzCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
IHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgIHJldHVybiBAW107CiB9CiAKIC0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5Q2hpbGRyZW4KIHsKICAgICBpZCB3cmFwcGVyID0gW3Nl
bGYgYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXTsKICAgICBpZiAoIXdyYXBwZXIpCi0g
ICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAg
Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp3cmFwcGVyXTsKKyAgICByZXR1
cm4gQFt3cmFwcGVyXTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVH
SU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCmluZGV4IDQyMDhiOTlkMmMwNmYxMTkxYzAwY2VkMzVhNDc5Y2E5MjY3YjU2NzUuLjEyZmJj
Mjc5YWRkNzNhNWVjZjAwYjM4ZmVmNDEwZTczMTk5ZWMwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtODgsNiArODgsNyBA
QAogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
c0NvY29hLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3Bl
Y3Rvci5oPgpAQCAtNjQ4LDEyICs2NDksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2
ZVBhZ2VzKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVEaXNwbGF5TmFtZSkKIHZvaWQgV2ViUHJvY2Vz
czo6Z2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBhdXRvIGFjdGl2ZU9yaWdpbnNBc05TU3RyaW5ncyA9IGFjdGl2ZVBhZ2VzT3Jp
Z2lucyhtX3BhZ2VNYXApOwotICAgIFZlY3RvcjxTdHJpbmc+IGFjdGl2ZU9yaWdpbnM7Ci0gICAg
YWN0aXZlT3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFthY3RpdmVPcmlnaW5zQXNOU1N0
cmluZ3MgY291bnRdKTsKLSAgICBmb3IgKE5TU3RyaW5nKiBhY3RpdmVPcmlnaW4gaW4gYWN0aXZl
T3JpZ2luc0FzTlNTdHJpbmdzLmdldCgpKQotICAgICAgICBhY3RpdmVPcmlnaW5zLnVuY2hlY2tl
ZEFwcGVuZChhY3RpdmVPcmlnaW4pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYWN0
aXZlT3JpZ2lucykpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VWZWN0b3I8U3RyaW5nPihh
Y3RpdmVQYWdlc09yaWdpbnMobV9wYWdlTWFwKS5nZXQoKSkpOwogI2Vsc2UKICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggMzNl
NWVmNTFjYTIzNDBhZTE2NDA0ZGNjNGFmMmY0MDk1NzhiYjFlOC4uODc1NDNiMDA0NDQ3ZTNkOGM1
NDlhZDE4NzhkYzRiMzg0YWI0NjU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQpAQCAtNjMs
NiArNjMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oPgogI2lt
cG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBOU1N0cmluZyAqIGNvbnN0IFdlYk9wZW5QYW5lbENv
bmZpZ3VyYXRpb25BbGxvd011bHRpcGxlRmlsZXNLZXkgPSBAIldlYk9wZW5QYW5lbENvbmZpZ3Vy
YXRpb25BbGxvd011bHRpcGxlRmlsZXNLZXkiOwogTlNTdHJpbmcgKiBjb25zdCBXZWJPcGVuUGFu
ZWxDb25maWd1cmF0aW9uTWVkaWFDYXB0dXJlVHlwZUtleSA9IEAiV2ViT3BlblBhbmVsQ29uZmln
dXJhdGlvbk1lZGlhQ2FwdHVyZVR5cGVLZXkiOwpAQCAtMTM0LDE3ICsxMzUsMTMgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJiBjaG9v
c2VyKQogICAgIEJPT0wgYWxsb3dNdWx0aXBsZUZpbGVzID0gc2V0dGluZ3MuYWxsb3dzTXVsdGlw
bGVGaWxlczsKICAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENob29zZXI6Y2hvb3Nlcl07
CiAKLSAgICBOU011dGFibGVBcnJheSAqbWltZVR5cGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OnNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcy5zaXplKCldOwotICAgIGZvciAo
YXV0byYgdHlwZSA6IHNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcykKLSAgICAgICAgW21pbWVUeXBl
cyBhZGRPYmplY3Q6dHlwZV07Ci0KICAgICBXZWJNZWRpYUNhcHR1cmVUeXBlIGNhcHR1cmVUeXBl
ID0gV2ViTWVkaWFDYXB0dXJlVHlwZU5vbmU7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCiAg
ICAgY2FwdHVyZVR5cGUgPSB3ZWJNZWRpYUNhcHR1cmVUeXBlKHNldHRpbmdzLm1lZGlhQ2FwdHVy
ZVR5cGUpOwogI2VuZGlmCiAgICAgTlNEaWN0aW9uYXJ5ICpjb25maWd1cmF0aW9uID0gQHsKICAg
ICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFsbG93TXVsdGlwbGVGaWxlc0tleTogQChh
bGxvd011bHRpcGxlRmlsZXMpLAotICAgICAgICBXZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWlt
ZVR5cGVzS2V5OiBtaW1lVHlwZXMsCisgICAgICAgIFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25N
aW1lVHlwZXNLZXk6IGNyZWF0ZU5TQXJyYXkoc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzKS5nZXQo
KSwKICAgICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbk1lZGlhQ2FwdHVyZVR5cGVLZXk6
IEAoY2FwdHVyZVR5cGUpCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDY5
MWY4NTE5MzhmODM1N2Q3NzBkOGM0Zjg0ZTVkMmU2YzNlZjk4ZWQuLjU0MzI1YWQ4MGMzYTNhNDg3
ZjkwYzJmMTkxNjc4NmFmOGRiOWY2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTIz
LDExICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRpb24u
aCIKICNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmgiCiAKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TVJhbmdlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVTZWxlY3Rpb24uaD4KQEAgLTQxLDEyICs0Miw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRG
bGFncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGV4dEl0ZXJhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVQb3NpdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KLQotCi0jaW1wb3J0ICJET01Ob2Rl
SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDE4
LDExICs0MTUsNyBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBo
cmFzZUFsdGVybmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5hdAogICAgIGF1dG8mIGRvY3VtZW50
ID0gbm9kZS0+ZG9jdW1lbnQoKTsKICAgICBmb3IgKGF1dG8gbWFya2VyIDogZG9jdW1lbnQubWFy
a2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VX
aXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICBpZiAobWFya2VyLT5zdGFydE9mZnNldCgpIDw9
IG9mZnNldCAmJiBtYXJrZXItPmVuZE9mZnNldCgpID49IG9mZnNldCkgewotICAgICAgICAgICAg
YXV0byYgbWFya2VyQWx0ZXJuYXRpdmVzID0gV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KG1hcmtl
ci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6bWFya2VyQWx0ZXJuYXRpdmVzLnNpemUoKV07Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIGFsdGVybmF0aXZlIDogbWFya2VyQWx0ZXJuYXRpdmVzKQotICAgICAgICAgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6YWx0ZXJuYXRpdmVdOwotICAgICAgICAgICAgKmFsdGVybmF0
aXZlcyA9IGFycmF5OworICAgICAgICAgICAgKmFsdGVybmF0aXZlcyA9IGNyZWF0ZU5TQXJyYXko
V1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KG1hcmtlci0+ZGF0YSgpKSkuYXV0b3JlbGVhc2UoKTsK
ICAgICAgICAgICAgIHJldHVybiBraXQoUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKS5wdHIoKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaAppbmRl
eCBkMjlmMTQxMzQyODQ5M2E1ZjM2YjRiMDAxMjg3YjQ4Y2ZkMjY5NzY0Li43NjVjNTlkNDM0Zjhh
NWY3NGNmMDEyOTBlMDNlODFmMmQyMmJiNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlv
bkludGVybmFsLmgKQEAgLTIzLDggKzIzLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRpb24uaCIKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRpb24uaCIKICNpbXBv
cnQgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAKIEBpbnRlcmZhY2UgV2ViVmlzaWJsZVBv
c2l0aW9uIChJbnRlcm5hbCkKQEAgLTMzLDMgKzM0LDUgQEAKIC0gKFdlYkNvcmU6OlZpc2libGVQ
b3NpdGlvbilfdmlzaWJsZVBvc2l0aW9uOwogCiBAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IGY5ODJiZDEw
YWM4ZTViZDhlZmE5NTI0NTQxNmJmMWExYTg1ZTI5MjYuLmJlNWQ2NDdmZGRiYjBiY2NlYzUzMTdj
Mjc3OTE1ODY3MTI2MzhjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTc1LDEwICs3NSwxMCBAQCBAaW1wbGVtZW50YXRpb24g
V2ViUERGVmlldyB7CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIHsKLSAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAg
QCJ0ZXh0L3BkZiIsCiAgICAgICAgIEAiYXBwbGljYXRpb24vcGRmIiwKLSAgICAgICAgbmlsXTsK
KyAgICBdOwogfQogCiArIChDR0NvbG9yUmVmKXNoYWRvd0NvbG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQppbmRleCA4YjdiYTVjYWJjODFkNzhiNjhhYTI0YmQ1ZWZmMjVhZDI3OGIyYmE1
Li45ZTEyODk2ZDc3ZmUwOGJlN2YwYjYwNmRjMTFhN2ZhMTZlNDc2ZjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KQEAgLTU4LDEwICs1OCwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
b3VjaC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XQUtBcHBLaXRTdHVi
cy5oPgpAQCAtMTc5LDE1ICsxODEsNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZywgQ2xhc3MgZGVmYXVsdENsYXNzKQogICAgIHJldHVybiBvYmpj
Q2xhc3M7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpraXQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cykKLXsKLSAgICBzaXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVB
cnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFthcnJheSBhZGRP
YmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0c1tpXV1dOwotICAgIHJldHVybiBhcnJh
eTsKLX0KLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBXS1F1YWQgd2tRdWFk
RnJvbUZsb2F0UXVhZChjb25zdCBGbG9hdFF1YWQmIGluUXVhZCkKQEAgLTUxNCw3ICs1MDcsNyBA
QCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwogICAgIG5vZGUudGV4dFJlY3RzKHJlY3RzKTsKLSAg
ICByZXR1cm4ga2l0KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShyZWN0cykuYXV0
b3JlbGVhc2UoKTsKIH0KIAogQGVuZApAQCAtNjMxLDEyICs2MjQsMTEgQEAgLSAoQ0dJbWFnZVJl
ZilyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAogCiAt
IChOU0FycmF5ICopdGV4dFJlY3RzCiB7Ci0gICAgLy8gRklYTUU6IFRoZSBjYWxsIHRvIHVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBzaG91bGQgYmUgbW92ZWQgaW50byBXZWJD
b3JlOjpSYW5nZS4KICAgICBhdXRvJiByYW5nZSA9ICpjb3JlKHNlbGYpOwogICAgIFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiByZWN0czsKICAgICByYW5nZS5vd25lckRvY3VtZW50KCkudXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgcmFuZ2UuYWJzb2x1dGVUZXh0
UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBraXQocmVjdHMpOworICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5ICopbGluZUJveFJl
Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFu
ZGxlcnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMu
bW0KaW5kZXggYjUwMzBkMGVlNDY5NjI1ZDkzMDFmNTE3MWEwNGQ3YmVlMWM2ZjdjNi4uYzhiZTU1
MWI4NTBiY2UxNzIzYTJmMTE0ZTJkZWU2Y2U2ZGQyOTVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQpAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgTk9fUkVUVVJOIHZvaWQgcmFpc2VET01FcnJvckV4Y2VwdGlvbihXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjKQogICAgIGVsc2UKICAgICAgICAgcmVhc29uID0gW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBET01FeGNlcHRpb24sIGRlc2NyaXB0aW9u
LmxlZ2FjeUNvZGVdOwogCi0gICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoSW50
OmRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdLCBET01FeGNlcHRpb24sIG5pbF07CisgICAgTlNEaWN0
aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNB
bmRLZXlzOkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXTsKIAog
ICAgIE5TRXhjZXB0aW9uICpleGNlcHRpb24gPSBbTlNFeGNlcHRpb24gZXhjZXB0aW9uV2l0aE5h
bWU6RE9NRXhjZXB0aW9uIHJlYXNvbjpyZWFzb24gdXNlckluZm86dXNlckluZm9dOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlz
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tCmluZGV4IDE4ZjAxM2EwYTg3NWJkMzZlODk1NTg2NjM0YWI3ZDhiMGE4YjAyYjcuLjhiOTk0
ZWQyZDAwNzA2ZGQ4ZTRlZDZiMjJiNmIzYjdlOTg0NWY2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCkBAIC0xNTgs
MjEgKzE1OCwyMSBAQCAtICh2b2lkKXJlbW92ZUl0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQog
LSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uCiB7CiAgICAgQmFja0Zv
cndhcmRMaXN0ICpjb3JlQkZMaXN0ID0gY29yZShzZWxmKTsKLSAgICAKKwogICAgIGF1dG8mIGhp
c3RvcnlJdGVtcyA9IGNvcmVCRkxpc3QtPmVudHJpZXMoKTsKICAgICB1bnNpZ25lZCBzaXplID0g
aGlzdG9yeUl0ZW1zLnNpemUoKTsKICAgICBOU011dGFibGVBcnJheSAqZW50cmllc0FycmF5ID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBbZW50cmllc0FycmF5IGFk
ZE9iamVjdDpba2l0KGNvbnN0X2Nhc3Q8V2ViQ29yZTo6SGlzdG9yeUl0ZW0qPihoaXN0b3J5SXRl
bXNbaV0ucHRyKCkpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25JbmNsdWRpbmdDaGlsZHJlbjpO
T11dOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgZW50cmllc0FycmF5LCBXZWJC
YWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5RW50cmllc0tleSwKLSAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDpjb3JlQkZMaXN0LT5jdXJyZW50KCldLCBXZWJCYWNrRm9yd2Fy
ZExpc3REaWN0aW9uYXJ5Q3VycmVudEtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6Y29yZUJGTGlzdC0+Y2FwYWNpdHkoKV0sIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlD
YXBhY2l0eUtleSwKLSAgICAgICAgbmlsXTsKLSAgICAgICAgCisKKyAgICBOU0RpY3Rpb25hcnkg
KmRpY3Rpb25hcnkgPSBAeworICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5RW50
cmllc0tleTogZW50cmllc0FycmF5LAorICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9u
YXJ5Q3VycmVudEtleTogQChjb3JlQkZMaXN0LT5jdXJyZW50KCkpLAorICAgICAgICBXZWJCYWNr
Rm9yd2FyZExpc3REaWN0aW9uYXJ5Q2FwYWNpdHlLZXk6IEAoY29yZUJGTGlzdC0+Y2FwYWNpdHko
KSksCisgICAgfTsKKwogICAgIFtlbnRyaWVzQXJyYXkgcmVsZWFzZV07Ci0gICAgCisKICAgICBy
ZXR1cm4gZGljdGlvbmFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5Lm1tCmluZGV4IGI4YmMxNDc5YTE4YTg0NTQyYjBmMzY0M2FmYjhhMTIyYTUx
NDNjZWEuLmYyNzQ3MGRiYzMwMGNhYTBlNWNjMDI5YTI3YjJkYTEzOWZhZjIxZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTExOSwxMSAr
MTE5LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJIaXN0b3J5UHJpdmF0ZQogCiArICh2b2lkKWlu
aXRpYWxpemUKIHsKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBy
ZWdpc3RlckRlZmF1bHRzOgotICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICBAIjEwMDAiLCBAIldlYktpdEhpc3RvcnlJdGVtTGlt
aXQiLAotICAgICAgICAgICAgQCI3IiwgQCJXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXQiLAot
ICAgICAgICAgICAgbmlsXV07ICAgIAorICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6QHsKKyAgICAgICAgQCJXZWJLaXRIaXN0b3J5SXRl
bUxpbWl0IjogQCIxMDAwIiwKKyAgICAgICAgQCJXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXQi
OiBAIjciLAorICAgIH1dOwogfQogCiAtIChpZClpbml0CkBAIC03MjcsMTIgKzcyNiwxMSBAQCAt
ICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZClfc2VuZE5vdGlmaWNhdGlvbjooTlNTdHJpbmcgKilu
YW1lIGVudHJpZXM6KE5TQXJyYXkgKillbnRyaWVzCiB7Ci0gICAgTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czplbnRyaWVz
LCBXZWJIaXN0b3J5SXRlbXNLZXksIG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9
IEB7IFdlYkhpc3RvcnlJdGVtc0tleTogZW50cmllcyB9OwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihuYW1lLCBzZWxmLCB1c2VySW5mbyk7
CiAjZWxzZSAgICAKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCi0g
ICAgICAgIHBvc3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2JqZWN0OnNlbGYgdXNlckluZm86dXNl
ckluZm9dOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5v
dGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6c2VsZiB1c2VySW5mbzp1c2VySW5mb107CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KaW5kZXggYThkM2JjMjA2OGYyYzc2M2Y5NTU3ZDgxYzdmNWRkZjBmNWI3ZTA0OS4u
ZGZhY2IzN2QxMDkzODVjZGE2MjU3MWIzZDAzZjM1YjliOTRlNjUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC01NCw2ICs1
NCw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29h
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC0zNDYsMTkgKzM0Nyw4IEBAIC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJlcHJl
c2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilkaWN0CiAgICAgaWYgKFtkaWN0IF93ZWJraXRfYm9v
bEZvcktleTpsYXN0VmlzaXRXYXNGYWlsdXJlS2V5XSkKICAgICAgICAgY29yZShfcHJpdmF0ZSkt
PnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAgICAgCi0gICAgaWYgKE5TQXJyYXkgKnJl
ZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6cmVkaXJlY3RVUkxzS2V5XSkg
ewotICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0
cmluZz4+KCk7Ci0gICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShbcmVkaXJlY3RVUkxzIGNvdW50XSk7Ci0KLSAgICAgICAgZm9yIChpZCByZWRpcmVjdFVS
TCBpbiByZWRpcmVjdFVSTHMpIHsKLSAgICAgICAgICAgIGlmICghW3JlZGlyZWN0VVJMIGlzS2lu
ZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+dW5jaGVja2VkQXBwZW5kKChOU1N0cmlu
ZyAqKXJlZGlyZWN0VVJMKTsKLSAgICAgICAgfQotCi0gICAgICAgIF9wcml2YXRlLT5fcmVkaXJl
Y3RVUkxzID0gV1RGTW92ZShyZWRpcmVjdFVSTHNWZWN0b3IpOwotICAgIH0KKyAgICBpZiAoTlNB
cnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVS
THNLZXldKQorICAgICAgICBfcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG1ha2VVbmlxdWU8VmVj
dG9yPFN0cmluZz4+KG1ha2VWZWN0b3I8U3RyaW5nPihyZWRpcmVjdFVSTHMpKTsKIAogICAgIE5T
QXJyYXkgKmNoaWxkRGljdHMgPSBbZGljdCBvYmplY3RGb3JLZXk6Y2hpbGRyZW5LZXldOwogICAg
IGlmIChjaGlsZERpY3RzKSB7CkBAIC00MzYsMTYgKzQyNiw5IEBAIC0gKE5TRGljdGlvbmFyeSAq
KWRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbgogICAgIH0KICAgICBpZiAoY29yZUl0ZW0tPmxhc3RW
aXNpdFdhc0ZhaWx1cmUoKSkKICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OkBZRVMgZm9yS2V5Omxh
c3RWaXNpdFdhc0ZhaWx1cmVLZXldOwotICAgIGlmIChWZWN0b3I8U3RyaW5nPiogcmVkaXJlY3RV
UkxzID0gX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMuZ2V0KCkpIHsKLSAgICAgICAgc2l6ZV90IHNp
emUgPSByZWRpcmVjdFVSTHMtPnNpemUoKTsKLSAgICAgICAgQVNTRVJUKHNpemUpOwotICAgICAg
ICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDooTlNTdHJpbmcgKilyZWRpcmVjdFVS
THMtPmF0KGkpXTsKLSAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OnJlc3VsdCBmb3JLZXk6cmVkaXJl
Y3RVUkxzS2V5XTsKLSAgICAgICAgW3Jlc3VsdCByZWxlYXNlXTsKLSAgICB9Ci0gICAgCisgICAg
aWYgKGF1dG8gcmVkaXJlY3RVUkxzID0gX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMuZ2V0KCkpCisg
ICAgICAgIFtkaWN0IHNldE9iamVjdDpjcmVhdGVOU0FycmF5KCpyZWRpcmVjdFVSTHMpLmdldCgp
IGZvcktleTpyZWRpcmVjdFVSTHNLZXldOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoaW5jbHVkZXNDaGlsZHJlbiAmJiBjb3JlSXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpIHsK
ICNlbHNlCkBAIC00NjgsOCArNDUxLDggQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uCiAgICAgICAgIFtkaWN0IHNldE9iamVjdDp2aWV3cG9ydEFyZ3VtZW50cyBm
b3JLZXk6QCJXZWJWaWV3cG9ydEFyZ3VtZW50cyJdOwogCiAgICAgSW50UG9pbnQgc2Nyb2xsUG9z
aXRpb24gPSBjb3JlKF9wcml2YXRlKS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBbZGljdCBzZXRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c2Nyb2xsUG9zaXRpb24ueCgpXSBmb3JLZXk6
c2Nyb2xsUG9pbnRYS2V5XTsKLSAgICBbZGljdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6c2Nyb2xsUG9zaXRpb24ueSgpXSBmb3JLZXk6c2Nyb2xsUG9pbnRZS2V5XTsKKyAgICBb
ZGljdCBzZXRPYmplY3Q6QChzY3JvbGxQb3NpdGlvbi54KCkpIGZvcktleTpzY3JvbGxQb2ludFhL
ZXldOworICAgIFtkaWN0IHNldE9iamVjdDpAKHNjcm9sbFBvc2l0aW9uLnkoKSkgZm9yS2V5OnNj
cm9sbFBvaW50WUtleV07CiAjZW5kaWYKIAogICAgIHJldHVybiBkaWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tCmluZGV4IDE3
Yjk4Yjg3NDg4NGE2ODNjZjZmNzA5MGNkMTk0MDc0NjlhNjE3NGIuLmMxZmJkM2VjNjk2MjgzNmUx
NmQ2ZDA3MmQxN2Q5N2RiYzU5ZjMzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0KQEAgLTQxLDcgKzQxLDcgQEAgKyAoTlNB
cnJheSAqKWFycmF5V2l0aElGVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlCiAgICAgc3RhdGljIE5T
QXJyYXkgKmNhbm5lZEFycmF5ID0gbmlsOwogCiAgICAgaWYgKGNhbm5lZEFycmF5ID09IG5pbCkg
ewotICAgICAgICBjYW5uZWRBcnJheSA9IFtbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6V2ViVVJM
c1dpdGhUaXRsZXNQYm9hcmRUeXBlXSByZXRhaW5dOworICAgICAgICBjYW5uZWRBcnJheSA9IFtA
W1dlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV0gcmV0YWluXTsKICAgICB9CiAKICAgICByZXR1
cm4gY2FubmVkQXJyYXk7CkBAIC03Myw3ICs3Myw3IEBAICsodm9pZCl3cml0ZVVSTHM6KE5TQXJy
YXkgKilVUkxzIGFuZFRpdGxlczooTlNBcnJheSAqKXRpdGxlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFz
CiAgICAgICAgIFt0aXRsZXNPckVtcHR5U3RyaW5ncyBhZGRPYmplY3Q6KHRpdGxlcyA9PSBuaWwp
ID8gQCIiIDogW1t0aXRsZXMgb2JqZWN0QXRJbmRleDppbmRleF0gX3dlYmtpdF9zdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZV1dOwogICAgIH0KIAotICAgIFtwYXN0ZWJvYXJkIHNldFByb3BlcnR5
TGlzdDpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOlVSTFN0cmluZ3MsIHRpdGxlc09yRW1wdHlT
dHJpbmdzLCBuaWxdCisgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbVVJMU3RyaW5n
cywgdGl0bGVzT3JFbXB0eVN0cmluZ3NdCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JUeXBl
OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IDUxMzdlNDFjMjQyZmNhNTVjNGEwOTRiNjQzMzczZTll
MGE2ZmVjMmIuLjE1MTNmNGU3OWIwYzQ1N2MxOTdiN2Y2ODEyY2E1OGM0ZDg2OTAwNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtNzEsNTAgKzcxLDQ5IEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogCiArIChOU0FycmF5ICopc3RhdGlzdGljcwogewotICAgIFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHMgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0U3RhdGlzdGljcygpOwotCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuaW1hZ2VzLmNv
dW50XSwgQCJJbWFnZXMiLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5j
c3NTdHlsZVNoZWV0cy5jb3VudF0sIEAiQ1NTIiwKKyAgICBhdXRvIHMgPSBXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6c2luZ2xldG9uKCkuZ2V0U3RhdGlzdGljcygpOworICAgIHJldHVybiBAWworICAg
ICAgICBAeworICAgICAgICAgICAgQCJJbWFnZXMiOiBAKHMuaW1hZ2VzLmNvdW50KSwKKyAgICAg
ICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRzLmNvdW50KSwKICNpZiBFTkFCTEUoWFNM
VCkKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMu
Y291bnRdLCBAIlhTTCIsCisgICAgICAgICAgICBAIlhTTCI6IEAocy54c2xTdHlsZVNoZWV0cy5j
b3VudCksCiAjZWxzZQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIEAi
WFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRpZgotICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLmNvdW50XSwgQCJKYXZhU2NyaXB0IiwKLSAg
ICAgICAgICAgIG5pbF0sCi0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuaW1hZ2Vz
LnNpemVdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpz
LmNzc1N0eWxlU2hlZXRzLnNpemVdICxAIkNTUyIsCisgICAgICAgICAgICBAIkphdmFTY3JpcHQi
OiBAKHMuc2NyaXB0cy5jb3VudCksCisgICAgICAgIH0sCisgICAgICAgIEB7CisgICAgICAgICAg
ICBAIkltYWdlcyI6IEAocy5pbWFnZXMuc2l6ZSksCisgICAgICAgICAgICBAIkNTUyI6IEAocy5j
c3NTdHlsZVNoZWV0cy5zaXplKSwKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMuc2l6ZV0sIEAiWFNMIiwKKyAgICAg
ICAgICAgIEAiWFNMIjogQChzLnhzbFN0eWxlU2hlZXRzLnNpemUpLAogI2Vsc2UKLSAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdLCBAIlhTTCIsCisgICAgICAgICAgICBAIlhT
TCI6IEAoMCksCiAjZW5kaWYKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMu
c2NyaXB0cy5zaXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAgICAgIG5pbF0sCi0gICAgICAg
IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuaW1hZ2VzLmxpdmVTaXplXSwgQCJJbWFnZXMiLAot
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5jc3NTdHlsZVNoZWV0cy5saXZl
U2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAgICAgIEAiSmF2YVNjcmlwdCI6IEAocy5zY3JpcHRzLnNp
emUpLAorICAgICAgICB9LAorICAgICAgICBAeworICAgICAgICAgICAgQCJJbWFnZXMiOiBAKHMu
aW1hZ2VzLmxpdmVTaXplKSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRz
LmxpdmVTaXplKSwKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMubGl2ZVNpemVdLCBAIlhTTCIsCisgICAgICAgICAg
ICBAIlhTTCI6IEAocy54c2xTdHlsZVNoZWV0cy5saXZlU2l6ZSksCiAjZWxzZQotICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNM
IjogQCgwKSwKICNlbmRpZgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5z
Y3JpcHRzLmxpdmVTaXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAgICAgIG5pbF0sCi0gICAg
ICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuaW1hZ2VzLmRlY29kZWRTaXplXSwgQCJJbWFn
ZXMiLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5jc3NTdHlsZVNoZWV0
cy5kZWNvZGVkU2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAgICAgIEAiSmF2YVNjcmlwdCI6IEAocy5z
Y3JpcHRzLmxpdmVTaXplKSwKKyAgICAgICAgfSwKKyAgICAgICAgQHsKKyAgICAgICAgICAgIEAi
SW1hZ2VzIjogQChzLmltYWdlcy5kZWNvZGVkU2l6ZSksCisgICAgICAgICAgICBAIkNTUyI6IEAo
cy5jc3NTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSksCiAjaWYgRU5BQkxFKFhTTFQpCi0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnhzbFN0eWxlU2hlZXRzLmRlY29kZWRTaXpl
XSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKHMueHNsU3R5bGVTaGVldHMuZGVjb2Rl
ZFNpemUpLAogI2Vsc2UKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdLCBA
IlhTTCIsCisgICAgICAgICAgICBAIlhTTCI6IEAoMCksCiAjZW5kaWYKLSAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OnMuc2NyaXB0cy5kZWNvZGVkU2l6ZV0sIEAiSmF2YVNjcmlw
dCIsCi0gICAgICAgICAgICBuaWxdLAotICAgICAgICBuaWxdOworICAgICAgICAgICAgQCJKYXZh
U2NyaXB0IjogQChzLnNjcmlwdHMuZGVjb2RlZFNpemUpLAorICAgICAgICB9LAorICAgIF07CiB9
CiAKICsgKHZvaWQpZW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IDQ2NjY2NTM0MmExZWEzOWY3NzBiNzYwODRiNGJiMmNj
MzhlNTNiZTAuLjRjNGZlYzc4ZjNhYjk1YTFkYzA3NGFlN2E0OGY5OTBmMmMxNTM3NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpA
QCAtMTk5LDIyICsxOTksMjAgQEAgKyAodm9pZClzdG9wSWdub3JpbmdXZWJDb3JlTm9kZUxlYWtz
CiAKICsgKE5TRGljdGlvbmFyeSAqKW1lbW9yeVN0YXRpc3RpY3MKIHsKLSAgICBXVEY6OkZhc3RN
YWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RGOjpmYXN0TWFsbG9jU3Rh
dGlzdGljcygpOwotICAgIAorICAgIGF1dG8gZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZh
c3RNYWxsb2NTdGF0aXN0aWNzKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7
CiAgICAgc2l6ZV90IGhlYXBTaXplID0gY29tbW9uVk0oKS5oZWFwLnNpemUoKTsKICAgICBzaXpl
X3QgaGVhcEZyZWUgPSBjb21tb25WTSgpLmhlYXAuY2FwYWNpdHkoKSAtIGhlYXBTaXplOwotICAg
IEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlT
dGF0aXN0aWNzKCk7Ci0gICAgCi0gICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXNdLCBAIkZhc3RNYWxsb2NSZXNl
cnZlZFZNQnl0ZXMiLAotICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmZh
c3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXNdLCBAIkZhc3RNYWxsb2NDb21taXR0
ZWRWTUJ5dGVzIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpmYXN0
TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzXSwgQCJGYXN0TWFsbG9jRnJlZUxpc3RCeXRl
cyIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aGVhcFNpemVdLCBA
IkphdmFTY3JpcHRIZWFwU2l6ZSIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6aGVhcEZyZWVdLCBAIkphdmFTY3JpcHRGcmVlU2l6ZSIsCi0gICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDoodW5zaWduZWQgaW50KWdsb2JhbE1lbW9y
eVN0YXRzLnN0YWNrQnl0ZXNdLCBAIkphdmFTY3JpcHRTdGFja1NpemUiLAotICAgICAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6KHVuc2lnbmVkIGludClnbG9iYWxN
ZW1vcnlTdGF0cy5KSVRCeXRlc10sIEAiSmF2YVNjcmlwdEpJVFNpemUiLAotICAgICAgICAgICAg
bmlsXTsKKyAgICBhdXRvIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGlj
cygpOworICAgIHJldHVybiBAeworICAgICAgICBAIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMi
OiBAKGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcyksCisgICAgICAgIEAiRmFz
dE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiOiBAKGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRl
ZFZNQnl0ZXMpLAorICAgICAgICBAIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIjogQChmYXN0TWFs
bG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0SGVhcFNp
emUiOiBAKGhlYXBTaXplKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0RnJlZVNpemUiOiBAKGhlYXBG
cmVlKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0U3RhY2tTaXplIjogQChnbG9iYWxNZW1vcnlTdGF0
cy5zdGFja0J5dGVzKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0SklUU2l6ZSI6IEAoZ2xvYmFsTWVt
b3J5U3RhdHMuSklUQnl0ZXMpLAorICAgIH07CiB9CiAKICsgKHZvaWQpcmV0dXJuRnJlZU1lbW9y
eVRvU3lzdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktp
dEVycm9ycy5tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJvcnMubQpp
bmRleCBjNTI3ODM3NGU5NGUyMDE2Yzk2MDg4YTAxZjVkODVhNWRjMzhlNmEzLi44YjNiYjIzZWQz
MWJhZWI0Mzk4ZjI0ZWM1MWYyNDNmMTE1YTc4ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KQEAgLTcxLDEyICs3MSwxMiBAQCAtIChpbnN0YW5jZXR5
cGUpX3dlYmtpdF9pbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29kZTooaW50KWNv
ZGUgVVJMOihOUwogewogICAgIC8vIEluc2VydCBhIGxvY2FsaXplZCBzdHJpbmcgaGVyZSBmb3Ig
dGhvc2UgZm9sa3Mgbm90IHNhdnZ5IHRvIG91ciBjYXRlZ29yeSBtZXRob2RzLgogICAgIE5TRGlj
dGlvbmFyeSAqZGVzY3JpcHRpb25zRGljdCA9IFtkZXNjcmlwdGlvbnMgb2JqZWN0Rm9yS2V5OmRv
bWFpbl07Ci0gICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25z
RGljdCA/IFtkZXNjcmlwdGlvbnNEaWN0IG9iamVjdEZvcktleTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpjb2RlXV0gOiBuaWw7Ci0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBVUkwsIEAiTlNFcnJvckZh
aWxpbmdVUkxLZXkiLAotICAgICAgICBbVVJMIGFic29sdXRlU3RyaW5nXSwgTlNVUkxFcnJvckZh
aWxpbmdVUkxTdHJpbmdFcnJvcktleSwKLSAgICAgICAgbG9jYWxpemVkRGVzY3JpcHRpb24sIE5T
TG9jYWxpemVkRGVzY3JpcHRpb25LZXksCi0gICAgICAgIG5pbF07CisgICAgTlNTdHJpbmcgKmxv
Y2FsaXplZERlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25zRGljdCA/IFtkZXNjcmlwdGlvbnNEaWN0
IG9iamVjdEZvcktleTpAKGNvZGUpXSA6IG5pbDsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBA
eworICAgICAgICBAIk5TRXJyb3JGYWlsaW5nVVJMS2V5IjogVVJMLAorICAgICAgICBOU1VSTEVy
cm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OiBbVVJMIGFic29sdXRlU3RyaW5nXSwKKyAgICAg
ICAgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTogbG9jYWxpemVkRGVzY3JpcHRpb24sCisgICAg
fTsKICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhEb21haW46ZG9tYWluIGNvZGU6Y29kZSB1c2Vy
SW5mbzpkaWN0XTsKIH0KIApAQCAtOTEsMjEgKzkxLDIxIEBAICsgKHZvaWQpX3JlZ2lzdGVyV2Vi
S2l0RXJyb3JzCiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgTlNEaWN0
aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgogICAgICAgICAgICAgICAgIC8vIFBvbGljeSBlcnJvcnMKLSAgICAgICAgICAgICAgICBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd01JTUVUeXBlLCAgICAgICAgICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGVdLAot
ICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RTaG93VVJMLCAgICAg
ICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNh
bm5vdFNob3dVUkxdLAotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25GcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OiBXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2VdLAotICAgICAg
ICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFVz
ZVJlc3RyaWN0ZWRQb3J0XSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9u
RnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyXSwKKyAgICAg
ICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd01JTUVUeXBlLCAgICAg
ICAgICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlKSwKKyAgICAgICAg
ICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VSTCwgICAgICAgICAgICAg
ICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCksCisgICAgICAgICAgICAgICAg
V2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Us
ICAgQChXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UpLAorICAg
ICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RVc2VSZXN0cmljdGVkUG9y
dCwgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCksCisg
ICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEJsb2NrZWRCeUNv
bnRlbnRGaWx0ZXIsICAgICAgQChXZWJLaXRFcnJvckZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRG
aWx0ZXIpLAogCiAgICAgICAgICAgICAgICAgLy8gUGx1Zy1pbiBhbmQgamF2YSBlcnJvcnMKLSAg
ICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAg
ICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5u
b3RGaW5kUGx1Z0luXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fu
bm90TG9hZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDogV2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1Z0luXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRF
cnJvckRlc2NyaXB0aW9uSmF2YVVuYXZhaWxhYmxlLCAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGVdLAotICAgICAg
ICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9u
LCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvclBsdWdJbkNh
bmNlbGxlZENvbm5lY3Rpb25dLAotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRp
b25QbHVnSW5XaWxsSGFuZGxlTG9hZCwgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50OiBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkXSwKKyAgICAgICAgICAgICAg
ICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAgICAgICAgICAgICAg
ICAgICBAKFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbiksCisgICAgICAgICAgICAgICAgV2Vi
S2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAg
QChXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW4pLAorICAgICAgICAgICAgICAgIFdlYktpdEVy
cm9yRGVzY3JpcHRpb25KYXZhVW5hdmFpbGFibGUsICAgICAgICAgICAgICAgICAgICAgIEAoV2Vi
S2l0RXJyb3JKYXZhVW5hdmFpbGFibGUpLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVz
Y3JpcHRpb25QbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uLCAgICAgICAgICAgIEAoV2ViS2l0RXJy
b3JQbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxvYWQsICAgICAgICAgICAgICAgICBAKFdlYktp
dEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQpLAogCiAgICAgICAgICAgICAgICAgLy8gR2VvbG9j
YXRpb24gZXJyb3JzCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkdlb2xv
Y2F0aW9uTG9jYXRpb25Vbmtub3duLCAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
IFdlYktpdEVycm9yR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd25dLAorICAgICAgICAgICAgICAg
IFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biwgICAgICAg
ICAgIEAoV2ViS2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biksCiAgICAgICAgICAg
ICAgICAgbmlsXTsKIAogICAgICAgICAgICAgW05TRXJyb3IgX3dlYmtpdF9hZGRFcnJvcnNXaXRo
Q29kZXNBbmREZXNjcmlwdGlvbnM6ZGljdCBpbkRvbWFpbjpXZWJLaXRFcnJvckRvbWFpbl07CkBA
IC0xMzksNyArMTM5LDcgQEAgLSAoaWQpX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOihpbnQpY29k
ZQogICAgIAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnVzZXJJbmZvID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICBOU0RpY3Rpb25hcnkgKmRlc2NyaXB0aW9uc0Zv
cldlYktpdEVycm9yRG9tYWluID0gW2Rlc2NyaXB0aW9ucyBvYmplY3RGb3JLZXk6V2ViS2l0RXJy
b3JEb21haW5dOwotICAgIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlwdGlvbiA9IFtkZXNjcmlw
dGlvbnNGb3JXZWJLaXRFcnJvckRvbWFpbiBvYmplY3RGb3JLZXk6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6Y29kZV1dOworICAgIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlwdGlvbiA9IFtkZXNj
cmlwdGlvbnNGb3JXZWJLaXRFcnJvckRvbWFpbiBvYmplY3RGb3JLZXk6QChjb2RlKV07CiAgICAg
aWYgKGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0Omxv
Y2FsaXplZERlc2NyaXB0aW9uIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKICAg
ICBpZiAoY29udGVudFVSTCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggNmQ4Njc0ZWE5MWVkYzY3MDg3ODQxMTk0
NDA1YmRiODVkYmU1YThkNi4uMTdiNzI0ODUwNzU5NTAwMWQzNjdhMWEwNmJiY2U3N2Y4N2U2Y2Zm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmlu
Z0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3Ry
aW5nRXh0cmFzLm1tCkBAIC05OSw3ICs5OSw3IEBAIC0gKHZvaWQpX3dlYl9kcmF3QXRQb2ludDoo
TlNQb2ludClwb2ludCBmb250OihOU0ZvbnQgKilmb250IHRleHRDb2xvcjooTlNDb2xvciAqCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvaW50LnkgKz0gW2ZvbnQgZGVzY2VuZGVyXTsKIAot
ICAgICAgICBbc2VsZiBkcmF3QXRQb2ludDpwb2ludCB3aXRoQXR0cmlidXRlczpbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Zm9udCwgTlNGb250QXR0cmlidXRlTmFt
ZSwgdGV4dENvbG9yLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIG5pbF1dOworICAg
ICAgICBbc2VsZiBkcmF3QXRQb2ludDpwb2ludCB3aXRoQXR0cmlidXRlczpAeyBOU0ZvbnRBdHRy
aWJ1dGVOYW1lOiBmb250LCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IHRleHRDb2xv
ciB9XTsKICAgICB9CiB9CiAKQEAgLTExNSw3ICsxMTUsNyBAQCAtIChmbG9hdClfd2ViX3dpZHRo
V2l0aEZvbnQ6KE5TRm9udCAqKWZvbnQKICAgICAgICAgcmV0dXJuIHdlYkNvcmVGb250LndpZHRo
KHJ1bik7CiAgICAgfQogCi0gICAgcmV0dXJuIFtzZWxmIHNpemVXaXRoQXR0cmlidXRlczpbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Zm9udCwgTlNGb250QXR0cmli
dXRlTmFtZSwgbmlsXV0ud2lkdGg7CisgICAgcmV0dXJuIFtzZWxmIHNpemVXaXRoQXR0cmlidXRl
czpAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBmb250IH1dLndpZHRoOwogfQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IGM1NDEzZTgxYzZhM2VjYjJlYzk3ODFmNmI4
YmZkNmMyYjJhMDVkZjEuLmJiZmZhZGU2NWJkMTc4ZTJhM2Y2YTJjNDBkYzYwNmUwYTQ4MGFjZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdl
ckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1h
bmFnZXJFeHRyYXMubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNp
bXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRpb24gTlNGaWxl
TWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQppbmRleCBiYmI2MmNi
YWZkYmJlMDk4NzVhMmNlNDU1ODhjODhhMTc4YWZmY2VkLi5lMWM1ZWViMzI4M2YwNjZkODEyY2Ni
MDU2YzQ3MDdmMzUyYjA4NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAICsgKE5T
QXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JJbWFnZUluY2x1ZGluZ0FyY2hpdmU6KEJPT0wp
aGFzQXJjaGl2ZQogCiArIChOU0FycmF5ICopX3dlYl9kcmFnVHlwZXNGb3JVUkwKIHsKLSAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAg
V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLAogICAgICAgICBsZWdhY3lVUkxQYXN0ZWJvYXJk
VHlwZSgpLAogICAgICAgICBXZWJVUkxQYm9hcmRUeXBlLApAQCAtMTE0LDcgKzExNCw3IEBAICsg
KE5TQXJyYXkgKilfd2ViX2RyYWdUeXBlc0ZvclVSTAogICAgICAgICBsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpLAogICAgICAgICBsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLAog
ICAgICAgICBsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBuaWxd
OworICAgIF07CiB9CiAKIC0gKE5TVVJMICopX3dlYl9iZXN0VVJMCkBAIC0xNzcsNyArMTc3LDcg
QEAgLSAodm9pZClfd2ViX3dyaXRlVVJMOihOU1VSTCAqKVVSTCBhbmRUaXRsZTooTlNTdHJpbmcg
Kil0aXRsZSB0eXBlczooTlNBcnJheSAqKXQKICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICBbc2VsZiBzZXRTdHJpbmc6
W1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSBmb3JUeXBlOmxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCldOwogICAgIGlmIChbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViVVJMc1dpdGhUaXRs
ZXNQYm9hcmRUeXBlXSkKLSAgICAgICAgW1dlYlVSTHNXaXRoVGl0bGVzIHdyaXRlVVJMczpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6VVJMXSBhbmRUaXRsZXM6W05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OnRpdGxlXSB0b1Bhc3RlYm9hcmQ6c2VsZl07CisgICAgICAgIFtXZWJVUkxzV2l0aFRpdGxl
cyB3cml0ZVVSTHM6QFtVUkxdIGFuZFRpdGxlczpAW3RpdGxlXSB0b1Bhc3RlYm9hcmQ6c2VsZl07
CiB9CiAKICsgKGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJkU3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZyB3aXRoT3duZXI6KGlkKW93bmVyCkBAIC0xODUsNyArMTg1LDcgQEAgKyAoaW50KV93ZWJf
c2V0RmluZFBhc3RlYm9hcmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhPd25lcjooaWQp
b3duZXIKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIE5TUGFz
dGVib2FyZCAqZmluZFBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFt
ZTpOU0ZpbmRQYm9hcmRdOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAot
ICAgIFtmaW5kUGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm93bmVyXTsKKyAgICBbZmluZFBh
c3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3du
ZXI6b3duZXJdOwogICAgIFtmaW5kUGFzdGVib2FyZCBzZXRTdHJpbmc6c3RyaW5nIGZvclR5cGU6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgcmV0dXJuIFtmaW5kUGFzdGVib2Fy
ZCBjaGFuZ2VDb3VudF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U1VSTEV4dHJhcy5tbQppbmRleCBjMGU3ZmE5MzFhNGY0YWM1MzU3MjQ2NGZhMDZiMGIwMDEzN2E1
YzczLi43ZTk4OTJmYzNkMjJkYjUyOTFiZTRhNjYxMjk0NDVkZmFhZjgzYzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTM5LDcgKzM5
LDYgQEAKICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KICNpbXBvcnQgPHVuaWNvZGUvdXNjcmlw
dC5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGEw
NGJjNTU3YmZkZGM5NzZmZDE4MDVhZmViNzg2NWI0ZDEyN2FlNmQuLjk1NjFkMjJlYmJmYjllYTQ5
ZDRmODgzNmIyZjBmZDU5NWNhNjhkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlci5tbQpAQCAtMTQxLDE3ICsxNDEsMTQgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyOjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHkKICAg
ICBOU1N0cmluZyAqcGx1Z2luSG9zdEFwcFBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNz
OltXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgY2xhc3NdXSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0
YWJsZTpwbHVnaW5Ib3N0QXBwTmFtZV07CiAgICAgTlNTdHJpbmcgKnBsdWdpbkhvc3RBcHBFeGVj
dXRhYmxlUGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cGx1Z2luSG9zdEFwcFBhdGhd
IGV4ZWN1dGFibGVQYXRoXTsKIAotICAgIE5TRGljdGlvbmFyeSAqbGF1bmNoUHJvcGVydGllcyA9
IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5Ib3N0QXBwRXhlY3V0YWJsZVBhdGgs
IEAicGx1Z2luSG9zdFBhdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpwbHVnaW5BcmNoaXRlY3R1cmVdLCBAImNwdVR5cGUi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWRCdW5kbGVM
b2NhbGl6YXRpb25OYW1lKCksIEAibG9jYWxpemF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmlsXTsKLQorICAgIE5TRGljdGlvbmFyeSAqbGF1bmNoUHJvcGVy
dGllcyA9IEB7CisgICAgICAgIEAicGx1Z2luSG9zdFBhdGgiOiBwbHVnaW5Ib3N0QXBwRXhlY3V0
YWJsZVBhdGgsCisgICAgICAgIEAiY3B1VHlwZSI6IEAocGx1Z2luQXJjaGl0ZWN0dXJlKSwKKyAg
ICAgICAgQCJsb2NhbGl6YXRpb24iOiBwcmVmZXJyZWRCdW5kbGVMb2NhbGl6YXRpb25OYW1lKCks
CisgICAgfTsKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9u
IGRhdGFXaXRoUHJvcGVydHlMaXN0OmxhdW5jaFByb3BlcnRpZXMgZm9ybWF0Ok5TUHJvcGVydHlM
aXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAgIEFTU0VS
VChkYXRhKTsKIAotICAgIFtsYXVuY2hQcm9wZXJ0aWVzIHJlbGVhc2VdOwotCiAgICAga2Vybl9y
ZXR1cm5fdCBrciA9IF9XS1BBU3Bhd25QbHVnaW5Ib3N0KG1fcGx1Z2luVmVuZG9yUG9ydCwgcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEgYnl0ZXNdKSks
IFtkYXRhIGxlbmd0aF0sICZwbHVnaW5Ib3N0UG9ydCk7CiAKICAgICBpZiAoa3IgPT0gTUFDSF9T
RU5EX0lOVkFMSURfREVTVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRl
eCAzYjI5NjY2ZjdkZjZhN2RjY2E3OWQxMDM5MzM4MGI2MzhiNDgxNDRhLi5jNjQ3NzRkYzQ3ZTNl
ZTU5NTNkMmQ0OWVkZWI3ZTBiYzc4ZGNiMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQ
cm94eS5tbQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0lkZW50aWZpZXJJ
bmZvKG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQ2NF90IHNlcnZlcklkZW50aWZpCiAgICAg
ICAgIGNvbnN0IGNoYXIqIHN0ciA9IGlkZW50aWZpZXItPnN0cmluZygpOwogICAgICAgICBpbmZv
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilzdHIgbGVuZ3RoOnN0cmxlbihz
dHIpIGZyZWVXaGVuRG9uZTpOT107CiAgICAgfSBlbHNlIAotICAgICAgICBpbmZvID0gW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6aWRlbnRpZmllci0+bnVtYmVyKCldOworICAgICAgICBpbmZvID0g
QChpZGVudGlmaWVyLT5udW1iZXIoKSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0
eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmluZm8gZm9ybWF0Ok5TUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAg
IEFTU0VSVChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpp
bmRleCBkYzYyZDU1NDE0MmEzMWM4YTgwNTY2YmQ2ZGQzYWU3ZWU5NGIzNTI1Li5hNjE0NWUwMmQz
ZDYzNWYzYWQ0MTQyOWQ1NzM5ZDAzMzlkYzQyNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMzIyLDI4ICsxMzIyLDI4IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjphZGRWYWx1ZVRvQXJyYXkoTlNNdXRhYmxlQXJyYXkgKmFycmF5
LCBKU0dsb2JhCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAgaWYgKHZhbHVlLmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpTdHJpbmdWYWx1ZVR5cGVdXTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKFN0cmlu
Z1ZhbHVlVHlwZSldOwogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCldOwogICAgIH0gZWxzZSBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgewotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
OkRvdWJsZVZhbHVlVHlwZV1dOwotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOnZhbHVlLnRvTnVtYmVyKGxleGljYWxHbG9iYWxPYmplY3QpXV07Cisg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChEb3VibGVWYWx1ZVR5cGUpXTsKKyAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpAKHZhbHVlLnRvTnVtYmVyKGxleGljYWxHbG9iYWxPYmplY3QpKV07CiAg
ICAgfSBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgewotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OkJvb2xWYWx1ZVR5cGVdXTsKKyAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpAKEJvb2xWYWx1ZVR5cGUpXTsKICAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dmFsdWUudG9Cb29sZWFuKGxleGljYWxHbG9iYWxP
YmplY3QpXV07CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOdWxsVmFsdWVUeXBlXV07CisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6QChOdWxsVmFsdWVUeXBlKV07CiAgICAgZWxzZSBpZiAodmFs
dWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFs
dWUpOwogICAgICAgICB1aW50NjRfdCBvYmplY3RJRDsKICAgICAgICAgaWYgKGdldE9iamVjdElE
KHRoaXMsIG9iamVjdCwgb2JqZWN0SUQpKSB7Ci0gICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoSW50Ok5QT2JqZWN0VmFsdWVUeXBlXV07Ci0gICAgICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om9iamVjdElEXV07Cisg
ICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoTlBPYmplY3RWYWx1ZVR5cGUpXTsKKyAgICAg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChvYmplY3RJRCldOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpKU09i
amVjdFZhbHVlVHlwZV1dOwotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDptX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdCh2bSwgb2JqZWN0KV1dOwor
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKEpTT2JqZWN0VmFsdWVUeXBlKV07CisgICAg
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAobV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3Qodm0s
IG9iamVjdCkpXTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OlZvaWRWYWx1ZVR5cGVdXTsKKyAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpAKFZvaWRWYWx1ZVR5cGUpXTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6Om1hcnNoYWxWYWx1ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgZGF0YV90JiByZXN1bHREYXRhLCBtYWNoX21zZ190eXBl
X251bWJlcl90JiByZXN1bHRMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0KaW5kZXggNjM4MDFlMWNhYmFjYmFhZjEwMWEwMzhhY2U1MDUyNmYwM2YxYWZjOS4u
MGFjMTc2Y2VhMWNkNGZiYzY2YzFhYTM2MTc1MmU2ZjA3N2YyZWRjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dl
Ykhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQ
bHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNl
UGx1Z2luUGFja2FnZS5tbQppbmRleCA3MWU0MzY1NDZhOWNkNDgyYTk1NWEwYTgwYjUwYzk5ZWVk
YWYxOTU5Li5mNmE3NDc3Y2QxZGZjMmI0NWVjYTAyY2QyZGQ4MWZmNTc2NjNjMDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBh
Y2thZ2UubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgPG1hY2gtby9sb2FkZXIuaD4KICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgotI2lt
cG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWlu
ZXJDaGVjay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29u
dGFpbmVyQ2hlY2subW0KaW5kZXggMjkxMzkzYmZjYzA2MjhlZmQyMWVhNTFiNTc1OTZhNzhlZWM3
M2Y3Ni4uNzQwODg4ZmQ5NjgyMWEzNDI5YzQ3OTQxMTc1YTM3MDBkNTA3Nzg2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVj
ay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRh
aW5lckNoZWNrLm1tCkBAIC0xMDcsMTEgKzEwNywxMSBAQCAtIChCT09MKV9pc0ZvcmJpZGRlbkZp
bGVMb2FkCiAKIC0gKE5TRGljdGlvbmFyeSAqKV9hY3Rpb25JbmZvcm1hdGlvbldpdGhVUkw6KE5T
VVJMICopVVJMCiB7Ci0gICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk5h
dmlnYXRpb25UeXBlUGx1Z0luUmVxdWVzdF0sIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5LAot
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIFdlYkFjdGlvbk1vZGlm
aWVyRmxhZ3NLZXksCi0gICAgICAgICAgICAgICBVUkwsIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5
LAotICAgICAgICAgICAgICAgbmlsXTsKKyAgICByZXR1cm4gQHsKKyAgICAgICAgV2ViQWN0aW9u
TmF2aWdhdGlvblR5cGVLZXk6IEAoV2ViTmF2aWdhdGlvblR5cGVQbHVnSW5SZXF1ZXN0KSwKKyAg
ICAgICAgV2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleTogQCgwKSwKKyAgICAgICAgV2ViQWN0aW9u
T3JpZ2luYWxVUkxLZXk6IFVSTCwKKyAgICB9OwogfQogCiAtICh2b2lkKV9hc2tQb2xpY3lEZWxl
Z2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVn
aW5EYXRhYmFzZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2lu
RGF0YWJhc2UubW0KaW5kZXggNDlkZTQ1ZDRiZjI2N2MxMDI3ZWM3MzIzNzZkOGFjODU3ZDk3N2Ux
MS4uMDkzZTY5NzVkNDFlYzgyOGFiNTJjZjM4ZDRiOTY2ZDhmM2Y5NWUxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCkBA
IC0zOTAsMTEgKzM5MCwxMSBAQCArIChOU0FycmF5ICopX2RlZmF1bHRQbHVnSW5QYXRocwogICAg
IC8vIEZvciBleGFtcGxlLCBpZiB0aGVyZSBpcyBhIFF1aWNrVGltZS5wbHVnaW4gaW4gdGhlIHVz
ZXJzJ3MgaG9tZSBkaXJlY3RvcnkKICAgICAvLyB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUg
L0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1pbnMgdmVyc2lvbi4KICAgICAvLyBUaGUgcHVycG9zZSBp
cyB0byBhbGxvdyBub24tYWRtaW4gdXNlcnMgdG8gdXBkYXRlIHRoZWlyIHBsdWctaW5zLgotICAg
IHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJldHVybiBAWwogICAgICAg
ICBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGli
cmFyeS9JbnRlcm5ldCBQbHVnLUlucyJdLAogICAgICAgICBAIi9MaWJyYXJ5L0ludGVybmV0IFBs
dWctSW5zIiwKICAgICAgICAgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidWlsdEluUGx1Z0luc1Bh
dGhdLAotICAgICAgICBuaWxdOworICAgIF07CiAjZWxzZQogICAgIC8vIGlPUyBwbHVnLWlucyBh
cmUgYWxsIGxvY2F0ZWQgaW4gL1N5c3RlbS9MaWJyYXJ5L0ludGVybmV0IFBsdWctSW5zCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNDA2LDcgKzQwNiw3IEBAICsgKE5T
QXJyYXkgKilfZGVmYXVsdFBsdWdJblBhdGhzCiAgICAgTlNTdHJpbmcqIHBsYXRmb3JtUm9vdERp
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpXZWJLaXRQbGF0Zm9ybVN5c3RlbVJv
b3REaXJlY3RvcnkoKV07CiAgICAgTlNTdHJpbmcgKnN5c3RlbURpciA9IFtwbGF0Zm9ybVJvb3RE
aXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU3lzdGVtL0xpYnJhcnkiXTsKICNl
bmRpZgotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3N5c3RlbURpciBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbnRlcm5ldCBQbHVnLUlucyJdXTsKKyAgICBy
ZXR1cm4gQFtbc3lzdGVtRGlyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkludGVy
bmV0IFBsdWctSW5zIl1dOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KaW5kZXggNzNlMjMzMWViYjZj
ZmFlZGVlYTRjMWQyZjEyYWQwYmFkNTIyNjUzYy4uZTcyNzVjNzRkZGQ3NjcxYjQ1MmNiN2Q3ZGRk
MzFhM2ViMzQ0M2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTMxLDEwICszMSwxMCBAQAogI2ltcG9ydCAi
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKLQogI2ltcG9ydCA8
V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFj
a2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2lt
cG9ydCAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgpAQCAtMTA2LDExICsxMDYsNyBAQCAtIChOU0Fy
cmF5ICopZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsK
ICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBWZWN0b3I8U3RyaW5n
PiBuYW1lVmVjdG9yID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVz
KFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwotICAgIE5TTXV0YWJsZUFycmF5ICpuYW1lcyA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bmFtZVZlY3Rvci5zaXplKCld
OwotICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVWZWN0b3IpCi0gICAgICAgIFtuYW1lcyBhZGRP
YmplY3Q6KE5TU3RyaW5nICopbmFtZV07Ci0gICAgcmV0dXJuIFtuYW1lcyBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5k
YXRhYmFzZU5hbWVzKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChOU0RpY3Rpb25hcnkgKilkZXRhaWxzRm9yRGF0YWJhc2U6KE5TU3RyaW5nICopZGF0YWJh
c2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9u
UGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwubW0KaW5kZXggODk1YzRiMmQ0OWRjMWM4ZmIzMDhiYjM4MDBiMGI5MTk0NjU1YmZk
My4uMDhkNjRhMjkyNTllNGVjMjE2MjdkMjlkZjQ3NGZhN2E2MTc3OTE0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25Q
YW5lbC5tbQpAQCAtMjIsMTEgKzIyLDE0IEBACiAgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVs
LmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5
cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2
ZVRleHRUeXBlKQpAQCAtNjksMTUgKzcyLDExIEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpzaG93
KFdlYlZpZXcqIHZpZXcsIEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSCiAg
ICAgbV92aWV3ID0gdmlldzsKICAgICBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlIGluZGljYXRv
clR5cGUgPSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSh0eXBlKTsKICAgICAKLSAgICBOU011dGFi
bGVBcnJheSogYWx0ZXJuYXRpdmVTdHJpbmdzID0gMDsKLSAgICBpZiAoIWFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKLSAgICAgICAgYWx0ZXJuYXRpdmVTdHJp
bmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIFthbHRlcm5hdGl2
ZVN0cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3NbaV1dOwotICAgIH0KKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gYWx0ZXJuYXRpdmVTdHJpbmdz
OworICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKQorICAg
ICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBjcmVhdGVOU0FycmF5KGFsdGVybmF0aXZlUmVwbGFj
ZW1lbnRTdHJpbmdzKTsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2Vy
XSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTppbmRpY2F0b3JUeXBlIHByaW1hcnlTdHJp
bmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5h
dGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0Olt2aWV3IF9jb252ZXJ0UmVjdEZyb21Sb290Vmll
dzpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmddIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOmlu
ZGljYXRvclR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0
ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncy5nZXQoKSBmb3JTdHJpbmdJblJlY3Q6
W3ZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmlu
Z10gdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0
ZWRTdHJpbmcpIHsKICAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChhY2NlcHRlZFN0
cmluZywgcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJp
bmcsIGluZGljYXRvclR5cGUpOwogICAgIH1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDY2
ZjFiNDEyYzJlYzY2YjMyZTQ0YWU4YWUyMWQwOTBjNzU3MmZhMWUuLjZkNjhkZjdjNzI3ZTcxMWFl
NmYyNjg1M2RkZGU5MmIzNWU0ZDg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTQ2MCw4ICs0
NjAsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogICAgIE5TU3RyaW5nICptZXNzYWdlU291
cmNlID0gc3RyaW5nRm9yTWVzc2FnZVNvdXJjZShzb3VyY2UpOwogICAgIE5TRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OgogICAgICAgICAoTlNTdHJpbmcgKiltZXNzYWdlLCBAIm1lc3NhZ2UiLAotICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmxpbmVOdW1iZXJdLCBAImxpbmVOdW1iZXIiLAot
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvbHVtbk51bWJlcl0sIEAi
Y29sdW1uTnVtYmVyIiwKKyAgICAgICAgQChsaW5lTnVtYmVyKSwgQCJsaW5lTnVtYmVyIiwKKyAg
ICAgICAgQChjb2x1bW5OdW1iZXIpLCBAImNvbHVtbk51bWJlciIsCiAgICAgICAgIChOU1N0cmlu
ZyAqKXNvdXJjZVVSTCwgQCJzb3VyY2VVUkwiLAogICAgICAgICBtZXNzYWdlU291cmNlLCBAIk1l
c3NhZ2VTb3VyY2UiLAogICAgICAgICBzdHJpbmdGb3JNZXNzYWdlTGV2ZWwobGV2ZWwpLCBAIk1l
c3NhZ2VMZXZlbCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOWFkNDZjNjA0NzAxMmViM2U0MjM4
MDRkNDA3MjA3MDI1N2RjNWU0Ni4uOGE3NTNjNTkwMTcyMmFjYWNiNGMzMDUwYTMxZTFiZjcwOGNi
NTRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtODMsNiArODMsNyBAQAogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5M
b29wLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ1Nyw3ICs0
NTgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmlu
Z0NvbnZlcnNpb24oKQogICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IE5TRXhjbHVkZWRFbGVt
ZW50c0RvY3VtZW50QXR0cmlidXRlID0gQCJFeGNsdWRlZEVsZW1lbnRzIjsKICNlbmRpZgogCi0g
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdDpleGNsdWRlZEVsZW1lbnRzIGZvcktleTpOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVu
dEF0dHJpYnV0ZV07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsgTlNFeGNsdWRl
ZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1ZGVkRWxlbWVudHMgfTsKIAogICAgIFtl
eGNsdWRlZEVsZW1lbnRzIHJlbGVhc2VdOwogCkBAIC0xMDc5LDE1ICsxMDgwLDkgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29u
c3QgU3RyaW5nJiBjb250ZXgKICAgICAgICAgW2NoZWNrZXIgY2hlY2tTdHJpbmc6Y29udGV4dCBy
YW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0aCgpKSB0eXBlczpOU1RleHRDaGVja2lu
Z1R5cGVPcnRob2dyYXBoeSBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpz
cGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5OiZvcnRob2dyYXBoeSB3b3JkQ291
bnQ6MF07CiAgICAgICAgIGxhbmd1YWdlID0gW2NoZWNrZXIgbGFuZ3VhZ2VGb3JXb3JkUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgaW5TdHJpbmc6Y29udGV4dCBvcnRob2dy
YXBoeTpvcnRob2dyYXBoeV07CiAgICAgfQotICAgIE5TQXJyYXkqIHN0cmluZ3NBcnJheSA9IFtj
aGVja2VyIGd1ZXNzZXNGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgd29yZC5sZW5ndGgoKSkg
aW5TdHJpbmc6d29yZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAgIHVuc2lnbmVkIGNvdW50ID0gW3N0cmluZ3NB
cnJheSBjb3VudF07Ci0KLSAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgIE5TRW51bWVyYXRv
ciAqZW51bWVyYXRvciA9IFtzdHJpbmdzQXJyYXkgb2JqZWN0RW51bWVyYXRvcl07Ci0gICAgICAg
IE5TU3RyaW5nICpzdHJpbmc7Ci0gICAgICAgIHdoaWxlICgoc3RyaW5nID0gW2VudW1lcmF0b3Ig
bmV4dE9iamVjdF0pICE9IG5pbCkKLSAgICAgICAgICAgIGd1ZXNzZXMuYXBwZW5kKHN0cmluZyk7
Ci0gICAgfQorICAgIE5TQXJyYXkgKnN0cmluZ3NBcnJheSA9IFtjaGVja2VyIGd1ZXNzZXNGb3JX
b3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgd29yZC5sZW5ndGgoKSkgaW5TdHJpbmc6d29yZCBsYW5n
dWFnZTpsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50
VGFnKCldOworICAgIGlmIChzdHJpbmdzQXJyYXkuY291bnQpCisgICAgICAgIGd1ZXNzZXMgPSBt
YWtlVmVjdG9yPFN0cmluZz4oc3RyaW5nc0FycmF5KTsKIH0KIAogI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBiMDVjM2Y5ZjRl
NGQ0NWU2ZGU4NjFkMmU1ZTJhZTE3ZGU4OTA2MWU1Li5iNmEwMjYzNzljZTNlNDkwMGFiYjI5OTVi
ZmZlOGRlZjkwNWVlNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMxLDYg
KzEzMSw3IEBACiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4K
ICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2Eu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKQEAgLTE1NzIsOCArMTU3Myw4IEBAIE5TRGljdGlvbmFyeSAqV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjCiAg
ICAgTlNVUkwgKm9yaWdpbmFsVVJMID0gYWN0aW9uLnVybCgpOwogCiAgICAgTlNNdXRhYmxlRGlj
dGlvbmFyeSAqcmVzdWx0ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3RhdGljX2Nhc3Q8
aW50PihhY3Rpb24udHlwZSgpKV0sIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5LAotICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RpZmllckZsYWdzXSwgV2ViQWN0aW9uTW9kaWZp
ZXJGbGFnc0tleSwKKyAgICAgICAgQChzdGF0aWNfY2FzdDxpbnQ+KGFjdGlvbi50eXBlKCkpKSwg
V2ViQWN0aW9uTmF2aWdhdGlvblR5cGVLZXksCisgICAgICAgIEAobW9kaWZpZXJGbGFncyksIFdl
YkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCiAgICAgICAgIG9yaWdpbmFsVVJMLCBXZWJBY3Rpb25P
cmlnaW5hbFVSTEtleSwKICAgICAgICAgbmlsXTsKIApAQCAtMTU4NSw5ICsxNTg2LDkgQEAgTlNE
aWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWMKICAgICAgICAgW2VsZW1lbnQgcmVsZWFzZV07CiAKICAgICAg
ICAgaWYgKG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCi0gICAgICAgICAgICBbcmVzdWx0IHNl
dE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb3VzZUV2ZW50RGF0YS0+YnV0dG9uXSBm
b3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5XTsKKyAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0
OkAobW91c2VFdmVudERhdGEtPmJ1dHRvbikgZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoSW50OldlYkNvcmU6Ok5vQnV0dG9uXSBmb3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5XTsK
KyAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoV2ViQ29yZTo6Tm9CdXR0b24pIGZvcktl
eTpXZWJBY3Rpb25CdXR0b25LZXldOwogICAgIH0KIAogICAgIGlmIChmb3JtU3RhdGUpCkBAIC0x
Njk0LDE1ICsxNjk1LDYgQEAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXIKICAgICByZXR1cm4gV2Vi
Q29yZTo6T2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7CiB9CiAKLXN0YXRpYyBOU011dGFibGVBcnJh
eSoga2l0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCi17Ci0gICAgdW5zaWduZWQgbGVu
ID0gdmVjdG9yLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bGVuXTsKLSAgICBmb3IgKHVuc2lnbmVkIHggPSAwOyB4
IDwgbGVuOyB4KyspCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmVjdG9yW3hdXTsKLSAgICBy
ZXR1cm4gYXJyYXk7Ci19Ci0KIHN0YXRpYyBTdHJpbmcgcGFyYW1ldGVyVmFsdWUoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHBhcmFtTmFtZXMuc2l6
ZSgpOwpAQCAtMTcyMCwzNyArMTcxMiwzOSBAQCBzdGF0aWMgTlNWaWV3ICpwbHVnaW5WaWV3KFdl
YkZyYW1lICpmcmFtZSwgV2ViUGx1Z2luUGFja2FnZSAqcGx1Z2luUGFja2FnZSwKIHsKICAgICBX
ZWJIVE1MVmlldyAqZG9jVmlldyA9IChXZWJIVE1MVmlldyAqKVtbZnJhbWUgZnJhbWVWaWV3XSBk
b2N1bWVudFZpZXddOwogICAgIEFTU0VSVChbZG9jVmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1M
VmlldyBjbGFzc11dKTsKLSAgICAgICAgCisKICAgICBXZWJQbHVnaW5Db250cm9sbGVyICpwbHVn
aW5Db250cm9sbGVyID0gW2RvY1ZpZXcgX3BsdWdpbkNvbnRyb2xsZXJdOwotICAgIAorCiAgICAg
Ly8gU3RvcmUgYXR0cmlidXRlcyBpbiBhIGRpY3Rpb25hcnkgc28gdGhleSBjYW4gYmUgcGFzc2Vk
IHRvIFdlYlBsdWdpbnMuCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmF0dHJpYnV0ZVZhbHVl
cyBmb3JLZXlzOmF0dHJpYnV0ZU5hbWVzXTsKLSAgICAKKwogICAgIFtwbHVnaW5QYWNrYWdlIGxv
YWRdOwogICAgIENsYXNzIHZpZXdGYWN0b3J5ID0gW3BsdWdpblBhY2thZ2Ugdmlld0ZhY3Rvcnld
OwogICAgIAogICAgIE5TVmlldyAqdmlldyA9IG5pbDsKICAgICBOU0RpY3Rpb25hcnkgKmFyZ3Vt
ZW50cyA9IG5pbDsKLSAgICAKLSAgICBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsKLSAgICAgICAgYXJndW1l
bnRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAg
ICAgICAgYmFzZVVSTCwgV2ViUGx1Z0luQmFzZVVSTEtleSwKLSAgICAgICAgICAgIGF0dHJpYnV0
ZXMsIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXksCi0gICAgICAgICAgICBwbHVnaW5Db250cm9sbGVy
LCBXZWJQbHVnSW5Db250YWluZXJLZXksCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpsb2FkTWFudWFsbHkgPyBXZWJQbHVnSW5Nb2RlRnVsbCA6IFdlYlBsdWdJbk1vZGVFbWJl
ZF0sIFdlYlBsdWdJbk1vZGVLZXksCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6IWxvYWRNYW51YWxseV0sIFdlYlBsdWdJblNob3VsZExvYWRNYWluUmVzb3VyY2VLZXksCi0g
ICAgICAgICAgICBlbGVtZW50LCBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVudEtleSwKLSAgICAg
ICAgICAgIG5pbF07Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiYXJndW1lbnRzOlxuJUAiLCBhcmd1
bWVudHMpOworCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQot
ICAgIH0gZWxzZSBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cGx1Z2luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsKKyAgICBhdXRvIG9sZFNlbGVjdG9yID0gQHNl
bGVjdG9yKHBsdWdpblZpZXdXaXRoQXJndW1lbnRzOik7CiBJR05PUkVfV0FSTklOR1NfRU5ECi0g
ICAgICAgIGFyZ3VtZW50cyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czoKLSAgICAgICAgICAgIGJhc2VVUkwsIFdlYlBsdWdpbkJhc2VVUkxLZXksCi0gICAgICAg
ICAgICBhdHRyaWJ1dGVzLCBXZWJQbHVnaW5BdHRyaWJ1dGVzS2V5LAotICAgICAgICAgICAgcGx1
Z2luQ29udHJvbGxlciwgV2ViUGx1Z2luQ29udGFpbmVyS2V5LAotICAgICAgICAgICAgZWxlbWVu
dCwgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCi0gICAgICAgICAgICBuaWxdOworCisg
ICAgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdJblZp
ZXdXaXRoQXJndW1lbnRzOildKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEB7CisgICAgICAgICAg
ICBXZWJQbHVnSW5CYXNlVVJMS2V5OiBiYXNlVVJMLAorICAgICAgICAgICAgV2ViUGx1Z0luQXR0
cmlidXRlc0tleTogYXR0cmlidXRlcywKKyAgICAgICAgICAgIFdlYlBsdWdJbkNvbnRhaW5lcktl
eTogcGx1Z2luQ29udHJvbGxlciwKKyAgICAgICAgICAgIFdlYlBsdWdJbk1vZGVLZXk6IEAobG9h
ZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWQpLAorICAg
ICAgICAgICAgV2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleTogW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLAorICAgICAgICAgICAgV2ViUGx1Z0luQ29udGFp
bmluZ0VsZW1lbnRLZXk6IGVsZW1lbnQsCisgICAgICAgIH07CisgICAgICAgIExPRyhQbHVnaW5z
LCAiYXJndW1lbnRzOlxuJUAiLCBhcmd1bWVudHMpOworICAgIH0gZWxzZSBpZiAoW3ZpZXdGYWN0
b3J5IHJlc3BvbmRzVG9TZWxlY3RvcjpvbGRTZWxlY3Rvcl0pIHsKKyAgICAgICAgYXJndW1lbnRz
ID0gQHsKKyAgICAgICAgICAgIFdlYlBsdWdpbkJhc2VVUkxLZXk6IGJhc2VVUkwsCisgICAgICAg
ICAgICBXZWJQbHVnaW5BdHRyaWJ1dGVzS2V5OiBhdHRyaWJ1dGVzLAorICAgICAgICAgICAgV2Vi
UGx1Z2luQ29udGFpbmVyS2V5OiBwbHVnaW5Db250cm9sbGVyLAorICAgICAgICAgICAgV2ViUGx1
Z0luQ29udGFpbmluZ0VsZW1lbnRLZXk6IGVsZW1lbnQsCisgICAgICAgIH07CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiYXJndW1lbnRzOlxuJUAiLCBhcmd1bWVudHMpOwogICAgIH0KIApAQCAtMTkx
OSwxNSArMTkxMywxNSBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgIGF1dG8qIGRvY3Vt
ZW50ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+ZG9jdW1lbnQoKTsKICAgICBOU1VSTCAqYmFz
ZVVSTCA9IGRvY3VtZW50LT5iYXNlVVJMKCk7CiAgICAgTlNVUkwgKnBsdWdpblVSTCA9IHVybDsK
LSAgICBOU011dGFibGVBcnJheSAqYXR0cmlidXRlS2V5cyA9IGtpdChwYXJhbU5hbWVzKTsKKyAg
ICBhdXRvIGF0dHJpYnV0ZUtleXMgPSBjcmVhdGVOU0FycmF5KHBhcmFtTmFtZXMpOwogCi0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFNFTCBzZWxlY3Rv
ciA9IEBzZWxlY3Rvcih3ZWJWaWV3OnBsdWdJblZpZXdXaXRoQXJndW1lbnRzOik7CiAgICAgaWYg
KFtbd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7Ci0g
ICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpraXQocGFyYW1WYWx1ZXMpIGZvcktleXM6YXR0
cmlidXRlS2V5c107CisgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IEB7IGF0dHJp
YnV0ZUtleXMuZ2V0KCk6IGNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgpIH07CiAgICAg
ICAgIE5TRGljdGlvbmFyeSAqYXJndW1lbnRzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICBhdHRyaWJ1dGVzLCBXZWJQbHVnSW5BdHRy
aWJ1dGVzS2V5LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bG9hZE1hbnVh
bGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWRdLCBXZWJQbHVnSW5N
b2RlS2V5LAorICAgICAgICAgICAgQChsb2FkTWFudWFsbHkgPyBXZWJQbHVnSW5Nb2RlRnVsbCA6
IFdlYlBsdWdJbk1vZGVFbWJlZCksIFdlYlBsdWdJbk1vZGVLZXksCiAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sIFdlYlBsdWdJblNob3VsZExvYWRN
YWluUmVzb3VyY2VLZXksCiAgICAgICAgICAgICBraXQoJmVsZW1lbnQpLCBXZWJQbHVnSW5Db250
YWluaW5nRWxlbWVudEtleSwKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgcGFz
c2luZyBiYXNlIFVSTCwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzUyMTU+LgpAQCAtMTkzNiwxMSArMTkzMCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNp
egogCiAgICAgICAgIE5TVmlldyAqdmlldyA9IENhbGxVSURlbGVnYXRlKHdlYlZpZXcsIHNlbGVj
dG9yLCBhcmd1bWVudHMpOwogCi0gICAgICAgIFthdHRyaWJ1dGVzIHJlbGVhc2VdOwogICAgICAg
ICBbYXJndW1lbnRzIHJlbGVhc2VdOwogCiAgICAgICAgIGlmICh2aWV3KQotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5XaWRnZXQodmlldykpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGx1Z2luV2lkZ2V0KHZpZXcpKTsKICAgICB9CiAjZW5kaWYKIApA
QCAtMTk1Myw3ICsxOTQ2LDcgQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICAgICAgTUlN
RVR5cGUgPSBtaW1lVHlwZTsKICAgICAgICAgcGx1Z2luUGFja2FnZSA9IFt3ZWJWaWV3IF9wbHVn
aW5Gb3JNSU1FVHlwZTptaW1lVHlwZV07CiAgICAgfQotICAgIAorCiAgICAgTlNTdHJpbmcgKmV4
dGVuc2lvbiA9IFtbcGx1Z2luVVJMIHBhdGhdIHBhdGhFeHRlbnNpb25dOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTE5NzksNyArMTk3Miw3IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6CiAgICAgICAgICAgICAgICAgZG93bmNhc3Q8V2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmpl
Y3Q+KCplbGVtZW50LnJlbmRlcmVyKCkpLnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFdl
YkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBsdWdpblZlcnNpb24pOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKFtwbHVnaW5QYWNrYWdlIGlzS2luZE9mQ2xh
c3M6W1dlYlBsdWdpblBhY2thZ2UgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICB2aWV3ID0gcGx1
Z2luVmlldyhtX3dlYkZyYW1lLmdldCgpLCAoV2ViUGx1Z2luUGFja2FnZSAqKXBsdWdpblBhY2th
Z2UsIGF0dHJpYnV0ZUtleXMsIGtpdChwYXJhbVZhbHVlcyksIGJhc2VVUkwsIGtpdCgmZWxlbWVu
dCksIGxvYWRNYW51YWxseSk7CisgICAgICAgICAgICAgICAgdmlldyA9IHBsdWdpblZpZXcobV93
ZWJGcmFtZS5nZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5QYWNrYWdlLCBhdHRyaWJ1
dGVLZXlzLmdldCgpLCBjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKSwgYmFzZVVSTCwg
a2l0KCZlbGVtZW50KSwgbG9hZE1hbnVhbGx5KTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICAgICAgICAgIGVsc2UgaWYgKFtwbHVnaW5QYWNrYWdlIGlzS2luZE9mQ2xhc3M6
W1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBjbGFzc11dKSB7CiAgICAgICAgICAgICAgICAgV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldyA9IFtbW05FVFNDQVBFX1BMVUdJTl9W
SUVXIGFsbG9jXQpAQCAtMTk4OCw4ICsxOTgxLDggQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXoK
ICAgICAgICAgICAgICAgICAgICAgVVJMOnBsdWdpblVSTAogICAgICAgICAgICAgICAgICAgICBi
YXNlVVJMOmJhc2VVUkwKICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6TUlNRVR5cGUKLSAg
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlS2V5czphdHRyaWJ1dGVLZXlzCi0gICAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlczpraXQocGFyYW1WYWx1ZXMpCisgICAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZUtleXM6YXR0cmlidXRlS2V5cy5nZXQoKQorICAgICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVWYWx1ZXM6Y3JlYXRlTlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCkKICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5OmxvYWRNYW51YWxseQogICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50OiZlbGVtZW50XSBhdXRvcmVsZWFzZV07CiAKQEAgLTIwODMsOCArMjA3
Niw4IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvCiAgICAgICAgICAgICAgICAgICAgIFVSTDpu
aWwKICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNlVVJMCiAgICAgICAgICAgICAgICAg
ICAgIE1JTUVUeXBlOk1JTUVUeXBlCi0gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUtleXM6
a2l0KHBhcmFtTmFtZXMpCi0gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlczpraXQo
cGFyYW1WYWx1ZXMpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUtleXM6Y3JlYXRlTlNB
cnJheShwYXJhbU5hbWVzKS5nZXQoKQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1
ZXM6Y3JlYXRlTlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hbnVhbGx5Ok5PCiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6JmVsZW1lbnRdIGF1
dG9yZWxlYXNlXTsKICAgICAgICAgICAgICAgICBpZiAodmlldykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIubW0KaW5kZXggNTVmYjJiZGZhZDFhNWY3NzRjODIxMjIzY2E3ODYy
ODE5ZmMxNGRmMC4uYWFhNGFmYjVmY2M2YWVjOGNmNGIzYjFmMjFjODMyMTBjMjdkNDMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0KQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2ltcG9ydCA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9JY29uLmg+CkBAIC02NCwxMSArNjUsNyBAQCAtICh2
b2lkKWNob29zZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1lcwogICAgIEFTU0VSVChfY2hv
b3Nlcik7CiAgICAgaWYgKCFfY2hvb3NlcikKICAgICAgICAgcmV0dXJuOwotICAgIE5TVUludGVn
ZXIgY291bnQgPSBbZmlsZW5hbWVzIGNvdW50XTsKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lcyhj
b3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAg
ICAgbmFtZXNbaV0gPSBbZmlsZW5hbWVzIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgX2Nob29zZXIt
PmNob29zZUZpbGVzKG5hbWVzKTsKKyAgICBfY2hvb3Nlci0+Y2hvb3NlRmlsZXMobWFrZVZlY3Rv
cjxTdHJpbmc+KGZpbGVuYW1lcykpOwogICAgIF9jaG9vc2VyID0gbnVsbHB0cjsKIH0KIApAQCAt
NzYsNyArNzMsNyBAQCAtICh2b2lkKWNob29zZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1l
cwogCiAtICh2b2lkKWNob29zZUZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGRpc3BsYXlT
dHJpbmc6KE5TU3RyaW5nICopZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6KENHSW1hZ2VSZWYpaW1h
Z2VSZWYKIHsKLSAgICBbc2VsZiBjaG9vc2VGaWxlbmFtZXM6W05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OmZpbGVuYW1lXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOmltYWdl
UmVmXTsKKyAgICBbc2VsZiBjaG9vc2VGaWxlbmFtZXM6QFtmaWxlbmFtZV0gZGlzcGxheVN0cmlu
ZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTppbWFnZVJlZl07CiB9CiAKIC0gKHZvaWQpY2hvb3Nl
RmlsZW5hbWVzOihOU0FycmF5ICopZmlsZW5hbWVzIGRpc3BsYXlTdHJpbmc6KE5TU3RyaW5nICop
ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2VSZWYKQEAgLTg1LDExICs4
Miw3IEBAIC0gKHZvaWQpY2hvb3NlRmlsZW5hbWVzOihOU0FycmF5ICopZmlsZW5hbWVzIGRpc3Bs
YXlTdHJpbmc6KE5TU3RyaW5nICopZGlzcGxheVN0CiAgICAgaWYgKCFfY2hvb3NlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0gICAgbmFtZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShbZmlsZW5hbWVzIGNvdW50XSk7Ci0gICAgZm9yIChOU1N0cmluZyAq
ZmlsZW5hbWUgaW4gZmlsZW5hbWVzKQotICAgICAgICBuYW1lcy51bmNoZWNrZWRBcHBlbmQoZmls
ZW5hbWUpOwotICAgIF9jaG9vc2VyLT5jaG9vc2VNZWRpYUZpbGVzKG5hbWVzLCBkaXNwbGF5U3Ry
aW5nLCBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoaW1hZ2VSZWYpLmdldCgpKTsKKyAgICBfY2hv
b3Nlci0+Y2hvb3NlTWVkaWFGaWxlcyhtYWtlVmVjdG9yPFN0cmluZz4oZmlsZW5hbWVzKSwgZGlz
cGxheVN0cmluZywgSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGltYWdlUmVmKS5nZXQoKSk7CiAg
ICAgX2Nob29zZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLm1tCmluZGV4IDkzNDM3NTdhYTVkY2MwY2IyMWY4MTEwMjFmNDQ0YzIyM2Qw
ZTUwZTcuLjkzYmVkNjlhMTQ3MzhmODM2MWIxZjg2NzYwM2ZmODExZGIwNTllYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCkBAIC00MCw3ICs0MCw3IEBA
IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlcihXZWJWaWV3ICp3ZWJWaWV3KQogewogfQogCi12b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3ZvaWQgV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyp0ZWxlcGhvbmVOdW1i
ZXJzKi8sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKIHsKICAgICBQYWdlKiBwYWdl
ID0gW21fd2ViVmlldyBwYWdlXTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiZDlhNjc4MWJiZWEwNjExZTJlNGQ3MDQ5
NjA4NmNlZmQ1OGIxMTRiLi4yYWJiZDkyNGI3ZWEwMGRhMzAzOTgyZTEwZDQ2MGM1MWFiYzgyMzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEw
OCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvbWFya3VwLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCAiV2ViTWFpbERlbGVnYXRlLmgiCkBAIC0xMDkxLDYgKzEwOTIsNyBA
QCAtIChXZWJGcmFtZUxvYWRUeXBlKV9sb2FkVHlwZQogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKwogLSAoQk9PTCluZWVkc0xheW91dAogewogICAgIC8vIE5lZWRlZCBmb3IgTWFpbCA8
cmRhcjovL3Byb2JsZW0vNjIyODAzOD4KQEAgLTExMDcsMzkgKzExMDksMjYgQEAgLSAoQk9PTClf
bG9hZHNTeW5jaHJvbm91c2x5CiAgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRl
cigpLmxvYWRzU3luY2hyb25vdXNseSgpOwogfQogCi0vLyBGSVhNRTogc2VsZWN0aW9uCi0KIC0g
KE5TQXJyYXkgKilfcmVjdHNGb3JSYW5nZTooRE9NUmFuZ2UgKilkb21SYW5nZQogewogICAgIGF1
dG8qIHJhbmdlID0gY29yZShkb21SYW5nZSk7Ci0gICAgCisgICAgaWYgKCFyYW5nZSkKKyAgICAg
ICAgcmV0dXJuIEBbXTsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gaW50UmVjdHM7CiAg
ICAgcmFuZ2UtPmFic29sdXRlVGV4dFJlY3RzKGludFJlY3RzLCBOTyk7Ci0gICAgdW5zaWduZWQg
c2l6ZSA9IGludFJlY3RzLnNpemUoKTsKLSAgICAKLSAgICBOU011dGFibGVBcnJheSAqcmVjdEFy
cmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgW3JlY3RBcnJheSBhZGRP
YmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDooQ0dSZWN0IClpbnRSZWN0c1tpXV1dOwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gcmVjdEFycmF5OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KGludFJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChET01SYW5nZSAqKV9zZWxlY3Rpb25S
YW5nZUZvckZpcnN0UG9pbnQ6KENHUG9pbnQpZmlyc3Qgc2Vjb25kUG9pbnQ6KENHUG9pbnQpc2Vj
b25kCiB7Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGZpcnN0UG9zID0gW3NlbGYgX3Zp
c2libGVQb3NpdGlvbkZvclBvaW50OmZpcnN0XTsKLSAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b24gc2Vjb25kUG9zID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBvaW50OnNlY29uZF07Ci0g
ICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oZmlyc3RQb3MsIHNlY29uZFBv
cyk7Ci0gICAgRE9NUmFuZ2UgKnJhbmdlID0ga2l0KHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsKLSAgICByZXR1cm4gcmFuZ2U7ICAgIAorICAgIGF1dG8gZmlyc3RQb3NpdGlv
biA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpmaXJzdF07CisgICAgYXV0byBzZWNv
bmRQb3NpdGlvbiA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpzZWNvbmRdOworICAg
IHJldHVybiBraXQoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uLCBzZWNv
bmRQb3NpdGlvbikudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAKIC0gKERPTVJhbmdl
ICopX3NlbGVjdGlvblJhbmdlRm9yUG9pbnQ6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24gcG9zID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBvaW50OnBv
aW50XTsKLSAgICBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihwb3MpOwotICAg
IERPTVJhbmdlICpyYW5nZSA9IGtpdChzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSk7Ci0gICAgcmV0dXJuIHJhbmdlOworICAgIHJldHVybiBraXQoV2ViQ29yZTo6VmlzaWJsZVNl
bGVjdGlvbihbc2VsZiBfdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6cG9pbnRdKS50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC0yMjcxLDIxICsyMjYwLDIxIEBAIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQ
cmludFNjYWxlRmFjdG9yOihmbG9hdClwcmludFNjYWxlRmFjdG9yIHBhZ2VTCiB7CiAgICAgaWYg
KHByaW50U2NhbGVGYWN0b3IgPD0gMCkgewogICAgICAgICBMT0dfRVJST1IoInByaW50U2NhbGVG
YWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJmIiwgcHJpbnRTY2FsZUZhY3Rvcik7Ci0gICAgICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgfQogCiAgICAg
aWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgICAgICByZXR1cm4gQFtdOwogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJu
IEBbXTsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICBpZiAoIV9wcml2
YXRlLT5jb3JlRnJhbWUtPnZpZXcoKS0+ZG9jdW1lbnRWaWV3KCkpCi0gICAgICAgIHJldHVybiBb
TlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAKICAgICBhdXRvKiByb290ID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOwogICAgIGlmICgh
cm9vdCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBb
XTsKIAogICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50UmVjdCA9IHJvb3QtPmRvY3VtZW50UmVjdCgp
OwogICAgIGZsb2F0IHByaW50V2lkdGggPSByb290LT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBzdGF0aWNfY2FzdDxmbG9hdD4oZG9jdW1lbnRSZWN0LndpZHRoKCkpIC8gcHJp
bnRTY2FsZUZhY3RvciA6IHBhZ2VTaXplLndpZHRoOwpAQCAtMjI5MywxMyArMjI4Miw3IEBAIC0g
KE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOihmbG9hdClw
cmludFNjYWxlRmFjdG9yIHBhZ2VTCiAKICAgICBXZWJDb3JlOjpQcmludENvbnRleHQgcHJpbnRD
b250ZXh0KF9wcml2YXRlLT5jb3JlRnJhbWUpOwogICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFn
ZVJlY3RzV2l0aFBhZ2VTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShwcmludFdpZHRoLCBwcmludEhl
aWdodCksIHRydWUpOwotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJl
Y3RzID0gcHJpbnRDb250ZXh0LnBhZ2VSZWN0cygpOwotCi0gICAgc2l6ZV90IHNpemUgPSBwYWdl
UmVjdHMuc2l6ZSgpOwotICAgIE5TTXV0YWJsZUFycmF5ICpwYWdlcyA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgW3BhZ2VzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0
Ok5TUmVjdChwYWdlUmVjdHNbaV0pXV07Ci0gICAgcmV0dXJuIHBhZ2VzOworICAgIHJldHVybiBj
cmVhdGVOU0FycmF5KHByaW50Q29udGV4dC5wYWdlUmVjdHMoKSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNjIzLDcgKzI2MDYsNyBAQCAtIChOU0Fy
cmF5ICopY2hpbGRGcmFtZXMKIHsKICAgICBhdXRvIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3Jl
RnJhbWU7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgTlNNdXRhYmxlQXJyYXkgKmNoaWxkcmVuID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVGcmFtZS0+dHJlZSgpLmNoaWxk
Q291bnQoKV07CiAgICAgZm9yIChXZWJDb3JlOjpGcmFtZSogY2hpbGQgPSBjb3JlRnJhbWUtPnRy
ZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxp
bmcoKSkKICAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpraXQoY2hpbGQpXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDViYTJlNzgw
NDZmNDY4MDdkMThlYjQxODc3M2FlOGIyMTQyMWZmZTIuLmM5MTU1YjE2Y2RmMDdlYjFjOWFkMGM0
YWJhMGU5MjgzNDc0M2M1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2Jq
Q1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9S
TShNQUMpCiAjaW1wb3J0ICJXZWJOU0V2ZW50RXh0cmFzLmgiCkBAIC0xOTk1LDcgKzE5OTYsNyBA
QCArIChOU0FycmF5ICopX2luc2VydGFibGVQYXN0ZWJvYXJkVHlwZXMKICsgKE5TQXJyYXkgKilf
c2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwdXQg
ZGF0YSBmb3IgTlNIVE1MUGJvYXJkVHlwZSBvbiB0aGUgcGFzdGVib2FyZCBidXQgTWljcm9zb2Z0
IEV4Y2VsIGRvZXNuJ3QgbGlrZSBvdXIgZm9ybWF0IG9mIEhUTUwgKDM2NDA0MjMpLgotICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBXZWJD
b3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgbmlsXTsK
KyAgICByZXR1cm4gQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogfQogCiBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19CRUdJTgpAQCAtNDQwNCw3ICs0NDA1LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKGRyYWdnaW5nRWxlbWVudFVSTCkKICAg
ICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBfd2Via2l0X3NldE1ldGFkYXRh
VVJMOltkcmFnZ2luZ0VsZW1lbnRVUkwgYWJzb2x1dGVTdHJpbmddIHJlZmVycmVyOm5pbCBhdFBh
dGg6cGF0aF07CiAgICAgCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0
aCBsYXN0UGF0aENvbXBvbmVudF1dOworICAgIHJldHVybiBAW1twYXRoIGxhc3RQYXRoQ29tcG9u
ZW50XV07CiB9CiAKIC8vIE1BUks6IE5TRHJhZ2dpbmdTb3VyY2UKQEAgLTQ4ODEsNyArNDg4Miw3
IEBAIC0gKEJPT0wpa25vd3NQYWdlUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKXJhbmdlCiAgICAgLy8g
YSBibGFuayBwYWdlICh3aXRoIGNvcnJlY3QtbG9va2luZyBoZWFkZXIgYW5kIGZvb3RlciBpZiB0
aGF0IG9wdGlvbiBpcyBvbiksIHdoaWNoIG1hdGNoZXMKICAgICAvLyB0aGUgYmVoYXZpb3Igb2Yg
SUUgYW5kIENhbWlubyBhdCBsZWFzdC4KICAgICBpZiAoW25ld1BhZ2VSZWN0cyBjb3VudF0gPT0g
MCkKLSAgICAgICAgbmV3UGFnZVJlY3RzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxLCAxKV1dOworICAgICAgICBuZXdQ
YWdlUmVjdHMgPSBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxLCAx
KV1dOwogCiAgICAgX3ByaXZhdGUtPnBhZ2VSZWN0cyA9IG5ld1BhZ2VSZWN0czsKIApAQCAtNTAx
OSw3ICs1MDIwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlkIGFjY1RyZWUgPSBbW3NlbGYgX2ZyYW1lXSBhY2Nl
c3NpYmlsaXR5Um9vdF07CiAgICAgICAgIGlmIChhY2NUcmVlKQotICAgICAgICAgICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDphY2NUcmVlXTsKKyAgICAgICAgICAgIHJldHVybiBA
W2FjY1RyZWVdOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAgICByZXR1cm4gW3N1cGVy
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVOYW1lXTsKQEAgLTUyOTIsNyAr
NTI5Myw3IEBAIC0gKHZvaWQpY29weUZvbnQ6KGlkKXNlbmRlcgogICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIE5TUGFzdGVib2FyZCAqZm9udFBhc3RlYm9h
cmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpOU0ZvbnRQYm9hcmRdOwogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtmb250UGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZvbnRQ
YXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOworICAgIFtmb250UGFzdGVib2FyZCBkZWNsYXJl
VHlwZXM6QFtXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsK
ICAgICBbZm9udFBhc3RlYm9hcmQgc2V0RGF0YTpbc2VsZiBfc2VsZWN0aW9uU3RhcnRGb250QXR0
cmlidXRlc0FzUlRGXSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeUZvbnRQYXN0ZWJvYXJkVHlwZSgp
XTsKIH0KIApAQCAtNjAyMyw3ICs2MDI0LDcgQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6
KE5ha2VkUHRyPFdlYkNvcmU6OktleWJvYXJkRXZlbnQ+KWV2ZW50IHNhdmluZ0NvbW1hbmQKICAg
ICAgICAgLy8gZXhlY3V0ZSB0aGUgY2FsbHMgaW1tZWRpYXRlbHkuIERPTSBldmVudHMgbGlrZSBr
ZXlkb3duIGFyZSB0d2Vha2VkIHRvIGhhdmUga2V5Q29kZSBvZiAyMjksIGFuZCBjYW5jZWxpbmcg
dGhlbSBoYXMgbm8gZWZmZWN0LgogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBu
byByZWFsIGRpZmZlcmVuY2UgYmV0d2VlbiBwbGFpbiB0ZXh0IGlucHV0IGFuZCBJTSBwcm9jZXNz
aW5nIC0gZm9yIGV4YW1wbGUsIEFwcEtpdCBxdWVyaWVzIGhhc01hcmtlZFRleHQKICAgICAgICAg
Ly8gd2hlbiB0eXBpbmcgd2l0aCBVLlMuIGtleWJvYXJkLCBhbmQgaW5zZXJ0cyBtYXJrZWQgdGV4
dCBmb3IgZGVhZCBrZXlzLgotICAgICAgICBbc2VsZiBpbnRlcnByZXRLZXlFdmVudHM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0Om1hY0V2ZW50XV07CisgICAgICAgIFtzZWxmIGludGVycHJldEtl
eUV2ZW50czpAW21hY0V2ZW50XV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQXJlIHRoZXJl
IGNvbW1hbmRzIHRoYXQgY291bGQganVzdCBjYXVzZSB0ZXh0IGluc2VydGlvbiBpZiBleGVjdXRl
ZCB2aWEgRWRpdG9yPwogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZv
cm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgdGhleSBzaG91bGQgYmUgdHJlYXRlZCwg
c28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlCkBAIC02ODM0LDE4ICs2ODM1LDEwIEBAIC0gKE5T
QXJyYXkgKilzZWxlY3Rpb25UZXh0UmVjdHMKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25d
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4g
bGlzdDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0czsKICAgICBpZiAoYXV0
byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS5nZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKGxpc3QpOwotCi0gICAg
c2l6ZV90IHNpemUgPSBsaXN0LnNpemUoKTsKLQotICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6W05T
VmFsdWUgdmFsdWVXaXRoUmVjdDpsaXN0W2ldXV07Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3Rhbmds
ZXMocmVjdHMpOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1ZpZXcgKilzZWxlY3Rpb25WaWV3CkBAIC03MTMxLDE3ICs3MTI0LDEyIEBA
IC0gKE5TQXJyYXkgKilyZWN0c0ZvclRleHRNYXRjaGVzCiB7CiAgICAgYXV0byogY29yZUZyYW1l
ID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICBhdXRvKiBkb2N1
bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAg
ICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwogCi0gICAgVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHMgPSBkb2N1bWVudC0+bWFya2VycygpLnJlbmRl
cmVkUmVjdHNGb3JNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpOwot
ICAgIHVuc2lnbmVkIGNvdW50ID0gcmVjdHMuc2l6ZSgpOwotICAgIE5TTXV0YWJsZUFycmF5ICpy
ZXN1bHQgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y291bnRdOwotICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQotICAgICAgICBb
cmVzdWx0IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnJlY3RzW2luZGV4XV1dOyAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGRvY3VtZW50
LT5tYXJrZXJzKCkucmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6OlRleHRNYXRjaCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpX2ZpbmRTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IGU0ZDA2NDI5ZDllYzNkOTY3NTZlNWZhMmI2NWMwZThlYTY3MzhiNDQuLmVi
Y2EzYjA4NGU2YjVmMDFhM2I1Y2ZkYWZlN2NhMWFlYzI5NGQzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMzksMjUgKzM5LDI1IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQREZSZXByZXNlbnRh
dGlvbgogCiArIChOU0FycmF5ICopcG9zdFNjcmlwdE1JTUVUeXBlcwogewotICAgIHJldHVybiBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJldHVybiBAWwogICAgICAgICBAImFwcGxp
Y2F0aW9uL3Bvc3RzY3JpcHQiLAotICAgICAgICBuaWxdOworICAgIF07CiB9CiAKICsgKE5TQXJy
YXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIHsKICAgICByZXR1cm4gW1tbc2VsZiBjbGFzc10gcG9z
dFNjcmlwdE1JTUVUeXBlc10gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6Ci0gICAgICAg
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgIEBbCiAgICAgICAgICAgICBAInRl
eHQvcGRmIiwKICAgICAgICAgICAgIEAiYXBwbGljYXRpb24vcGRmIiwKLSAgICAgICAgICAgIG5p
bF1dOworICAgICAgICBdCisgICAgXTsKIH0KIAogKyAoQ2xhc3MpUERGRG9jdW1lbnRDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGVj
N2JlZmM4ZTVjMTg0NWNmNzkzZTBlYWRhYjZkMDNkYjdlM2Y0YWMuLjcxMGM5N2JiMDRhYjRmOTQy
ODAwMjNkOTExZTJmMTA0ZTA3NmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTU5MCwxMyArNTkwLDEwIEBAIC0gKHZvaWQpdmlld0Rp
ZE1vdmVUb0hvc3RXaW5kb3cKIAogLSAoTlNEaWN0aW9uYXJ5ICopZWxlbWVudEF0UG9pbnQ6KE5T
UG9pbnQpcG9pbnQKIHsKLSAgICBXZWJGcmFtZSAqZnJhbWUgPSBbZGF0YVNvdXJjZSB3ZWJGcmFt
ZV07Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICAKLSAgICByZXR1cm4gW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBmcmFtZSwgV2ViRWxlbWVudEZy
YW1lS2V5LCAKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOltzZWxmIF9wb2ludElz
SW5TZWxlY3Rpb246cG9pbnRdXSwgV2ViRWxlbWVudElzU2VsZWN0ZWRLZXksCi0gICAgICAgIG5p
bF07CisgICAgcmV0dXJuIEB7CisgICAgICAgIFdlYkVsZW1lbnRGcmFtZUtleTogW2RhdGFTb3Vy
Y2Ugd2ViRnJhbWVdLAorICAgICAgICBXZWJFbGVtZW50SXNTZWxlY3RlZEtleTogQChbc2VsZiBf
cG9pbnRJc0luU2VsZWN0aW9uOnBvaW50XSksCisgICAgfTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5
ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgYWxsb3dTaGFkb3dDb250ZW50OihCT09M
KWFsbG93CkBAIC03OTUsMTAgKzc5MiwxMCBAQCAtIChpZCl2aWV3U3RhdGUKIHsKICAgICBOU011
dGFibGVBcnJheSAqc3RhdGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6NF07
CiAgICAgUERGRGlzcGxheU1vZGUgbW9kZSA9IFtQREZTdWJ2aWV3IGRpc3BsYXlNb2RlXTsKLSAg
ICBbc3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om1vZGVdXTsKKyAgICBb
c3RhdGUgYWRkT2JqZWN0OkAobW9kZSldOwogICAgIGlmIChtb2RlID09IGtQREZEaXNwbGF5U2lu
Z2xlUGFnZSB8fCBtb2RlID09IGtQREZEaXNwbGF5VHdvVXApIHsKICAgICAgICAgdW5zaWduZWQg
aW50IHBhZ2VJbmRleCA9IFtbUERGU3VidmlldyBkb2N1bWVudF0gaW5kZXhGb3JQYWdlOltQREZT
dWJ2aWV3IGN1cnJlbnRQYWdlXV07Ci0gICAgICAgIFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhVbnNpZ25lZEludDpwYWdlSW5kZXhdXTsKKyAgICAgICAgW3N0YXRlIGFkZE9i
amVjdDpAKHBhZ2VJbmRleCldOwogICAgIH0gIC8vIGVsc2UgaW4gY29udGludW91cyBtb2Rlcywg
c2Nyb2xsIHBvc2l0aW9uIGdldHMgdXMgdG8gdGhlIHJpZ2h0IHBhZ2UKICAgICBCT09MIGF1dG9T
Y2FsZUZsYWcgPSBbUERGU3VidmlldyBhdXRvU2NhbGVzXTsKICAgICBbc3RhdGUgYWRkT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoQm9vbDphdXRvU2NhbGVGbGFnXV07CkBAIC04ODIsNyArODc5
LDcgQEAgLSAoTlNSZWN0KXNlbGVjdGlvblJlY3QKIC0gKE5TQXJyYXkgKilzZWxlY3Rpb25UZXh0
UmVjdHMKIHsKICAgICAvLyBGSVhNRTogV2UnZCBuZWVkIG5ldyBQREZLaXQgQVBJL1NQSSB0byBn
ZXQgbXVsdGlwbGUgdGV4dCByZWN0cyBmb3Igc2VsZWN0aW9ucyB0aGF0IGludGVyc2VjdCBtb3Jl
IHRoYW4gb25lIGxpbmUKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYgc2VsZWN0aW9uUmVjdF1dXTsKKyAgICByZXR1cm4gQFtb
TlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIHNlbGVjdGlvblJlY3RdXV07CiB9CiAKIC0gKE5T
VmlldyAqKXNlbGVjdGlvblZpZXcKQEAgLTkyNiw3ICs5MjMsNyBAQCAtIChOU1JlY3Qpc2VsZWN0
aW9uSW1hZ2VSZWN0CiAKIC0gKE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24K
IHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgbmlsXTsKKyAgICByZXR1cm4g
QFtXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRG
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07
CiB9CiAKIC0gKHZvaWQpd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5
ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCkBAIC0xMTI0
LDIyICsxMTIxLDIzIEBAIHN0YXRpYyB2b2lkIHJlbW92ZVVzZWxlc3NNZW51SXRlbVNlcGFyYXRv
cnMoTlNNdXRhYmxlQXJyYXkgKm1lbnVJdGVtcykKIC0gKE5TTXV0YWJsZUFycmF5ICopX21lbnVJ
dGVtc0Zyb21QREZLaXRGb3JFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50CiB7CiAgICAgTlNNdXRh
YmxlQXJyYXkgKmNvcGllZEl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBOU0Rp
Y3Rpb25hcnkgKmFjdGlvbnNUb1RhZ3MgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzQW5kS2V5czoKKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVj
dG9yIikKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZBY3R1
YWxTaXplXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikp
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERlpvb21Jbl0s
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tSW46KSksCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGWm9vbU91dF0sIE5TU3RyaW5nRnJvbVNl
bGVjdG9yKEBzZWxlY3Rvcih6b29tT3V0OikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpXZWJNZW51SXRlbVBERkF1dG9TaXplXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVj
dG9yKF9zZXRBdXRvU2l6ZTopKSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2Vi
TWVudUl0ZW1QREZTaW5nbGVQYWdlXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9z
ZXRTaW5nbGVQYWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51
SXRlbVBERlNpbmdsZVBhZ2VTY3JvbGxpbmddLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0
b3IoX3NldFNpbmdsZVBhZ2VTY3JvbGxpbmc6KSksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50OldlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihA
c2VsZWN0b3IoX3NldERvdWJsZVBhZ2U6KSksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OldlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmddLCBOU1N0cmluZ0Zyb21TZWxl
Y3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSksCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGQ29udGludW91c10sIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3RvcihfdG9nZ2xlQ29udGludW91czopKSwKLSAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZOZXh0UGFnZV0sIE5TU3RyaW5nRnJvbVNl
bGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSksCi0gICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OldlYk1lbnVJdGVtUERGUHJldmlvdXNQYWdlXSwgTlNTdHJpbmdGcm9tU2VsZWN0
b3IoQHNlbGVjdG9yKGdvVG9QcmV2aW91c1BhZ2U6KSksCi1JR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zVG9UYWdzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZBY3R1YWxTaXpl
KSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikpLAorICAg
ICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbUluKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVj
dG9yKHpvb21JbjopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERlpvb21PdXQpLCBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbU91dDopKSwKKyAgICAgICAgQChXZWJNZW51SXRl
bVBERkF1dG9TaXplKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBdXRvU2l6
ZTopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2UpLCBOU1N0cmluZ0Zyb21T
ZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2U6KSksCisgICAgICAgIEAoV2ViTWVudUl0
ZW1QREZTaW5nbGVQYWdlU2Nyb2xsaW5nKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9y
KF9zZXRTaW5nbGVQYWdlU2Nyb2xsaW5nOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGRmFj
aW5nUGFnZXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2U6
KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc1Njcm9sbGluZyksIE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZVNjcm9sbGluZzopKSwKKyAg
ICAgICAgQChXZWJNZW51SXRlbVBERkNvbnRpbnVvdXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihA
c2VsZWN0b3IoX3RvZ2dsZUNvbnRpbnVvdXM6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZO
ZXh0UGFnZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSks
CisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpLCBOU1N0cmluZ0Zyb21TZWxl
Y3RvcihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFnZTopKSwKICAgICAgICAgbmlsXTsKLSAgICAK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKwogICAgIC8vIExlYXZlIHRoZXNlIG1lbnUgaXRlbXMgb3V0
LCBzaW5jZSBXZWJLaXQgaW5zZXJ0cyBlcXVpdmFsZW50IG9uZXMuIE5vdGUgdGhhdCB3ZSBsZWF2
ZSBvdXQgUERGS2l0J3MgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIKICAgICAvLyBpdGVtIGhlcmUg
YmVjYXVzZSBXZWJLaXQgYWxyZWFkeSBpbmNsdWRlcyBhbiBpdGVtIHdpdGggdGhlIHNhbWUgdGl0
bGUgYW5kIHB1cnBvc2UuIFdlIG1hcCBXZWJLaXQncyB0byBQREZLaXQncyAKICAgICAvLyAiTG9v
ayBVcCBpbiBEaWN0aW9uYXJ5IiB2aWEgdGhlIGltcGxlbWVudGF0aW9uIG9mIC1bV2ViUERGVmll
dyBfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6XS4KQEAgLTEyNjUsMjAgKzEyNjMsMTMgQEAg
LSAodm9pZClfb3BlbldpdGhGaW5kZXI6KGlkKXNlbmRlcgogICAgIGlmIChvcGF0aCkgewogICAg
ICAgICBpZiAoIXdyaXR0ZW4pIHsKICAgICAgICAgICAgIC8vIENyZWF0ZSBhIFBERiBmaWxlIHdp
dGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgKG9ubHkgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVu
dCB1c2VyLCBzZWUgNDE0NTcxNCkKLSAgICAgICAgICAgIE5TTnVtYmVyICpwZXJtaXNzaW9ucyA9
IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50OlNfSVJVU1JdOwotICAgICAgICAgICAgTlNE
aWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHNBbmRLZXlzOnBlcm1pc3Npb25zLCBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zLCBuaWxd
OwotICAgICAgICAgICAgW3Blcm1pc3Npb25zIHJlbGVhc2VdOwotCi0gICAgICAgICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZUZpbGVBdFBhdGg6b3BhdGggY29udGVu
dHM6W2RhdGFTb3VyY2UgZGF0YV0gYXR0cmlidXRlczpmaWxlQXR0cmlidXRlc107Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIFtmaWxlQXR0cmlidXRlcyByZWxlYXNlXTsKKyAgICAgICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRmlsZUF0UGF0aDpvcGF0aCBj
b250ZW50czpbZGF0YVNvdXJjZSBkYXRhXSBhdHRyaWJ1dGVzOkB7IE5TRmlsZVBvc2l4UGVybWlz
c2lvbnM6IEAoU19JUlVTUikgfV07CiAgICAgICAgICAgICB3cml0dGVuID0gWUVTOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgICAgICBpZiAoIVtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuRmlsZTpv
cGF0aF0pIHsKLSAgICAgICAgICAgIC8vIE5TV29ya3NwYWNlIGNvdWxkbid0IG9wZW4gZmlsZS4g
IERvIHdlIG5lZWQgYW4gYWxlcnQKLSAgICAgICAgICAgIC8vIGhlcmU/ICBXZSBpZ25vcmUgdGhl
IGVycm9yIGVsc2V3aGVyZS4KKyAgICAgICAgICAgIC8vIE5TV29ya3NwYWNlIGNvdWxkbid0IG9w
ZW4gZmlsZS4gRG8gd2UgbmVlZCBhbiBhbGVydCBoZXJlPyBXZSBpZ25vcmUgdGhlIGVycm9yIGVs
c2V3aGVyZS4KICAgICAgICAgfQogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICB9CkBAIC0xMzQ1LDEyICsxMzM2LDcgQEAgLSAoUERGVmlldyAqKV9QREZTdWJ2
aWV3CiAtIChCT09MKV9wb2ludElzSW5TZWxlY3Rpb246KE5TUG9pbnQpcG9pbnQKIHsKICAgICBQ
REZQYWdlICpwYWdlID0gW1BERlN1YnZpZXcgcGFnZUZvclBvaW50OnBvaW50IG5lYXJlc3Q6Tk9d
OwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAgIE5TUmVjdCBz
ZWxlY3Rpb25SZWN0ID0gW1BERlN1YnZpZXcgY29udmVydFJlY3Q6W1tQREZTdWJ2aWV3IGN1cnJl
bnRTZWxlY3Rpb25dIGJvdW5kc0ZvclBhZ2U6cGFnZV0gZnJvbVBhZ2U6cGFnZV07Ci0gICAgCi0g
ICAgcmV0dXJuIE5TUG9pbnRJblJlY3QocG9pbnQsIHNlbGVjdGlvblJlY3QpOworICAgIHJldHVy
biBwYWdlICYmIE5TUG9pbnRJblJlY3QocG9pbnQsIFtQREZTdWJ2aWV3IGNvbnZlcnRSZWN0Oltb
UERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBib3VuZHNGb3JQYWdlOnBhZ2VdIGZyb21QYWdl
OnBhZ2VdKTsKIH0KIAogLSAodm9pZClfc2NhbGVPckRpc3BsYXlNb2RlT3JQYWdlQ2hhbmdlZDoo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDAyNzkzOTQzMDgwNDZiOGEyODNh
YjZhYTM2MDQ4MjlhYjI5ZmQxYjcuLjE4MDkyOWM0ZDFmNjk3ZjcwNDE5OGMzZDljOGM4NTJiZDZk
ZTY5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQpAQCAtNDY1LDE3ICs0NjUsMTYgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
ICAgIEAiMCIsIFdlYktpdFBERlNjYWxlRmFjdG9yUHJlZmVyZW5jZUtleSwKICNlbmRpZgogICAg
ICAgICBAIjAiLCBXZWJLaXRVc2VTaXRlU3BlY2lmaWNTcG9vZmluZ1ByZWZlcmVuY2VLZXksCi0g
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRC
ZWhhdmlvcl0sIFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSwKKyAgICAg
ICAgQChXZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3IpLCBXZWJLaXRFZGl0YWJsZUxp
bmtCZWhhdmlvclByZWZlcmVuY2VLZXksCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0b21h
dGljYWxseUluY2x1ZGVkXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtl
eSwKKyAgICAgICAgQChXZWJUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9tYXRpY2FsbHlJbmNsdWRl
ZCksIFdlYktpdFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JQcmVmZXJlbmNl
S2V5LAogICAgICAgICBATk8sIFdlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXksCiAj
ZW5kaWYKICAgICAgICAgQFlFUywgV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXksCi0g
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKCld
LCBXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSwKKyAgICAgICAgQChjYWNoZU1vZGVsRm9y
TWFpbkJ1bmRsZSgpKSwgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZ
RVMsIFdlYktpdFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc1ByZWZlcmVuY2VLZXksCiAgICAgICAg
IEBOTywgV2ViS2l0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZFByZWZlcmVuY2VLZXksCi0gICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6MF0sIFdlYktpdEphdmFTY3JpcHRSdW50
aW1lRmxhZ3NQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKDApLCBXZWJLaXRKYXZhU2NyaXB0UnVu
dGltZUZsYWdzUHJlZmVyZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBXZWJLaXRET01UaW1l
cnNUaHJvdHRsaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0V2Vi
QXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtNTExLDkgKzUxMCw5IEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAWUVTLCBXZWJLaXRMYXJnZUltYWdlQXN5bmNE
ZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBXZWJLaXRBbmltYXRl
ZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6c3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRlbmluZzo6RnVsbHlFbmFibGVkKV0sIFdlYktpdEZy
YW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCisgICAgICAgIEAoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KEZyYW1lRmxhdHRlbmluZzo6RnVsbHlFbmFibGVkKSksIFdlYktpdEZyYW1lRmxhdHRlbmlu
Z1ByZWZlcmVuY2VLZXksCiAjZWxzZQotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2ln
bmVkSW50OnN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6OkRpc2FibGVkKV0s
IFdlYktpdEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCisgICAgICAgIEAoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRlbmluZzo6RGlzYWJsZWQpKSwgV2ViS2l0RnJhbWVGbGF0
dGVuaW5nUHJlZmVyZW5jZUtleSwKICNlbmRpZgogICAgICAgICBATk8sIFdlYktpdEFzeW5jRnJh
bWVTY3JvbGxpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtNTQ0LDcgKzU0Myw3IEBAICsg
KHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YWxsb3dz
SW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbl0sIFdlYktpdEFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5QcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6cmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZV0sIFdlYktpdElu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlS2V5LAogICAgICAg
ICBATk8sIFdlYktpdE1lZGlhQ29udHJvbHNTY2FsZVdpdGhQYWdlWm9vbVByZWZlcmVuY2VLZXks
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6QXVkaW9TZXNzaW9uOjpO
b25lXSwgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSwKKyAgICAgICAgQChBdWRp
b1Nlc3Npb246Ok5vbmUpLCBXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlLAogICAg
ICAgICBATk8sIFdlYktpdE1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXks
CiAjaWYgSEFWRShBVktJVCkKICAgICAgICAgQFlFUywgV2ViS2l0QVZLaXRFbmFibGVkLApAQCAt
NTcwLDcgKzU2OSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAWUVTLCBXZWJLaXRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgQE5PLCBX
ZWJLaXRXYW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2aW9yS2V5LAogICAgICAgICBA
Tk8sIFdlYktpdERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSwKLSAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6V2ViQWxsb3dBbGxTdG9yYWdlXSwgV2ViS2l0U3RvcmFnZUJsb2NraW5n
UG9saWN5S2V5LAorICAgICAgICBAKFdlYkFsbG93QWxsU3RvcmFnZSksIFdlYktpdFN0b3JhZ2VC
bG9ja2luZ1BvbGljeUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01Nzks
NyArNTc4LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6LTEuMGZdLCBXZWJLaXRNYXhQYXJzZUR1cmF0aW9uUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgQE5PLCBXZWJLaXRBbGxvd011bHRpRWxlbWVudEltcGxpY2l0Rm9ybVN1Ym1pc3Npb25Q
cmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdEFsd2F5c1JlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25QcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpzdGF0aWNfY2FzdDxpbnQ+KEludGVycG9sYXRpb25RdWFsaXR5OjpMb3cpXSwgV2ViS2l0SW50
ZXJwb2xhdGlvblF1YWxpdHlQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PGlu
dD4oSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdykpLCBXZWJLaXRJbnRlcnBvbGF0aW9uUXVhbGl0
eVByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZRVMsIFdlYktpdFBhc3N3b3JkRWNob0VuYWJsZWRQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjIuMGZdLCBX
ZWJLaXRQYXNzd29yZEVjaG9EdXJhdGlvblByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2Vi
S2l0TmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCkBAIC04NTAs
NyArODQ5LDcgQEAgLSAodm9pZClfc2V0VW5zaWduZWRJbnRWYWx1ZToodW5zaWduZWQgaW50KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICB9KTsKICNlbmRpZgogICAgIGlmIChfcHJp
dmF0ZS0+YXV0b3NhdmVzKQotICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDp2YWx1ZV0g
Zm9yS2V5Ol9rZXldOworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBzZXRPYmplY3Q6QCh2YWx1ZSkgZm9yS2V5Ol9rZXldOwogICAgIFtzZWxmIF9wb3N0UHJl
ZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uXTsKIH0KIApAQCAtMTgwOCw3ICsxODA3LDcgQEAg
LSAodm9pZClzZXRFZGl0YWJsZUxpbmtCZWhhdmlvcjooV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZp
b3IpYmVoYXZpb3IKIAogLSAoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlv
cil0ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yCiB7Ci0gICAgV2ViVGV4dERp
cmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvciB2YWx1ZSA9IHN0YXRpY19jYXN0PFdlYlRl
eHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3I+KFtzZWxmIF9pbnRlZ2VyVmFsdWVG
b3JLZXk6V2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvclByZWZlcmVu
Y2VLZXldKTsKKyAgICBhdXRvIHZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViVGV4dERpcmVjdGlvblN1
Ym1lbnVJbmNsdXNpb25CZWhhdmlvcj4oW3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTpXZWJLaXRU
ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleV0pOwogICAg
IGlmICh2YWx1ZSAhPSBXZWJUZXh0RGlyZWN0aW9uU3VibWVudU5ldmVySW5jbHVkZWQgJiYKICAg
ICAgICAgdmFsdWUgIT0gV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVk
ZWQgJiYKICAgICAgICAgdmFsdWUgIT0gV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVBbHdheXNJbmNs
dWRlZCkgewpAQCAtMTk0Myw3ICsxOTQyLDcgQEAgKyAoQ0ZTdHJpbmdFbmNvZGluZylfc3lzdGVt
Q0ZTdHJpbmdFbmNvZGluZwogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRUZXh0RW5jb2RpbmdU
b1N5c3RlbUVuY29kaW5nCiB7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gcmVnaXN0ZXJEZWZhdWx0czoKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdDpkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5c3RlbUxhbmd1YWdlKCkgZm9y
S2V5OldlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleV1dOworICAgICAg
ICBAeyBXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXk6IGRlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lRm9yU3lzdGVtTGFuZ3VhZ2UoKSB9XTsKIH0KIAogc3RhdGljIE5TU3Ry
aW5nICpjbGFzc0lCQ3JlYXRvcklEID0gbmlsOwpAQCAtMjc1Niw4ICsyNzU1LDcgQEAgLSAodm9p
ZClzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3k6KFdlYlN0b3JhZ2VCbG9ja2luZ1BvbGljeSlzdG9y
YWdlQmxvY2tpbmdQb2xpY3kKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gd3JpdGUgdGhlIHNldHRpbmcgb3V0LCBzbyB3ZSBqdXN0IHJlc2V0IHRoZSBk
ZWZhdWx0IGluc3RlYWQgb2Ygc3RvcmluZyB0aGUgbmV3IHNldHRpbmcuCiAgICAgLy8gRklYTUU6
IFRoaXMgY29kZSByZW1vdmVzIGFueSBkZWZhdWx0cyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgYnkg
Y2xpZW50IHByb2Nlc3MsIHdoaWNoIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgdGhpcyBtZXRob2Qg
dG8gZG8uCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzdG9yYWdlQmxvY2tpbmdQb2xpY3ld
IGZvcktleTpXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXldOwotICAgIFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6ZGljdF07CisgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpA
eyBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXk6IEAoc3RvcmFnZUJsb2NraW5nUG9saWN5
KSB9XTsKICNlbHNlCiAgICAgW3NlbGYgX3NldEludGVnZXJWYWx1ZTpzdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgZm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleV07CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2Vy
Lm1tCmluZGV4IGU2NTllZjBmYTNmYWEwZTYwMThhM2Y0ODE1ZDg5NjQxM2ZlOWQyNmQuLjE0NTcz
OTg3OGM1NzlmZWM1Y2EyZGJkNWMyMTE2YzdlMWYzYjNiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBOU1N0cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0cmluZ05pbElmRW1wdHko
ZXJyb3JNc2cpOwotICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFyeSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJy
b3JEZXNjcmlwdGlvbktleSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDplcnJvckxp
bmVdLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07CisgICAgICAgIE5TRGljdGlv
bmFyeSAqaW5mbyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
Om5zRXJyb3JNZXNzYWdlLCBXZWJTY3JpcHRFcnJvckRlc2NyaXB0aW9uS2V5LCBAKGVycm9yTGlu
ZSksIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleSwgbmlsXTsKICAgICAgICAgTlNFcnJvciAq
ZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9t
YWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZvXTsKIAogICAg
ICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291cmNlRnVuYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25D
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29t
cGxldGlvbkNvbnRyb2xsZXIubW0KaW5kZXggYTM4MWQxMGIyOGEzZGVlOTU0OGVhMmVlNDY5OTYw
NTdhM2IyNmUxNi4uNmQzMTdiOTdkNTViMzU3YmIyODRkOTc3OTIxZTQwYTZlN2RmMGJiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJU
ZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCAtICh2b2lkKV9w
bGFjZVBvcHVwV2luZG93OihOU1BvaW50KXRvcExlZnQKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICB3aW5kb3dGcmFtZS5zaXplLmhlaWdodCA9IG51bWJlclRvU2hv
dyAqIFtfdGFibGVWaWV3IHJvd0hlaWdodF0gKyAobnVtYmVyVG9TaG93ICsgMSkgKiBbX3RhYmxl
VmlldyBpbnRlcmNlbGxTcGFjaW5nXS5oZWlnaHQ7CiAgICAgd2luZG93RnJhbWUub3JpZ2luLnkg
LT0gd2luZG93RnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU0ZvbnQgc3lz
dGVtRm9udE9mU2l6ZToxMi4wZl0sIE5TRm9udEF0dHJpYnV0ZU5hbWUsIG5pbF07CisgICAgTlNE
aWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gQHsgTlNGb250QXR0cmlidXRlTmFtZTogW05TRm9udCBz
eXN0ZW1Gb250T2ZTaXplOjEyLjBmXSB9OwogICAgIENHRmxvYXQgbWF4V2lkdGggPSAwOwogICAg
IGludCBtYXhJbmRleCA9IC0xOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bWJl
clRvU2hvdzsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggZDExNzc3ZGI2ZTE2YmU4OWRhZDRkN2U2ODBlMzE3YjViN2RmZTUzYS4uOTVkMGYz
ZThkNjdhODM0MDEyYWQwN2Y2M2VkZGNlMjkwNjczYWZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQzLDcgKzI0Myw2IEBACiAjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBv
cnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6ZS5oPgogI2lt
cG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtMjU0LDYgKzI1Myw3IEBACiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCkBAIC0yOTIzLDcgKzI5MjMsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0No
YW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICBzZXR0aW5ncy5zZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkoW3ByZWZlcmVuY2VzIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eV0pOwogICAgIHNldHRpbmdzLnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdT
ZXR0aW5nKFtwcmVmZXJlbmNlcyBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJl
ZmVyZW5jZV0pOwogCi0gICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMoV2ViQ29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KFtwcmVmZXJl
bmNlcyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKKyAgICBXZWJDb3JlOjpzZXRB
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhtYWtlVmVjdG9yPFN0cmluZz4oW3ByZWZlcmVu
Y2VzIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBzZXR0aW5ncy5zZXRTaG91bGRQcmludEJhY2tncm91bmRzKHRydWUpOwpA
QCAtNDUyOCw3ICs0NTI4LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRlbnRzT2ZVc2VySW50
ZXJmYWNlSXRlbTooTlNTdHJpbmcgKil1c2VySW50ZXJmYWNlSXRlbQogICAgICAgICBhdXRvKiB2
YWxpZGF0aW9uQnViYmxlID0gX3ByaXZhdGUtPmZvcm1WYWxpZGF0aW9uQnViYmxlLmdldCgpOwog
ICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IHZhbGlkYXRpb25CdWJibGUgPyB2YWxpZGF0aW9uQnVi
YmxlLT5tZXNzYWdlKCkgOiBlbXB0eVN0cmluZygpOwogICAgICAgICBkb3VibGUgZm9udFNpemUg
PSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+Zm9udFNpemUoKSA6IDA7Ci0g
ICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJmYWNlSXRlbTogQHsgQCJtZXNzYWdlIjogKE5TU3Ry
aW5nICopbWVzc2FnZSwgQCJmb250U2l6ZSI6IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmZv
bnRTaXplXSB9IH07CisgICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJmYWNlSXRlbTogQHsgQCJt
ZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJmb250U2l6ZSI6IEAoZm9udFNpemUpIH0g
fTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpAQCAtNDY0NCwyMiArNDY0NCw2IEBAIC0gKHZv
aWQpX3VwZGF0ZUFjdGl2ZVN0YXRlCiAjZW5kaWYKIH0KIAotc3RhdGljIFZlY3RvcjxTdHJpbmc+
IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRlcm5zKQotewotICAgIFZlY3RvcjxTdHJpbmc+
IHBhdHRlcm5zVmVjdG9yOwotCi0gICAgTlNVSW50ZWdlciBjb3VudCA9IFtwYXR0ZXJucyBjb3Vu
dF07Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwotCi0g
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZCBl
bnRyeSA9IFtwYXR0ZXJucyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBpZiAoW2VudHJ5IGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBwYXR0ZXJuc1ZlY3Rv
ci5hcHBlbmQoU3RyaW5nKChOU1N0cmluZyAqKWVudHJ5KSk7Ci0gICAgfQotICAgIHJldHVybiBw
YXR0ZXJuc1ZlY3RvcjsKLX0KLQogKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3Ry
aW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxkIHNvdXJjZTooTlNT
dHJpbmcgKilzb3VyY2UgdXJsOihOU1VSTCAqKXVybAogICAgICAgICAgICAgICAgICAgICB3aGl0
ZWxpc3Q6KE5TQXJyYXkgKil3aGl0ZWxpc3QgYmxhY2tsaXN0OihOU0FycmF5ICopYmxhY2tsaXN0
CiAgICAgICAgICAgICAgICAgaW5qZWN0aW9uVGltZTooV2ViVXNlclNjcmlwdEluamVjdGlvblRp
bWUpaW5qZWN0aW9uVGltZQpAQCAtNDY4MSw3ICs0NjY1LDcgQEAgKyAodm9pZClfYWRkVXNlclNj
cmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAq
KXdvcmwKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVzZXJT
Y3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rp
b25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IDogV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWU6OkRvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHksIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vKTsKKyAg
ICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHNvdXJj
ZSwgdXJsLCBtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+
KGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8g
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQgOiBXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09
IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9y
ZUluamVjdGluZzo6Tm8pOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCku
YWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBA
IC00NzA0LDcgKzQ2ODgsNyBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5T
U3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgIGlmICghd29y
bGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJ
bmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgYXV0
byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4oc291cmNl
LCB1cmwsIG1ha2VWZWN0b3I8U3RyaW5nPih3aGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4o
YmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJD
b3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250
cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hl
ZXQpLCBXZWJDb3JlOjpJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApAQCAtNjczNyw3
ICs2NzIxLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2VsZW1lbnRBdFdpbmRvd1BvaW50OihOU1Bv
aW50KXdpbmRvd1BvaW50CiAgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBbZG9jdW1lbnRWaWV3IGNv
bnZlcnRQb2ludDp3aW5kb3dQb2ludCBmcm9tVmlldzpuaWxdOwogICAgICAgICByZXR1cm4gWyhO
U1ZpZXcgPFdlYkRvY3VtZW50RWxlbWVudD4gKilkb2N1bWVudFZpZXcgZWxlbWVudEF0UG9pbnQ6
cG9pbnRdOwogICAgIH0KLSAgICByZXR1cm4gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdDpbZnJhbWVWaWV3IHdlYkZyYW1lXSBmb3JLZXk6V2ViRWxlbWVudEZyYW1lS2V5XTsKKyAg
ICByZXR1cm4gQHsgV2ViRWxlbWVudEZyYW1lS2V5OiBbZnJhbWVWaWV3IHdlYkZyYW1lXSB9Owog
fQogCiAtIChOU0RpY3Rpb25hcnkgKillbGVtZW50QXRQb2ludDooTlNQb2ludClwb2ludApAQCAt
NzAyNSw3ICs3MDA5LDcgQEAgLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlv
bgogICAgIGlmIChbZG9jdW1lbnRWaWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV2Vi
RG9jdW1lbnRTZWxlY3Rpb24pXSkgewogICAgICAgICByZXR1cm4gWyhOU1ZpZXcgPFdlYkRvY3Vt
ZW50U2VsZWN0aW9uPiAqKWRvY3VtZW50VmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25d
OwogICAgIH0KLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgIHJldHVybiBAW107CiB9
CiAKIC0gKHZvaWQpd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5ICop
dHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCkBAIC03MDQ3LDcg
KzcwMzEsNyBAQCAtIChOU0FycmF5ICopcGFzdGVib2FyZFR5cGVzRm9yRWxlbWVudDooTlNEaWN0
aW9uYXJ5ICopZWxlbWVudAogICAgIH0gZWxzZSBpZiAoW1tlbGVtZW50IG9iamVjdEZvcktleTpX
ZWJFbGVtZW50SXNTZWxlY3RlZEtleV0gYm9vbFZhbHVlXSkgewogICAgICAgICByZXR1cm4gW3Nl
bGYgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXTsKICAgICB9Ci0gICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5XTsKKyAgICByZXR1cm4gQFtdOwogfQogCiAtICh2b2lkKXdyaXRlRWxlbWVudDoo
TlNEaWN0aW9uYXJ5ICopZWxlbWVudCB3aXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5ICopdHlw
ZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCkBAIC04MDE4LDcgKzgw
MDIsNyBAQCAtICh2b2lkKXVubWFya0FsbFRleHRNYXRjaGVzCiAtIChOU0FycmF5ICopcmVjdHNG
b3JUZXh0TWF0Y2hlcwogewogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2VkKQotICAgICAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwogCiAgICAgTlNNdXRhYmxl
QXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgV2ViRnJhbWUgKmZy
YW1lID0gW3NlbGYgbWFpbkZyYW1lXTsKQEAgLTkwNzUsNyArOTA1OSw3IEBAIC0gKHZvaWQpX3Nl
YXJjaFdpdGhHb29nbGVGcm9tTWVudTooaWQpc2VuZGVyCiAgICAgfQogCiAgICAgTlNQYXN0ZWJv
YXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVd
OwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAgICBb
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJk
VHlwZSgpXSBvd25lcjpuaWxdOwogICAgIE5TTXV0YWJsZVN0cmluZyAqcyA9IFtzZWxlY3RlZFN0
cmluZyBtdXRhYmxlQ29weV07CiAgICAgY29uc3QgdW5pY2hhciBub25CcmVha2luZ1NwYWNlQ2hh
cmFjdGVyID0gMHhBMDsKICAgICBOU1N0cmluZyAqbm9uQnJlYWtpbmdTcGFjZVN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczombm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciBs
ZW5ndGg6MV07CkBAIC0xMDE2OSwxNyArMTAxNTMsMTYgQEAgLSAodWludDY0X3QpX25vdGlmaWNh
dGlvbklERm9yVGVzdGluZzooSlNWYWx1ZVJlZilqc05vdGlmaWNhdGlvbgogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0ZvbnRTZWxlY3Rpb24pCisKICsgKHZvaWQpX3Nl
dEZvbnRXaGl0ZWxpc3Q6KE5TQXJyYXkgKil3aGl0ZWxpc3QKIHsKICNpZiAhUExBVEZPUk0oTUFD
KQogICAgIFVOVVNFRF9QQVJBTSh3aGl0ZWxpc3QpOwogI2Vsc2UKLSAgICBWZWN0b3I8U3RyaW5n
PiB2ZWN0b3I7Ci0gICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGluIHdoaXRlbGlzdCkKLSAgICAg
ICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9u
dFdoaXRlbGlzdCh2ZWN0b3IpOworICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udFdoaXRl
bGlzdChtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSk7CiAjZW5kaWYKIH0KKwogQGVuZAog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYmFiODY4ODliMDU2MGY5YTA2ZWI2YTMyOTY2YzljZTlh
ZjYzYzQ5Li5mYjdhMDUyZDcwODcwZGQ5ZDUwZTlkYTZkNjJlZTA1MjRjZTE5NzIzIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjU2
IEBACisyMDIwLTA0LTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5TTnVtYmVyIGlk
aW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
OiBSZW1vdmUgdXNlIG9mIE5vdGlmaWNhdGlvbkhhbmRsZXIKKyAgICAgICAgdHlwZTsgaXQncyBq
dXN0ICJpZCIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkpOiBNb3ZlZCB0
aGlzIHVwIGluIHRoZSBmaWxlLCByZW1vdmVkIHVubmVlZGVkCisgICAgICAgIHVzZSBvZiBKU1Zh
bHVlVG9PYmplY3QgYW5kIHVudXNlZCBleGNlcHRpb24gYXJndW1lbnQuCisgICAgICAgIChlbGVt
ZW50c0ZvclJhbmdlQ2FsbGJhY2spOiBVc2UgY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheS4K
KyAgICAgICAgKGNvbHVtbkhlYWRlcnNDYWxsYmFjayk6IFVwZGF0ZWQgZm9yIHJlbW92ZWQgZXhj
ZXB0aW9uIGFyZ3VtZW50LgorICAgICAgICAocm93SGVhZGVyc0NhbGxiYWNrKTogRGl0dG8uCisg
ICAgICAgICh1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2spOiBEaXR0by4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQ2hhbmdl
ZCB0byB1c2UgUmV0YWluUHRyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNj
YXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUNvcmVBbmltYXRp
b25MYXllcik6IFVzZSBAe30uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQKKyAgICAgICAg
Y29kZSBub3cgdGhhdCB3ZSB1c2UgUmV0YWluUHRyLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOiBV
c2UgQFtdLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yTWFya2Vycyk6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJrZXJzKTogVXNlIEBbXS4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tOgorICAgICAgICAo
LVtUZXh0SW5wdXRDb250cm9sbGVyIG1hcmtlZFJhbmdlXSk6IFVzZSBAW10uCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAg
KHNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JTZWFyY2hDcml0ZXJpYSk6
IFR3ZWFrIGEgbGl0dGxlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBjcmVhdGVK
U1N0cmluZ1JlZl0pOiBEZWxldGVkLiBEdXBsaWNhdGUgb2YgYSBtZXRob2QgYWxyZWFkeQorICAg
ICAgICBpbXBsZW1lbnRlZCBpbiBhbm90aGUgZmlsZS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAobWFrZVZlY3Rv
ckVsZW1lbnQpOiBBZGRlZCBvdmVybG9hZHMgdG8gbWFrZSBib3RoCisgICAgICAgIG1ha2VWZWN0
b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gYW5kCisgICAgICAgIG1ha2VWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gd29yay4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQKKyAg
ICAgICAgY29kZSBub3cgdGhhdCB3ZSB1c2UgUmV0YWluUHRyLgorICAgICAgICAoY29udmVydFZl
Y3RvclRvT2JqZWN0QXJyYXkpOiBSZW1vdmVkIHVubmVlZGVkIHVzZSBvZiBKU1ZhbHVlVG9PYmpl
Y3QKKyAgICAgICAgYW5kIHVubmVlZGVkIGV4Y2VwdGlvbiBhcmd1bWVudC4KKyAgICAgICAgKGNv
bnZlcnROU0FycmF5VG9WZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Z2V0RG9jdW1lbnRMaW5rcyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Z2V0Q2hpbGRyZW4pOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldENoaWxkcmVuV2l0aFJhbmdlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb3dIZWFkZXJzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKTogVXBkYXRlZCBzaW5j
ZSBtX2VsZW1lbnQgaXMgYSBSZXRhaW5QdHIuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdWJyb2xlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlRGVzY3JpcHRpb24pOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbXB1dGVkUm9sZVN0cmluZyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGl0bGUpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
c2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpvcmll
bnRhdGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3RyaW5nVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxh
bmd1YWdlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4
dCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZv
ckluZGV4KTogVXNlIEAoKS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdl
Rm9yTGluZSk6IFVzZSBAKCkuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWFy
Y2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisgICAgICAgIG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKTogVXNlCisgICAgICAgIG1ha2VWZWN0b3I8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dIZWFkZXJzKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMpOiBEaXR0by4KKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOiBVc2UgQFtdIGFuZCBA
KCkuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkIGNv
bnN0KTogVXNlIEBbXS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVj
dGVkQ2hpbGRBdEluZGV4IGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyk6
CisgICAgICAgIFVzZSBAe30sIEBZRVMsIGFuZCBATk8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKTogVXNlIEBbXS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGFkZFRl
c3RQbHVnaW5zVG9QbHVnaW5TZWFyY2hQYXRoKTogVXNlIEBbXS4KKyAgICAgICAgKHJlc2V0V2Vi
Vmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6IFVzZSBAW10uCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAg
KC1bRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkIGRlY2xhcmVUeXBlOm93bmVyOl0pOiBVc2UgQFtd
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGJlZ2luRHJhZ1dpdGhGaWxlczpd
KTogVXNlIEAoKS4KKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBzZW50VG91Y2hF
dmVudE9mVHlwZTpdKTogVXNlIEAoKS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTW9j
a1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtNb2NrV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIgY2FuY2VsTm90aWZpY2F0aW9uOl0pOiBVc2UgQFtdLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm06CisgICAgICAgICgtW09iakNDb250
cm9sbGVyIG9iamVjdE9mQ2xhc3M6XSk6IFVzZSBAKCkuCisgICAgICAgICgtW09iakNDb250cm9s
bGVyIGFycmF5T2ZTdHJpbmddKTogVXNlIEBbXS4KKyAgICAgICAgKC1bT2JqQ0NvbnRyb2xsZXIg
dGVzdFdyYXBwZXJSb3VuZFRyaXBwaW5nOl0pOiBVc2UgQCgpLgorICAgICAgICAoLVtPYmpDQ29u
dHJvbGxlciB0ZXN0QXJyYXldKTogVXNlIEBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAob3JpZ2luc0FycmF5VG9KUyk6IFJlbW92
ZWQgdW5uZWVkZWQgdXNlIG9mIEpTVmFsdWVUb09iamVjdC4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm06CisgICAgICAgICgtW1RleHRJbnB1
dENvbnRyb2xsZXIgbWFya2VkUmFuZ2VdKTogVXNlIEBbXSBhbmQgQCgpLgorICAgICAgICAoLVtU
ZXh0SW5wdXRDb250cm9sbGVyIHNlbGVjdGVkUmFuZ2VdKTogVXNlIEBbXSBhbmQgQCgpLgorICAg
ICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIGZpcnN0UmVjdEZvckNoYXJhY3RlcnNGcm9tOmxl
bmd0aDpdKToKKyAgICAgICAgVXNlIEBbXSBhbmQgQCgpLgorICAgICAgICAoLVtUZXh0SW5wdXRD
b250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0
ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6XSk6CisgICAgICAgIFVzZSBAW10uCisg
ICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgaW50ZXJwcmV0S2V5RXZlbnRzOndpdGhTZW5k
ZXI6XSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNv
cHlUZXh0KTogVXNlIFtdLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwOiBEZWxldGVkIGFuCisgICAgICAgIHVubmVlZGVkIGNvcHkg
Y29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW06CisgICAgICAgICgtW0xheW91dFRlc3RT
cGVsbENoZWNrZXIgc2V0UmVzdWx0c0Zyb21KU09iamVjdDppbkNvbnRleHQ6XSk6IFVzZSBAe30u
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbi5tbToKKyAgICAgICAgKHRvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6Y29udGVu
dFJ1bGVMaXN0V2l0aElkZW50aWZpZXI6cGVyZm9ybWVkQWN0aW9uOmZvclVSTDpdKToKKyAgICAg
ICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVJbWFnZS5tbToKKyAgICAgICAgKHdyaXRlSW1hZ2VEYXRhVG9QYXN0ZWJv
YXJkKTogVXNlIEBbXSBhbmQgQHt9LgorICAgICAgICAod3JpdGVCdW5kbGVGaWxlVG9QYXN0ZWJv
YXJkKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Bhc3RlV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2Ug
QFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSBAW10u
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLT2JqZWN0Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRocyk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmll
d0NhblBhc3RlWmVyb1BuZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2Ug
QFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVK
YXZhU2NyaXB0Q29udGV4dC5tbToKKyAgICAgICAgKC1bRGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRl
eHRGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0OmZv
ckZyYW1lOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9z
L21haW5JT1MubW06CisgICAgICAgIChtYWluKTogVXNlIEB7fS4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
IFVzZSBAe30gYW5kIEAoKS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1t
OgorICAgICAgICAobWFpbik6IFVzZSB7fS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgVXNlIGlk
IGluc3RlYWQgb2YgTm90aWZpY2F0aW9uSGFuZGxlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDoKKyAgICAg
ICAgVXNlIGlkIGZvciBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZS4gQWRkZWQgYW4gb3ZlcmxvYWQg
b2YgbWFrZVZlY3RvckVsZW1lbnQKKyAgICAgICAgdG8gbWFrZSBtYWtlVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4gd29yay4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAg
VXNlIFJldGFpblB0ci4gQWRkZWQgYW4gb3ZlcmxvYWQgb2YgbWFrZVZlY3RvckVsZW1lbnQgdG8g
bWFrZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4g
d29yay4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2Ev
QWN0aXZhdGVGb250c0NvY29hLm1tOgorICAgICAgICBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpjb252ZXJ0TlNBcnJheVRvVmVj
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ugd2UgdXNlIFJl
dGFpblB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydEVsZW1lbnRzVG9P
YmplY3RBcnJheSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mCisgICAgICAgIEpTVmFsdWVUb09i
amVjdC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JS
YW5nZSk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgVXNlIEBbXS4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVzZSBA
W10uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMpOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW06CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBVc2UgQHt9LgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ugd2UgdXNlIFJldGFpblB0
ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtl
ZFVJRWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4+LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRE
b2N1bWVudExpbmtzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKTogRGl0dG8uCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKTogRGl0
dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
SGVhZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphbGxBdHRyaWJ1dGVzKTogVXBkYXRlZCBzaW5jZSBtX2VsZW1lbnQKKyAgICAgICAgaXMg
YSBSZXRhaW5QdHIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZyk6IERpdHRvLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6IERpdHRvLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbiBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6IERp
dHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6IERp
dHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9y
SW5kZXgpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisgICAgICAgIG1ha2VWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pi4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6IERpdHRvLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJz
KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkNvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mUm93cyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMpOiBEaXR0by4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6IFVzZSBAW10g
YW5kIEAoKS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRDaGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6
IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyk6IFRha2UgVmVjdG9yJiYuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KTogVGFrZSBTdHJpbmcmJi4KKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXpl
KTogVXNlIEB7fWFuZCBAKCkuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6IFVzZSBtYWtlVmVj
dG9yPFN0cmluZz4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0
ZWdvcnkpOiBVcGRhdGUgdG8gcGFzcyBTdHJpbmcmJi4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldEFsbG93ZWRNZW51QWN0aW9ucyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAg
ICgtW0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2ZW50czpdKTogVXNlIEAoKS4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAg
ICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCk6IFVz
ZSBAe30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOiBVc2UgQFtdLgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAg
ICAoLVtXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCBkZWNsYXJlVHlwZTpvd25lcjpdKTogVXNl
IEBbXS4KKwogMjAyMC0wNC0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RvcCB1c2luZyBsaXZlIHJhbmdlcyBpbiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4
IDFiZGYxYzQzMGJjNTBiZTM4NGZhY2NlNTBkZmZhNTI4ZGE0ODU2YTUuLjFkYzdkM2I1NjNhMTU0
ZjRjZTliZjdhMzAzMGM4YzVhNzY5N2YzOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCi0jZGVmaW5lIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVm
Lmg+CkBAIC0zMiw5ICszMSwxMSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgUExBVEZPUk0oV0lO
KQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgorCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZ
KSAmJiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXJBdGsuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC05NCw4ICs5NSw4IEBAIHByaXZh
dGU6CiAgICAgSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZp
Y2F0aW9uTGlzdGVuZXJzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9i
YWxOb3RpZmljYXRpb25IYW5kbGVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0
cjxpZD4gbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFD
Q0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKQEAgLTEwNCw1ICsxMDUsMyBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgcGxhdGZvcm1SZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9Owot
Ci0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKaW5kZXggOTZlOTk3YWFlMjhkMTI2Nzk0
YTliZGZjOWFmZTNlNDliYmE2ZDUxYi4uYmQ3Yjc1YzRiODdmMzI0MjEwODQ5OWFmYmI0NmRmY2M1
NDI0NDkyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJl
Zi5oPgogCkBAIC0zNiwxNSArMzUsMTMgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtl
cjsKLXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxh
dGZvcm1UZXh0TWFya2VyID0gaWQ7Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlk
OwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOwogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZTsKICNlbmRpZgogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OwotCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB7CiBwdWJsaWM6CiAg
ICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKQEAgLTU4LDgg
KzU1LDggQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBn
ZXRKU0NsYXNzKCk7Ci0jaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oTUFD
KQotICAgIFJldGFpblB0cjxQbGF0Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXI7CiAjZWxzZQogICAg
IFBsYXRmb3JtVGV4dE1hcmtlciBtX3RleHRNYXJrZXI7CiAjZW5kaWYKQEAgLTc5LDggKzc2LDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKIAogcHJpdmF0
ZToKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCi0gICAgUmV0
YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXJSYW5nZTsKICNlbHNl
CiAgICAgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbV90ZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYK
QEAgLTg5LDcgKzg2LDcgQEAgcHJpdmF0ZToKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0b1Rl
eHRNYXJrZXIoSlNPYmplY3RSZWYgb2JqZWN0KTsKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqIHRvVGV4dE1hcmtlclJhbmdlKEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKLSNpZiAhU1VQUE9S
VFNfQVhfVEVYVE1BUktFUlMKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxpbmUgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtl
cikgeyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJikgeyB9CiBpbmxpbmUgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpIHsgfQpAQCAtMTAy
LDUgKzk5LDMgQEAgaW5saW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKCkgeyB9CiBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJl
dHVybiBmYWxzZTsgfQogaW5saW5lIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0TWFya2VyUmFuZ2U7IH0KICNlbmRpZgotCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwCmluZGV4IDJmZGNjMDBkMjFmY2ZiYzI1ZGViMjEwZGZlY2QzNDc2NTdmOGRmYjcu
LjExZjNhNTE5NGY5ZWIyMTdkMzM3YzU5MzAzZTNjZmU2ZmI2ZWU1OWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0zMDcsNiArMzA3
LDE1IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGluZGV4T2ZDaGlsZENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVt
YmVyKGNvbnRleHQsIChkb3VibGUpdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGls
ZChjaGlsZEVsZW1lbnQpKTsKIH0KIAorc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRFbGVtZW50
c1RvT2JqZWN0QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpCit7CisgICAgYXV0byBhcnJheSA9IEpTT2JqZWN0
TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIHNp
emUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXks
IGksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
Y29udGV4dCwgZWxlbWVudHNbaV0pLCAwKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJ
bmRleENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTMyNywyMCArMzM2
LDE0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQg
IT0gMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICB1bnNpZ25lZCBsb2NhdGlvbiA9
IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwg
ZXhjZXB0aW9uKTsKLSAgICAKKwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBl
bGVtZW50czsKICAgICB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+ZWxlbWVudHNGb3JSYW5nZShs
b2NhdGlvbiwgbGVuZ3RoLCBlbGVtZW50cyk7Ci0gICAgCi0gICAgSlNWYWx1ZVJlZiBhcnJheVJl
c3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0
UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsK
LSAgICB1bnNpZ25lZCBlbGVtZW50c1NpemUgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBrID0gMDsgayA8IGVsZW1lbnRzU2l6ZTsgKytrKQotICAgICAgICBKU09iamVjdFNl
dFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaywgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVtZW50c1trXSks
IDApOwotICAgIAotICAgIHJldHVybiBhcnJheVJlc3VsdDsKKworICAgIHJldHVybiBjb252ZXJ0
RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpT
VmFsdWVSZWYgaW5jcmVhc2VUZXh0U2VsZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQpAQCAtNjE1LDMwICs2MTgsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgc3RyaW5n
QXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVu
dHNUb09iamVjdEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4mIGVsZW1lbnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNW
YWx1ZVJlZiBhcnJheVJlc3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDAp
OwotICAgIEpTT2JqZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFy
cmF5UmVzdWx0LCAwKTsKLQotICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXpl
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwg
ZWxlbWVudHNbaV0pLCAwKTsKLQotICAgIHJldHVybiBhcnJheVJlc3VsdDsKLX0KLQogc3RhdGlj
IEpTVmFsdWVSZWYgY29sdW1uSGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAg
ICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmNvbHVtbkhlYWRlcnMoZWxlbWVudHMpOwotICAg
IHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzLCBl
eGNlcHRpb24pOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRl
eHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgcm93SGVhZGVyc0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnJvd0hl
YWRlcnMoZWxlbWVudHMpOwotICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5
KGNvbnRleHQsIGVsZW1lbnRzLCBleGNlcHRpb24pOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVu
dHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVS
ZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKQEAgLTY1MCw3ICs2NDEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1l
bnRBcnJheUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTTwog
ICAgIAogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0
b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShhdHRy
aWJ1dGUuZ2V0KCksIGVsZW1lbnRzKTsKLSAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmpl
Y3RBcnJheShjb250ZXh0LCBlbGVtZW50cywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gY29udmVy
dEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBK
U1ZhbHVlUmVmIHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCmluZGV4IGNhMjI1NWM5ZWRlMDc1MjZmOTA1Mzk1NDhlMGI0NDE4YjM1YjVkMGMuLmQ3
MjE5N2ZlYzBjZTc1ZjRlYWQ2NTM4MWIyNWE1OGYyNjBjNTBlY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE4ICszMiwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fCi10
eXBlZGVmIGlkIFBsYXRmb3JtVUlFbGVtZW50OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNf
b2JqZWN0KiBQbGF0Zm9ybVVJRWxlbWVudDsKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNlbGlmIFBMQVRGT1JNKFdJTikKICN1bmRlZiBfV0lOU09DS0FQSV8KICNkZWZpbmUg
X1dJTlNPQ0tBUElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dz
LmgKLQogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+Ci0K
IHR5cGVkZWYgQ09NUHRyPElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlmIEhB
VkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgiCkBAIC01MywyMSArNDcsMjIgQEAgdHlwZWRlZiBB
dGtPYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxl
bWVudDsKICNlbmRpZgogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKK3B1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKLSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBOb3RpZmlj
YXRpb25IYW5kbGVyOwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmlj
YXRpb25IYW5kbGVyOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQpOwogI2VuZGlmCisj
aWYgIVBMQVRGT1JNKENPQ09BKQorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1V
SUVsZW1lbnQpOwogI2VuZGlmCiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewotcHVi
bGljOgotICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwotICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwot
ICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWQgcGxhdGZvcm1VSUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0K
KyNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBs
YXRmb3JtVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKIAog
ICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29u
dGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwogCkBAIC0zMTgsMTAgKzMx
Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdDsKICAgICAKICAg
ICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0
TmVhck1hcmtlcnMoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiwgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFU
Rk9STShNQUMpCiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFj
dGlvbnMgZm9yIGFuIGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBv
cnRlZEFjdGlvbnMoKTsKICAgICAKQEAgLTMzMiwxMSArMzI2LDE0IEBAIHB1YmxpYzoKICAgICAK
IHByaXZhdGU6CiAgICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygpOworCisjaWYgIVBM
QVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKKyNlbmRpZgog
ICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNw
ZWNpZmljIG9iamVjdCB1c2VkIHRvIGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMg
b2JqZWN0LgotICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOwor
ICAgIFJldGFpblB0cjxpZD4gbV9lbGVtZW50OworICAgIFJldGFpblB0cjxpZD4gbV9ub3RpZmlj
YXRpb25IYW5kbGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRG
T1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBs
dWdJbi9QbHVnaW5PYmplY3RNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2Nh
cGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCmluZGV4IGE2NDU3YTA3NmIxYjkyMjJlYzE4MzYy
ZDRiYzk0Y2I0NzJhM2EzY2MuLjBjOGZhNDAwM2E3ZGZiNWRmNWMzNDJmMTQyMmI3YmUzOTY4NjU1
M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9Q
bHVnaW5PYmplY3RNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBl
UGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIENGVHlwZVJlZiBj
cmVhdGVDb3JlQW5pbWF0aW9uTGF5ZXIoKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBjYUxheWVy
ID0gYWRvcHROUyhbW1Rlc3RQbHVnaW5MYXllciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNOdWxs
ICpudWxsVmFsdWUgPSBbTlNOdWxsIG51bGxdOwotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9ucyA9
IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImJvdW5kcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJjb250ZW50cyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxWYWx1ZSwgQCJjb250ZW50c1JlY3QiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxsVmFsdWUsIEAib3BhY2l0eSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxWYWx1ZSwgQCJwb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJzaGFkb3dDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJzdWJsYXllclRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxWYWx1ZSwgQCJzdWJsYXllcnMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxsVmFsdWUsIEAidHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAInpQb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zID0gQHsKKyAgICAgICAgQCJhbmNo
b3JQb2ludCI6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJib3VuZHMiOiBudWxsVmFsdWUsCisgICAg
ICAgIEAiY29udGVudHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29udGVudHNSZWN0IjogbnVs
bFZhbHVlLAorICAgICAgICBAIm9wYWNpdHkiOiBudWxsVmFsdWUsCisgICAgICAgIEAicG9zaXRp
b24iOiBudWxsVmFsdWUsCisgICAgICAgIEAic2hhZG93Q29sb3IiOiBudWxsVmFsdWUsCisgICAg
ICAgIEAic3VibGF5ZXJUcmFuc2Zvcm0iOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJz
IjogbnVsbFZhbHVlLAorICAgICAgICBAInRyYW5zZm9ybSI6IG51bGxWYWx1ZSwKKyAgICAgICAg
QCJ6UG9zaXRpb24iOiBudWxsVmFsdWUsCisgICAgfTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0
IGFuaW1hdGlvbnMuCi0gICAgW2NhTGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdDphY3Rpb25zIGZvcktleTpAImFjdGlvbnMiXV07CisgICAgW2NhTGF5ZXIg
c2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVk
c0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTpZRVNdOwogCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNH
UmVjdE1ha2UoMCwgMCwgMjAwLCAxMDApXTsKQEAgLTc2LDcgKzc2LDcgQEAgQ0ZUeXBlUmVmIGNy
ZWF0ZUNvcmVBbmltYXRpb25MYXllcigpCiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxh
eWVyIGxheWVyXTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW3N1
YmxheWVyIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0aW9u
cyBmb3JLZXk6QCJhY3Rpb25zIl1dOworICAgIFtzdWJsYXllciBzZXRTdHlsZTpAeyBAImFjdGlv
bnMiOiBhY3Rpb25zIH1dOwogCiAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigw
LCAwLCAwLCAwLjc1KTsKICAgICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcklPUy5tbQppbmRleCBjMzY4N2MxMDc0ZTA1NzExY2Y4Yjk3NDZiODM1ZTQ2ZjM4YmY5MGIz
Li5kZTI5ZDU1MTAyMDQ4NWU4ZDQ0YjZlNTZkYWYyMzM5NGIxMDg1NTBkIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1t
CkBAIC00OCw3ICs0OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIoKQogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9y
bVRleHRNYXJrZXIoKSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwor
ICAgIHJldHVybiBbcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwogfQogCiBQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCBhNGU0MTg5
NTUzNDg4ODQ0YzRjZjhjMjNlMTRkZjg0NzdmYmYzODE5Li45NTFkZGRkMmU3YjM4NmNlNTZhOWYy
YTZhOGU2MTJlYzVmNGZlMjVlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtNDEsMjQgKzQxLDkgQEAKIAogdHlw
ZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNT
dHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKLUFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkK
K0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVu
dCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVy
KDApCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQm
IG90aGVyKQotICAgIDogbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZp
Y2F0aW9uSGFuZGxlcigwKQotCi17Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci0gICAgW21f
ZWxlbWVudCByZWxlYXNlXTsKIH0KIAogQGludGVyZmFjZSBOU09iamVjdCAoVUlBY2Nlc3NpYmls
aXR5SGlkZGVuKQpAQCAtNDYyLDkgKzQ0Nyw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogCiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewotICAgIGlkIHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2Vy
Rm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQg
ZW5kVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJz
ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJr
ZXIsIG5pbF07CisgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRN
YXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlk
IGVuZFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0g
QFtzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJr
ZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vy
c107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKQEAgLTQ3Miw3ICs0NTcsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TQogCiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxs
aW5nVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHN0YXJ0UmFu
Z2UsIGJvb2wgZm9yd2FyZCkKIHsKLSAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVu
dCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTooaWQpc3RhcnRSYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKSBmb3J3YXJkOmZvcndhcmRdOworICAgIGlkIG1pc3NwZWxsaW5nUmFuZ2Ug
PSBbbV9lbGVtZW50IG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlOnN0YXJ0UmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAtNTAzLDM0
ICs0ODgsMzQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4
dE1hcmtlclJhbmdlKCkKIAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJS
YW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBp
ZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAg
ICBpZCB0ZXh0TWFya2VycyA9IHJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAg
IHJldHVybiBbbV9lbGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKIH0K
IAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1h
cmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5
ICp0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCksIG5pbF07CisgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAg
aWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
OnRleHRNYXJrZXJzXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQp
cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSBy
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlz
U3RhcnQ6WUVTXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtl
cik7CiB9CiAKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9y
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKIH0KIAogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAg
ICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOihp
ZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBvYmogPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOwogICAgIGlmIChvYmopCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KG9iaik7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTMsMTkgKzUzOCwxOSBAQCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9y
UG9pbnQoaW50IHgsIGludCB5KQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7Ci0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZp
b3VzTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFy
a2VyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIocHJldmlvdXNNYXJrZXIpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBuZXh0TWFya2VyID0gW21fZWxl
bWVudCBuZXh0TWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CisgICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtl
cjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKG5leHRNYXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRleHRNYXJr
ZXJzID0gKGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlk
IHRleHRNYXJrZXJzID0gbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAg
ICAgaWYgKCF0ZXh0TWFya2VycyB8fCAhW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xhc3M6W05TQXJy
YXkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SlNTdHJpbmcoKTsKICAgICBy
ZXR1cm4gW1ttX2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKQEAgLTY3MCw3ICs2NTUsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0
TgogewogICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KSkKLSAgICAgICAgdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClz
dGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpLCBuaWxdOworICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
ICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21N
YXJrZXJzOnRleHRNYXJrZXJzIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6dGV4dF1dOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRN
YXJrZXJSYW5nZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4
dElucHV0Q29udHJvbGxlcklPUy5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1
dENvbnRyb2xsZXJJT1MubQppbmRleCA2NTMzOWIzY2JlYjgzZWI1MjRmMThhZmVjYjBlMmNmMjJh
MTlkM2RjLi45NjVmYWY1OTk3YTMyMzhlMTMyOWI1NzI1OWJhOWM1ZDcyODJlNmVlIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm0KQEAg
LTc2LDcgKzc2LDcgQEAgLSAoTlNBcnJheSAqKW1hcmtlZFJhbmdlCiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOkAoW3JhbmdlIHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pLCBuaWxdOwor
ICAgIHJldHVybiBAW0AoW3JhbmdlIHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0p
XTsKIH0KIAogLSAodm9pZClpbnNlcnRUZXh0OihOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMGI4
NjdhZGNiOTBjMzEyMjQxNmRjYzI2NWYzODUzYjYxYjZkNDcxMy4uNzk0MDczOGEzMzkwZWIyNzBh
NjA4YmZkMDU5ZTE3MmFmNGI3OTA5MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTQ4LDE3ICs0OCwxNyBAQCAtIChKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKICAgICByZXR1cm4gYWRvcHQo
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsK
IH0KIAotTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRl
Rm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgKnN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3Vs
dHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJv
b2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorTlNEaWN0aW9u
YXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVy
aWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxl
bWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1
ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHks
IGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKICAgICAKICAgICBpZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZv
cm1VSUVsZW1lbnQoKSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0
OihpZClzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVs
ZW1lbnQiXTsKLSAgICAKKyAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0
OnN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVu
dCJdOworCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlv
bk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JL
ZXk6QCJBWERpcmVjdGlvbiJdOwotICAgIAorCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
c2V0T2JqZWN0OkAocmVzdWx0c0xpbWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOwotICAg
IAorCiAgICAgaWYgKHNlYXJjaEtleSkgewogICAgICAgICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIg
PSBuaWw7CiAgICAgICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgc2VhcmNoS2V5KSkg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCmluZGV4IDlkN2ZmNmU5YmU2NDQ0NTM3YTlmZmE1YmE4
NjNiZWM0NjdhYWZiYTYuLmQxNjc4Mjc4ZDg0YjNkZWViYmM1NjJmYmNlNDA3YThhZDU0NTk1NDAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KQEAgLTI5LDMzICsyOSwyMCBAQAogICovCiAKICNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgiCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKKyNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGlu
dGVyZmFjZSBOU09iamVjdCAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBZGRpdGlvbnMp
CiArICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09M
KXJlcG9zdDsKIEBlbmQKIAotQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlv
bnMpCi0tIChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0KLS0g
KEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJldHVy
biBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
c2VsZikpOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlcgogCiAtIChpZClpbml0CkBAIC0xMzIsMjcgKzExOSwyMiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBtYWtlVmFsdWVSZWZGb3JWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaWQg
dmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VB
cnJheVJlZkZvckFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICphcnJheSkKK3N0
YXRpYyBKU09iamVjdFJlZiBtYWtlQXJyYXlSZWZGb3JBcnJheShKU0NvbnRleHRSZWYgY29udGV4
dCwgTlNBcnJheSAqYXJyYXkpCiB7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50
OwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW2NvdW50XTsKLQogICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG1ha2VWYWx1
ZVJlZkZvclZhbHVlKGNvbnRleHQsIFthcnJheSBvYmplY3RBdEluZGV4OmldKTsKLQogICAgIHJl
dHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCBjb3VudCwgYXJndW1lbnRzLCBudWxscHRy
KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgbWFrZU9iamVjdFJlZkZvckRpY3Rpb25hcnkoSlND
b250ZXh0UmVmIGNvbnRleHQsIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKK3N0YXRpYyBKU09i
amVjdFJlZiBtYWtlT2JqZWN0UmVmRm9yRGljdGlvbmFyeShKU0NvbnRleHRSZWYgY29udGV4dCwg
TlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5KQogewogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpT
T2JqZWN0TWFrZShjb250ZXh0LCBudWxscHRyLCBudWxscHRyKTsKLQotICAgIFtkaWN0aW9uYXJ5
IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIG9i
aiwgQk9PTCAqc3RvcCkKLSAgICB7Ci0gICAgICAgIGlmIChKU1ZhbHVlUmVmIHByb3BlcnR5VmFs
dWUgPSBtYWtlVmFsdWVSZWZGb3JWYWx1ZShjb250ZXh0LCBvYmopKQorICAgIFtkaWN0aW9uYXJ5
IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIHZh
bHVlLCBCT09MKiBzdG9wKSB7CisgICAgICAgIGlmIChhdXRvIHByb3BlcnR5VmFsdWUgPSBtYWtl
VmFsdWVSZWZGb3JWYWx1ZShjb250ZXh0LCB2YWx1ZSkpCiAgICAgICAgICAgICBKU09iamVjdFNl
dFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgW2tleSBjcmVhdGVKU1N0cmluZ1JlZl0uZ2V0KCks
IHByb3BlcnR5VmFsdWUsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CiAgICAg
fV07Ci0KICAgICByZXR1cm4gb2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KaW5kZXggMGVmZjkxNjk1
MDY0NTg5ZmQ5ZThlZmI1YzYzNTYxZGExOTk4MDVkNy4uMWJmY2FjN2ZiMzRjZmMwYTc1ZWIyMmEz
MTJkYTQ2OTg5YmVhMDU3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQpAQCAtMjgsMTEgKzI4LDExIEBACiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUu
aCIKIAotI2lmIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShNQUMpCiAKIC8vIE1BUks6IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyCiAKLUFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRN
YXJrZXIgbWFya2VyKQorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKGlkIG1hcmtlcikKICAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIpCiB7CiB9CkBAIC00
OCwxNyArNDgsMTcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcigpCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIG90aGVyKQogewotICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBs
YXRmb3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CisgICAgcmV0dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90
aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiB9CiAKLVBsYXRmb3JtVGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QgCitpZCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QKIHsgCiAgICAg
cmV0dXJuIG1fdGV4dE1hcmtlci5nZXQoKTsKIH0KIAogLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZQogCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQor
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZShpZCBtYXJrZXJSYW5nZSkKICAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQog
ewogfQpAQCAtNzQsMTIgKzc0LDEyIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKCkKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90aGVyKQog
ewotICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNF
cXVhbDooX19icmlkZ2UgaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAg
IHJldHVybiBbcGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9y
bVRleHRNYXJrZXJSYW5nZSgpXTsKIH0KIAotUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAor
aWQgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KSBjb25zdAogewogICAgIHJldHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKIH0KIAotI2Vu
ZGlmIC8vIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGNlNmI2MjMxZTMyZDVlOWYzZWQ4ZjVhN2I2
MzQ3NzM0M2Y1MDQxMGYuLjZiNWI1ZWZiZGI3ODMxZjA4YjA1YWYwNTYxODJjM2JjMzA2NGRjMWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNCwxMSArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkR1bXBSZW5kZXJUcmVlLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgi
Ci0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2lt
cG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkZyYW1lLmg+CkBAIC0zNiw3ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlw
ZXNJbnRlcm5hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgotCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNB
dHRyaWJ1dGUgQCJBWE93bnMiCkBAIC04NiwyNiArODYsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxl
bWVudCkKLSAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5k
bGVyKDApCitzdGF0aWMgT3B0aW9uYWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbWFrZVZlY3Rv
ckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGlkIGVsZW1lbnQpCiB7Ci0g
ICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBD
RlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBb
bV9lbGVtZW50IHJldGFpbl07CisgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50JiBvdGhlcikKLSAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQp
Ci0gICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiwgaWQgZWxlbWVudCkKIHsKLSAgICBbbV9lbGVtZW50IHJldGFp
bl07CisgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChpZCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1l
bnQpCiB7Ci0gICAgLy8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVj
YXVzZSByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IGluIHRoZSB0ZXN0LgotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBb
bV9lbGVtZW50IHJlbGVhc2VdOwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZW
YWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCkBAIC0x
NzksMTYgKzE3MiwxMyBAQCBzdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQg
YWNjZXNzaWJpbGl0eU9iamVjdCkKICAgICByZXR1cm4gYXR0cmlidXRlc1N0cmluZzsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRWZWN0b3JUb09i
amVjdEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRz
KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRWZWN0b3JU
b09iamVjdEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1l
bnRzKQogewotICAgIEpTVmFsdWVSZWYgYXJyYXlSZXN1bHQgPSBKU09iamVjdE1ha2VBcnJheShj
b250ZXh0LCAwLCAwLCAwKTsKLSAgICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBhcnJheVJlc3VsdCwgMCk7Ci0gICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9
IGVsZW1lbnRzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3Vu
dDsgKytpKQotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJh
eU9iaiwgaSwgSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLmdldEpTQ2xhc3MoKSwg
bmV3IFQoZWxlbWVudHNbaV0pKSwgMCk7Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAg
YXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxw
dHIpOworICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0
SW5kZXgoY29udGV4dCwgYXJyYXksIGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tp
XS5nZXRKU0NsYXNzKCksIG5ldyBUKGVsZW1lbnRzW2ldKSksIG51bGxwdHIpOworICAgIHJldHVy
biBhcnJheTsKIH0KIAogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUsIE5TU3RyaW5nICp2YWx1ZSkK
QEAgLTIwNSwxNyArMTk1LDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUKICAgICByZXR1cm4g
YWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNv
bnZlcnROU0FycmF5VG9WZWN0b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7
Ci0gICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShjb3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkKLSAgICAgICAgdi5hcHBlbmQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pOwotICAgIHJl
dHVybiB2OwotfQotCiBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9u
T2ZFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3Ip
CiB7CiAgICAgTlNNdXRhYmxlU3RyaW5nKiBhbGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0
cmluZyBzdHJpbmddOwpAQCAtMzE1LDcgKzI5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4m
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxl
bWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29u
dmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihsaW5rZWRFbGVtZW50
cyk7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4obGlua2VkRWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAt
MzIzLDcgKzMwMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRM
aW5rcyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxl
bWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4obGlua0VsZW1lbnRzKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PihsaW5rRWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKIH0KIApAQCAtMzMxLDcgKzMxMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Z2V0Q2hpbGRyZW4oVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50CiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJl
bkF0dHJpYnV0ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBt
YWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTMzOSw3ICszMTgsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PgogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNo
aWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVu
Z3RoXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PihjaGlsZHJlbik7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0
b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY2hpbGRyZW4pOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKIH0KIApAQCAtNTI4LDggKzUwNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCiAKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVz
KCkKIHsKLSAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9l
bGVtZW50KTsKLSAgICByZXR1cm4gW2F0dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAg
IHJldHVybiBbYXR0cmlidXRlc09mRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTU0
OCw3ICs1MjYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoVmVj
dG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50cwogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVs
ZW1lbnRzID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2
YWx1ZSk7CisgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pih2YWx1ZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC01NTcsNyAr
NTM1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWUKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVt
ZW50cyA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFs
dWUpOworICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4odmFsdWUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTY2LDcgKzU0
NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1
dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9
IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwor
ICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFs
dWUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNjQzLDcgKzYyMSw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlTmFtZXMoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQpOworICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1
dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKEAiQVhSb2xlIiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IApAQCAtNjUzLDcgKzYzMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwg
bV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xl
QXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShAIkFYU3Vicm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIApAQCAtNjYzLDcgKzY0MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJv
bGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUg
PSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50Lmdl
dCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURl
c2NyaXB0aW9uIiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAt
NjczLDcgKzY1MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
QVJJQVJvbGUiXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5n
ID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhBUklBUm9sZSJdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbY29tcHV0
ZWRSb2xlU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCkBAIC02ODMsNyArNjYxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlUaXRsZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVz
Y3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1
cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC02OTMsNyArNjcxLDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlw
dGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50
LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVz
Y3JpcHRpb24iLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBA
IC03MDMsNyArNjgxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3Jp
cHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICBy
ZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNj
cmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MTMsNyArNjkxLDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVu
dGF0aW9uKCkgY29uc3QKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdWYWx1ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmli
dXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJl
dHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9u
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC03MjQsNyArNzAyLDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFn
ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWExhbmd1YWdlIl0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNj
cmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WExhbmd1YWdlIl0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoQCJBWExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKIApAQCAtNzM0LDcgKzcxMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJl
dHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24p
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEwMjYsNyArMTAwNCw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJv
cEVmZmVjdHMoKSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRl
eChpbnQgaW5kZXgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDppbmRleF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1l
dGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1i
ZXIgKil2YWx1ZSBpbnRWYWx1ZV07IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEw
MzcsNyArMTAxNSw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgo
aW50IGluZGV4KQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdl
Rm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1
cm4gW05TU3RyaW5nRnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdS
ZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExNjYsNyArMTE0NCw3IEBAIEpT
VmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShK
U0NvbnRleHRSZWYgY29udGV4dCwKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgPSBzZWFyY2hUZXh0UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRl
eHQsIHNlYXJjaFN0cmluZ3MsIHN0YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdp
dGhDcml0ZXJpYSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlm
IChbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+
KGNvbnRleHQsIGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4ocmVzdWx0KSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJh
eShjb250ZXh0LCBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KHJlc3Vs
dCkpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
QEAgLTExNzcsNyArMTE1NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0
IGRlZmluZWQgaW4gQXBwS2l0Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIE5TQXJyYXkqIGNvbHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBj
b2x1bW5IZWFkZXJzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pihjb2x1bW5IZWFkZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVyc1Zl
Y3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uSGVhZGVyc0Fy
cmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0
b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTExODgsNyArMTE2Niw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZSb3dIZWFkZXJzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBOU0FycmF5KiByb3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gcm93SGVhZGVy
c1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4o
cm93SGVhZGVyc0FycmF5KTsKKyAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9y
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRl
c2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCkBAIC0xMTk5LDcgKzExNzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29s
dW1uc0F0dHJpYnV0ZV07Ci0gICAgYXV0byBjb2x1bW5zVmVjdG9yID0gY29udmVydE5TQXJyYXlU
b1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihjb2x1bW5zQXJyYXkpOworICAgIGF1dG8g
Y29sdW1uc1ZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1u
c0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3Ip
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEyMTAsNyArMTE4OCw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5
KiByb3dzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0
TlNBcnJheVRvVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHJvd3NBcnJheSk7CisgICAg
YXV0byByb3dzVmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihyb3dz
QXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTIyMSw3ICsxMTk5LDcgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZlZpc2libGVDZWxscygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNB
cnJheSogY2VsbHNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhWaXNpYmxlQ2VsbHMiXTsKLSAgICBhdXRvIGNlbGxzVmVjdG9yID0gY29udmVydE5TQXJy
YXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKKyAgICBhdXRv
IGNlbGxzVmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0Fy
cmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzAyLDcgKzEyODAsNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhS
YW5nZSgpCiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKLSAgICBO
U0FycmF5ICpjb2xSb3dBcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVy
IG51bWJlcldpdGhVbnNpZ25lZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVk
SW50OnJvd10sIG5pbF07CisgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBAW0AoY29sKSwgQChy
b3cpXTsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZv
clBhcmFtZXRlcjpjb2xSb3dBcnJheV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAK
QEAgLTE0MjgsNyArMTQwNiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3Mo
KQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxl
bWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgTlNBcnJheSogYXJyYXkgPSBAW2VsZW1l
bnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNl
dFZhbHVlOmFycmF5IGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTQ0MCw3
ICsxNDE4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxk
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQucGxhdGZvcm1V
SUVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRy
ZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdDplbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIE5T
QXJyYXkgKmFycmF5ID0gQFtlbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChz
ZWxlY3RlZENoaWxkcmVuKQogICAgICAgICBhcnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5
QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmFycmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3Np
YmlsaXR5U2V0VmFsdWU6YXJyYXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
Q2hpbGRyZW5BdHRyaWJ1dGVdOwpAQCAtMTY2Niw4ICsxNjQ0LDggQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2Jy
aWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2Ug
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xNjc3LDEwICsxNjU1LDEwIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFu
Z2UoCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqcGFyYW1ldGVycyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotICAg
IFtwYXJhbWV0ZXJzIHNldE9iamVjdDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCkgZm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJh
bWV0ZXJzIHNldE9iamVjdDpzdGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6
QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoQm9vbDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJl
Y3Rpb24iXTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFt
ZXRlcjpwYXJhbWV0ZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2OTAsNyArMTY2OCw3IEBA
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlRm9yRWxlbWVudChBCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVs
ZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3
MDAsNyArMTY3OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlQXR0cmlidXRlXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgo
X19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzQxLDcgKzE3MTksNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4
dCkKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFy
YW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07Cisg
ICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdl
LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGlu
dFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNzUxLDcgKzE3
MjksNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdl
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXR0cmlidXRlZFN0cmlu
Zyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0
dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIE5TQXR0cmlidXRlZFN0
cmluZyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xh
c3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCkBAIC0xNzY2LDcgKzE3NDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZQogaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogbWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5T
TnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhJbmRleEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1h
cmtlciIgZm9yUGFyYW1ldGVyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJl
dHVybiBbaW5kZXhOdW1iZXIgaW50VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKQEAgLTE3NzcsNyArMTc1NSw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZv
clBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1h
cmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE3ODYsNyArMTc2NCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVt
YmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1Zh
bGlkIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAg
IHJldHVybiBbdmFsaWROdW1iZXIgYm9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAKQEAgLTE3OTYsOCArMTc3NCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrCiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1h
cmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBD
RlR5cGVSZWYpcHJldmlvdXNNYXJrZXIpOworICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xODA2LDggKzE3ODQsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eQogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjoo
X19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIp
OworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcihuZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODE2LDcgKzE3OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBt
YXJrZXJSYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0
U3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5n
ZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KV07CiAgICAgcmV0dXJuIFt0ZXh0U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xODQ2LDcgKzE4MjQsNyBAQCBzdGF0aWMgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFy
a2VyUmFuZ2UpCiB7Ci0gICAgaWQgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCldOworICAgIGlkIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6
bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVybiBjcmVh
dGVKU1N0cmluZ1JlZihzdHJpbmcpOwogfQogCkBAIC0xODU0LDkgKzE4MzIsOSBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmlu
Z0ZvclRleHRNYXJrZXJSYQogewogICAgIGlkIHBhcmFtZXRlciA9IG5pbDsKICAgICBpZiAoaW5j
bHVkZVNwZWxsQ2hlY2spCi0gICAgICAgIHBhcmFtZXRlciA9IFtOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aW5jbHVkZVNw
ZWxsQ2hlY2tdLCBAIkFYU3BlbGxDaGVjayIsIChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKSwgQCJBWFRleHRNYXJrZXJSYW5nZSIsIG5pbF07CisgICAg
ICAgIHBhcmFtZXRlciA9IEB7IEAiQVhTcGVsbENoZWNrIjogaW5jbHVkZVNwZWxsQ2hlY2sgPyBA
WUVTIDogQE5PLCBAIkFYVGV4dE1hcmtlclJhbmdlIjogbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCkgfTsKICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlciA9IChfX2JyaWRn
ZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAgICAgcGFy
YW1ldGVyID0gbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQg
c3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJp
YnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyIgZm9yUGFyYW1ldGVyOnBh
cmFtZXRlcl07CiAgICAgcmV0dXJuIGNyZWF0ZUpTU3RyaW5nUmVmKHN0cmluZyk7CiB9CkBAIC0x
ODY0LDkgKzE4NDIsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9f
YnJpZGdlIGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlk
KWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJheSogdGV4
dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVu
b3JkZXJlZFRleHRNYXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOwotICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1h
cmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTE4NzUsOCArMTg1Myw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhB
CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSog
cmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0
TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xODg1LDggKzE4NjMsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZwogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigo
X19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTg5Niw3ICsxODc0LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW4KIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5k
c1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTA2LDcgKzE4ODQs
NyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFy
dFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVj
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTE2LDcgKzE4OTQsNyBAQCBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9p
bnQoaW50IHgsIGludCB5KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlk
IHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
VGV4dE1hcmtlckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9p
bnQ6TlNNYWtlUG9pbnQoeCwgeSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyNSw3ICsxOTAzLDcgQEAgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50
KGludCB4LCBpbnQgeSkKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQg
dWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJ
RWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjptYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKQEAgLTE5MzYsNyArMTkxNCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0Niw3ICsxOTI0
LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRU
ZXh0TWFya2VyIl07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRn
ZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE5NTUsNyArMTkzMyw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdlIGlk
KW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlKCkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlQXR0cmlidXRlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTY0LDggKzE5NDIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcgog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0
V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4
dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WExlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2Vy
UmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTc0
LDggKzE5NTIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVAogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQg
dGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTg0LDggKzE5NjIsOCBAQCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0
V29yZFRleHRNYXJrZXJSYW5nZUZvcgogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2Jy
aWRnZSBDRlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlv
dXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIocHJldmlvdXNUZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTk0LDggKzE5NzIsOCBAQCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRl
eHRNYXJrZXJGb3JUZQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBpZCBuZXh0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhOZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6
KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1h
cmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobmV4dFRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMDQsOCArMTk4Miw4
IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRX
b3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2Vy
UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdy
YXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMTQsOCArMTk5Miw4IEBAIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1h
cmtlclJhbmdlRm9yCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgcHJldmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2Jy
aWRnZSBDRlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlv
dXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcihwcmV2aW91c1RleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMjQsOCArMjAwMiw4IEBAIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdy
YXBoU3RhcnRUZXh0TWFya2VyCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
IiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlw
ZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1hcmtl
cik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjAzNCw4ICsyMDEyLDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXgKIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJS
YW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5j
ZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsK
KyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0NCw4ICsyMDIy
LDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclQKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzVGV4dE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBp
ZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZv
clBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzVGV4dE1hcmtlcik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1NCw4ICsy
MDMyLDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckYKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9f
YnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNl
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5l
eHRUZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
aW5kZXggMGI3NDQ0OTUyMWMwNjI4ZWE2NzY1YjQzZDBmYmM2N2VjMzYzZGIyZS4uOTkwNmE5Zjdj
ZjMzODk0ZDNlMTVlMzlkMmFlMTA2NjdhZTlkYjE3NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtOTIsOSArOTIsOSBAQAogI2ltcG9ydCA8V2ViS2l0
L1dlYlZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8
Z2V0b3B0Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50
aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTE4MCw3ICsx
MTgwLDcgQEAgc3RhdGljIHZvaWQgYWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29u
c3QgY2hhciogZXhlY3V0YWJsZVBhdGgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgTlNTdHJpbmcgKnB3ZCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZXhlY3V0
YWJsZVBhdGhdIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07Ci0gICAgW1dlYlBs
dWdpbkRhdGFiYXNlIHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6cHdkXV07CisgICAgW1dlYlBsdWdpbkRhdGFiYXNlIHNldEFkZGl0aW9uYWxXZWJQ
bHVnSW5QYXRoczpAW3B3ZF1dOwogICAgIFtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0YWJh
c2VdIHJlZnJlc2hdOwogI2VuZGlmCiB9CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9p
ZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2xlYXIg
dGhlIGNvbnRlbnRzIG9mIHRoZSBnZW5lcmFsIHBhc3RlYm9hcmQKLSAgICBbW05TUGFzdGVib2Fy
ZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVj
dDpOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6
bmlsXTsKICNlbmRpZgogCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlcy5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCmluZGV4IDExOWMzZGI5ZDM0ZmI2NjY3NzE2YzA5NTI2
ZjhjOGQ5ZjI0NTYyYjUuLmY5MzFjNmFmNTEzNDE0NDIzNGYwYjY3OWU1NDg3YjlmOGVmMGM0ZTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbQpAQCAtODYsNyArODYsNyBAQCArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9h
cmRzCiAvLyBvZiB0aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3Vu
ZAogLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5l
d093bmVyCiB7Ci0gICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6dHlwZV0gb3duZXI6bmV3T3duZXJdOworICAgIHJldHVybiBbc2VsZiBkZWNsYXJl
VHlwZXM6QFt0eXBlXSBvd25lcjpuZXdPd25lcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggZGM5Mjg3
ODE3YWUyYWUzOWU3NmI1NmJmYzZjNjNhZTExYzVkNDI5NS4uMzZhNDA0YjA1OWE0NmZjYmY2YWUy
ZmQ3MWI3MzY3ODM1ZDMzOWI5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKWJl
Z2luRHJhZ1dpdGhGaWxlczooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2Vy
dChbanNGaWxlUGF0aHMgaXNLaW5kT2ZDbGFzczpbV2ViU2NyaXB0T2JqZWN0IGNsYXNzXV0pOwog
CiAgICAgTlNQYXN0ZWJvYXJkICpwYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRo
VW5pcXVlTmFtZV07Ci0gICAgW3Bib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbcGJvYXJkIGRl
Y2xhcmVUeXBlczpAW05TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKIAogICAgIE5T
VVJMICpjdXJyZW50VGVzdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltbbWFpbkZyYW1lIHdl
YlZpZXddIG1haW5GcmFtZVVSTF1dOwogCkBAIC0xNDkzLDggKzE0OTMsOCBAQCAtICh2b2lkKXNl
bnRUb3VjaEV2ZW50T2ZUeXBlOihXZWJFdmVudFR5cGUpdHlwZQogCiAgICAgZm9yIChTeW50aGV0
aWNUb3VjaCAqY3VyclRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAgICAgW3RvdWNoTG9jYXRpb25z
IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmN1cnJUb3VjaC5sb2NhdGlvbl1d
OwotICAgICAgICBbdG91Y2hJZGVudGlmaWVycyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZEludDpjdXJyVG91Y2guaWRlbnRpZmllcl1dOwotICAgICAgICBbdG91Y2hQaGFz
ZXMgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y3VyclRvdWNoLnBo
YXNlXV07CisgICAgICAgIFt0b3VjaElkZW50aWZpZXJzIGFkZE9iamVjdDpAKGN1cnJUb3VjaC5p
ZGVudGlmaWVyKV07CisgICAgICAgIFt0b3VjaFBoYXNlcyBhZGRPYmplY3Q6QChjdXJyVG91Y2gu
cGhhc2UpXTsKIAogICAgICAgICBpZiAoKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VF
bmRlZCkgfHwgKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpKQogICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbQppbmRleCBkOWY1MGQzMDc2NTFjYTI2YzQ1
YjQ3MzIwNTYxNzlkM2NjZGQxNzcyLi4yNDI4NGYwZTA2NzljODM1ZmFlNTFhOTc0ZWQ1NGUyMWY1
MmQ4NjQ3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIubW0KQEAgLTc1LDcgKzc1LDcgQEAgLSAodm9pZCljYW5jZWxO
b3RpZmljYXRpb246KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgIHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEID0gW25vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF07CiAgICAgQVNT
RVJUKF9ub3RpZmljYXRpb25zLmNvbnRhaW5zKG5vdGlmaWNhdGlvbklEKSk7CiAKLSAgICBbKF9f
YnJpZGdlIFdlYlZpZXcgKilfbm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQp
IF9ub3RpZmljYXRpb25zRGlkQ2xvc2U6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZzpub3RpZmljYXRpb25JRF1dXTsKKyAgICBbKF9f
YnJpZGdlIFdlYlZpZXcgKilfbm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQp
IF9ub3RpZmljYXRpb25zRGlkQ2xvc2U6QFtbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9u
Z0xvbmc6bm90aWZpY2F0aW9uSURdXV07CiB9CiAKIC0gKHZvaWQpbm90aWZpY2F0aW9uRGVzdHJv
eWVkOihXZWJOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL09iakNDb250cm9sbGVyLm0KaW5kZXggMGIxMjFlOTAxYmE0NTFmZDk3MWI2NDExOWY0MDJk
NzZiODUxMGY2Zi4uYzFhMTBhN2I3NTM2MTBiYzI4YmM4ZjdhY2UyOTEyMWU2NDU2MmEyZCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KQEAgLTE0NiwyNSArMTQ2
LDIwIEBAIC0gKGlkKW9iamVjdE9mQ2xhc3M6KE5TU3RyaW5nICopYUNsYXNzCiAgICAgaWYgKFth
Q2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNDRkJvb2xlYW4iXSkKICAgICAgICAgcmV0dXJuIEBZ
RVM7CiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNDRk51bWJlciJdKQotICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgIHJldHVybiBA
KDEpOwogICAgIGlmIChbYUNsYXNzIGlzRXF1YWxUb1N0cmluZzpAIk5TQ0ZTdHJpbmciXSkKICAg
ICAgICAgcmV0dXJuIEAiIjsKICAgICBpZiAoW2FDbGFzcyBpc0VxdWFsVG9TdHJpbmc6QCJXZWJT
Y3JpcHRPYmplY3QiXSkKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgaWYgKFthQ2xhc3MgaXNF
cXVhbFRvU3RyaW5nOkAiTlNBcnJheSJdKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgICAgICByZXR1cm4gQFtdOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAoTlNBcnJh
eSAqKWFycmF5T2ZTdHJpbmcKIHsKLSAgICBOU1N0cmluZyAqc3RyaW5nc1szXTsKLSAgICBzdHJp
bmdzWzBdID0gQCJvbmUiOwotICAgIHN0cmluZ3NbMV0gPSBAInR3byI7Ci0gICAgc3RyaW5nc1sy
XSA9IEAidGhyZWUiOwotICAgIE5TQXJyYXkgKmFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czpzdHJpbmdzIGNvdW50OjNdOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gQFsg
QCJvbmUiLCBAInR3byIsIEAidGhyZWUiIF07CiB9CiAKIC0gKEJPT0wpaWRlbnRpdHlJc0VxdWFs
OihXZWJTY3JpcHRPYmplY3QgKilhIDooV2ViU2NyaXB0T2JqZWN0ICopYgpAQCAtMjE3LDkgKzIx
MiwxMSBAQCAtIChCT09MKXRlc3RXcmFwcGVyUm91bmRUcmlwcGluZzooV2ViU2NyaXB0T2JqZWN0
ICopd2ViU2NyaXB0T2JqZWN0CiAgICAgaWYgKFtbd2ViU2NyaXB0T2JqZWN0IGV2YWx1YXRlV2Vi
U2NyaXB0OkAiKHsgfSkiXSBjbGFzc10gIT0gW3dlYlNjcmlwdE9iamVjdCBjbGFzc10pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFt3ZWJTY3JpcHRPYmplY3Qgc2V0VmFsdWU6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6NjY2XSBmb3JLZXk6QCJrZXkiXTsKLSAgICBpZiAoIVtbd2ViU2Ny
aXB0T2JqZWN0IHZhbHVlRm9yS2V5OkAia2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xh
c3NdXSB8fAotICAgICAgICAhW1t3ZWJTY3JpcHRPYmplY3QgdmFsdWVGb3JLZXk6QCJrZXkiXSBp
c0VxdWFsVG9OdW1iZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6NjY2XV0pCisgICAgW3dlYlNj
cmlwdE9iamVjdCBzZXRWYWx1ZTpAKDY2NikgZm9yS2V5OkAia2V5Il07CisgICAgaWQgdmFsdWUg
PSBbd2ViU2NyaXB0T2JqZWN0IHZhbHVlRm9yS2V5OkAia2V5Il07CisgICAgaWYgKCFbdmFsdWUg
aXNLaW5kT2ZDbGFzczpOU051bWJlci5jbGFzc10pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIVt2YWx1ZSBpc0VxdWFsVG9OdW1iZXI6QCg2NjYpXSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgW3dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6QCJrZXkiXTsK
QEAgLTI3Miw3ICsyNjksNyBAQCAtICh2b2lkKXN0b3JlV2ViU2NyaXB0T2JqZWN0OihXZWJTY3Jp
cHRPYmplY3QgKil3ZWJTY3JpcHRPYmplY3QKIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheQogewot
ICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNB
cnJheSAqKXRlc3RBcnJheU9mT2JqZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQppbmRleCAwMDY1OTU2YzgxZGQ3MTM1ZGUwMjdmNDlhMWY1M2JlYzY4MzYwNzJh
Li45MzEyZDhiOGE5NzZmYTVhMmIxNGRhYTRlMzM2MDRlNDI0YmEwNTMxIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTczLDE5ICsxNzMsMTYgQEAgdm9p
ZCBUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYg
dXJsKQogICAgIFtvcmlnaW4gcmVsZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5
VG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKK3N0YXRpYyBKU09i
amVjdFJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpv
cmlnaW5zKQogewotICAgIE5TVUludGVnZXIgY291bnQgPSBbb3JpZ2lucyBjb3VudF07Ci0KLSAg
ICBKU1ZhbHVlUmVmIGFycmF5UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwg
MCwgMCk7Ci0gICAgSlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4
dCwgYXJyYXlSZXN1bHQsIDApOworICAgIGF1dG8gY291bnQgPSBbb3JpZ2lucyBjb3VudF07Cisg
ICAgYXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51
bGxwdHIpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAg
ICAgICAgTlNTdHJpbmcgKm9yaWdpbiA9IFtbb3JpZ2lucyBvYmplY3RBdEluZGV4OmldIGRhdGFi
YXNlSWRlbnRpZmllcl07CiAgICAgICAgIGF1dG8gb3JpZ2luSlMgPSBhZG9wdChKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpb3JpZ2luKSk7Ci0gICAgICAg
IEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBKU1ZhbHVl
TWFrZVN0cmluZyhjb250ZXh0LCBvcmlnaW5KUy5nZXQoKSksIDApOworICAgICAgICBKU09iamVj
dFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgSlNWYWx1ZU1ha2VTdHJpbmco
Y29udGV4dCwgb3JpZ2luSlMuZ2V0KCkpLCAwKTsKICAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlS
ZXN1bHQ7CisgICAgcmV0dXJuIGFycmF5OwogfQogCiBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om9y
aWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYgY29udGV4dCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tCmluZGV4IDFj
YmJkNzFkNGFjMWJhYWU3MWI0ZjljNDc1Y2FiMjE3YmEyM2MyNDUuLjM1ZWFlOGYwNTNkODc5YWJh
NTcxZmI5YjM5ZDAzNGYyZDg2ODRjNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubQpAQCAtMzg3LDcgKzM4Nyw3IEBAIC0gKE5TQXJy
YXkgKiltYXJrZWRSYW5nZQogCiAgICAgaWYgKHRleHRJbnB1dCkgewogICAgICAgICBOU1Jhbmdl
IHJhbmdlID0gW3RleHRJbnB1dCBtYXJrZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2Uu
bG9jYXRpb25dLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0s
IG5pbF07CisgICAgICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0
aCldOwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CkBAIC0zOTksNyArMzk5LDcgQEAgLSAoTlNB
cnJheSAqKXNlbGVjdGVkUmFuZ2UKIAogICAgIGlmICh0ZXh0SW5wdXQpIHsKICAgICAgICAgTlNS
YW5nZSByYW5nZSA9IFt0ZXh0SW5wdXQgc2VsZWN0ZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
cmFuZ2UubG9jYXRpb25dLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxl
bmd0aF0sIG5pbF07CisgICAgICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdl
Lmxlbmd0aCldOwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CkBAIC00MTUsMTIgKzQxNSw3IEBA
IC0gKE5TQXJyYXkgKilmaXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTooaW50KWZyb20gbGVuZ3Ro
OihpbnQpbGVuZ3RoCiAgICAgICAgICAgICByZWN0Lm9yaWdpbiA9IFtbd2ViVmlldyB3aW5kb3dd
IGNvbnZlcnRTY3JlZW5Ub0Jhc2U6cmVjdC5vcmlnaW5dOwogICAgICAgICAgICAgcmVjdCA9IFt3
ZWJWaWV3IGNvbnZlcnRSZWN0OnJlY3QgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6cmVjdC5vcmlnaW4ueF0sCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEZsb2F0OnJlY3Qub3JpZ2luLnldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDpyZWN0LnNpemUud2lkdGhdLAotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDpyZWN0LnNpemUuaGVpZ2h0XSwKLSAgICAgICAgICAgIG5pbF07CisgICAg
ICAgIHJldHVybiBAWyBAKHJlY3Qub3JpZ2luLngpLCBAKHJlY3Qub3JpZ2luLnkpLCBAKHJlY3Qu
c2l6ZS53aWR0aCksIEAocmVjdC5zaXplLmhlaWdodCkgXTsKICAgICB9CiAKICAgICByZXR1cm4g
bmlsOwpAQCAtNDg0LDcgKzQ3OSw3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKWRp
Y3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nCiAgICAgaWYg
KCFzdWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBO
U1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRp
dmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZl
IGFsdGVybmF0aXZlU3RyaW5nczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVd
XSBhdXRvcmVsZWFzZV07CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVj
dCA9IFtbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1
YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6QFthbHRlcm5hdGl2ZV1d
IGF1dG9yZWxlYXNlXTsKICAgICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQogICAgICAgICByZXR1
cm4gbmlsOwogCkBAIC01MzgsNyArNTMzLDcgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6
KE5TQXJyYXkgKilldmVudEFycmF5IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGUKIAog
ICAgIFttb2RpZmllcnMgcmVsZWFzZV07CiAgICAgCi0gICAgaWQgcmVzdWx0ID0gW2lucHV0TWV0
aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbSwgbmls
XV07CisgICAgaWQgcmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0
aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpAW2lucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJh
bV1dOwogICAgIGlmICghW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJvb2xW
YWx1ZSldIHx8ICFbcmVzdWx0IGJvb2xWYWx1ZV0pIHsKICAgICAgICAgSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgW3NlbmRlciBkb0NvbW1hbmRC
eVNlbGVjdG9yOkBzZWxlY3Rvcihub29wOildOyAvLyBBcHBLaXQgc2VuZHMgbm9vcDogaWYgdGhl
IGltZSBkb2VzIG5vdCBoYW5kbGUgYW4gZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDBlZWFhMDhjYTIyM2JlNDk2Njc2
MDRkOWU5ZjY1MTlkYWZlN2MyYzYuLmVlMzIzNTkyMTUxM2MzZTllMGExMTVjZDBhM2NmOTBjZjZl
NzI3NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29u
dHJvbGxlck1hYzo6cGxhdGZvcm1VbmRvTWFuYWdlcigpIGNvbnN0CiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlck1hYzo6Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIHsKICAgICBOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7Ci0gICAgW3Bh
c3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpA
W05TUGFzdGVib2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0
U3RyaW5nOnRleHQtPnN0cmluZygpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50V2luLmNwcAppbmRleCA3OTdjNzBkYzRhNzMzMGQxNzAzYjc0MThmZWM4M2UzZDcxZmZh
ODAxLi5iNzM4NDBlZTA1MGVhOWI5NjM3MDBlMjZlMzJlMzQ5NDY4OGU1Njk0IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4u
Y3BwCkBAIC01OCwxNSArNTgsNiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCiB7CiB9CiAKLUFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCYgb3RoZXIpCi0gICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotewot
fQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17
Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpCiB7CiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlQ29tcGFy
YWJsZT4gY29tcGFyYWJsZSA9IGNvbXBhcmFibGVPYmplY3QobV9lbGVtZW50LmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5tbQppbmRleCA2MjlkMWRmY2YyMzdiN2U2ZDk0OGU1YWQyNzBjNmViMTU5MWZjNGE5Li43
YTFkM2Y3NjExNTg3NDAyYjBkMTRhZDc2NGZiZGRlODNlMzg3MTYxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBA
IC0yNDIsMTIgKzI0MiwxMCBAQCAtICh2b2lkKXNldFJlc3VsdHNGcm9tSlNPYmplY3Q6KEpTT2Jq
ZWN0UmVmKXJlc3VsdHNPYmplY3QgaW5Db250ZXh0OihKU0NvbnRleHRSZQogICAgICAgICAgICAg
ICAgIGF1dG8gZGV0YWlsc09iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBkZXRhaWxz
VmFsdWUsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09iamVjdFByb3Bl
cnRpZXMgPSBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIGRldGFpbHNPYmplY3Qp
OwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGRldGFpbEluZGV4ID0gMDsgZGV0YWlsSW5k
ZXggPCBKU1Byb3BlcnR5TmFtZUFycmF5R2V0Q291bnQoZGV0YWlsc09iamVjdFByb3BlcnRpZXMp
OyArK2RldGFpbEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byBkZXRhaWxPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgZGV0YWlsc09iamVjdCwgZGV0YWlsSW5kZXgs
IG51bGxwdHIpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgbG9uZyBmcm9tID0gbHJv
dW5kbChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBkZXRhaWxPYmplY3QsIGZyb21Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRy
KSk7CiAgICAgICAgICAgICAgICAgICAgIGxvbmcgdG8gPSBscm91bmRsKEpTVmFsdWVUb051bWJl
cihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGRldGFpbE9iamVjdCwgdG9Q
cm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIFtkZXRhaWwgc2V0T2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdl
KGZyb20sIHRvIC0gZnJvbSldIGZvcktleTpOU0dyYW1tYXJSYW5nZV07Ci0gICAgICAgICAgICAg
ICAgICAgIFtkZXRhaWxzIGFkZE9iamVjdDpkZXRhaWwuZ2V0KCldOworICAgICAgICAgICAgICAg
ICAgICBbZGV0YWlscyBhZGRPYmplY3Q6QHsgTlNHcmFtbWFyUmFuZ2U6IFtOU1ZhbHVlIHZhbHVl
V2l0aFJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIHRvIC0gZnJvbSldIH1dOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxz
T2JqZWN0UHJvcGVydGllcyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tCmluZGV4IDQyMzczYzQ3YjY1YzdlZjUwZDg0YjQ5YjdiMGQ2NzNmN2M2
MjQ0M2EuLjk5MjU4ZDVjZDI1YTdjNTA2NzJjMTQ2MmE0MzdlNjg5NGQxNjVhNGYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBy
ZWNlaXZlZE5vdGlmaWNhdGlvbjsKQEAgLTU4LDE1ICs1OSw2IEBAIHN0cnVjdCBOb3RpZmljYXRp
b24gewogICAgIH0KIH07CiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1ZlY3RvcihOU0FycmF5
PE5TU3RyaW5nICo+ICphcnJheSkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAg
dmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOwotICAgIGZvciAoTlNT
dHJpbmcgKnN0cmluZyBpbiBhcnJheSkKLSAgICAgICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwot
ICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8Tm90aWZpY2F0aW9uPiBub3Rp
ZmljYXRpb25MaXN0Owogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gbm90aWZpY2F0aW9uVVJMOwog
c3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gbm90aWZpY2F0aW9uSWRlbnRpZmllcjsKQEAgLTg4
LDcgKzgwLDcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBVUkw6KE5T
VVJMICopdXJsIGNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXIKIAogLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIHBlcmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9u
ICopYWN0aW9uIGZvclVSTDooTlNVUkwgKil1cmwKIHsKLSAgICBub3RpZmljYXRpb25MaXN0LmFw
cGVuZCh7IGlkZW50aWZpZXIsIHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExv
YWQsICEhYWN0aW9uLmJsb2NrZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIHRvVmVjdG9y
KGFjdGlvbi5ub3RpZmljYXRpb25zKSB9KTsKKyAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7
IGlkZW50aWZpZXIsIHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEh
YWN0aW9uLmJsb2NrZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIG1ha2VWZWN0b3I8U3Ry
aW5nPihhY3Rpb24ubm90aWZpY2F0aW9ucykgfSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+
KXVybFNjaGVtZVRhc2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAzN2Y4YTExZGY0ODM1
NzVkYTczNWNmMzg1ZmQwNzdhY2QwMTYxZjk3Li5lZTkzMGRmYTE4NzEyMGFlNGUwYzlhYjQ0Yjdk
ZmU2YTEzNTE1ZTJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNjYsNyArMjY2LDcg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlh
bGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxz
ZTsKICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmRE
b21haW5zOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5
ICpkb21haW5zVG9Db21wYXJlID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpAIjEyNy4wLjAu
MSIsIEAiYXBwbGUuY29tIiwgQCJiYXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIs
IEAibG9jYWxob3N0IiwgQCJ0ZXN0ZG9tYWluMSIsICBAIndlYmtpdC5vcmciLCBuaWxdOworICAg
ICAgICBOU0FycmF5ICpkb21haW5zVG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUu
Y29tIiwgQCJiYXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0
IiwgQCJ0ZXN0ZG9tYWluMSIsICBAIndlYmtpdC5vcmciXTsKIAogICAgICAgICBOU0FycmF5ICpz
b3J0ZWREb21haW5zID0gW2RvbWFpbnMgc29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOkBzZWxlY3Rv
cihjYXNlSW5zZW5zaXRpdmVDb21wYXJlOildOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KaW5kZXggM2EyZmM5MGYwYzJiY2Vm
ZDEzNzllNjE4YTgwZWE3NTdlNjU5NGI5NS4uOTg0ODlmMGI4NjExZWVhMDA1OGJlNTkwNGMyNTZi
NzFiNmM4ZjgyYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUltYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUGFzdGVJbWFnZS5tbQpAQCAtMzksMTMgKzM5LDEzIEBACiAjaWYgUExBVEZPUk0oTUFD
KQogdm9pZCB3cml0ZUltYWdlRGF0YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRh
ICpkYXRhKQogewotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJl
VHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5pbF07CisgICAgW1tO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW3R5cGVdIG93bmVy
Om5pbF07CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0
YSBmb3JUeXBlOnR5cGVdOwogfQogI2Vsc2UKIHZvaWQgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9h
cmQoTlNTdHJpbmcgKnR5cGUsIE5TRGF0YSAqZGF0YSkKIHsKLSAgICBbW1VJUGFzdGVib2FyZCBn
ZW5lcmFsUGFzdGVib2FyZF0gc2V0SXRlbXM6QFtbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0OmRhdGEgZm9yS2V5OnR5cGVdXV07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBh
c3RlYm9hcmRdIHNldEl0ZW1zOkBbQHsgdHlwZTogZGF0YSB9XV07CiB9CiAjZW5kaWYKIApAQCAt
MTU1LDggKzE1NSw4IEBAIFRFU1QoUGFzdGVJbWFnZSwgUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJQYXN0
aW5nSW1hZ2UpCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3Rl
Ym9hcmQoaWQgb2JqZWN0KQogewotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJk
XSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJk
VHlwZV0gb3duZXI6bmlsXTsKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
d3JpdGVPYmplY3RzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6b2JqZWN0LCBuaWxdXTsKKyAg
ICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNGaWxl
bmFtZXNQYm9hcmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSB3cml0ZU9iamVjdHM6QFtvYmplY3RdXTsKIH0KIAogVEVTVChQYXN0ZUltYWdl
LCBQYXN0ZUdJRkZpbGUpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Bhc3RlV2ViQXJjaGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tCmluZGV4IGI3ODVmNWM0ZjJiZDcwMmEzMjVi
MzcwNTA0NmJlZTU5ODI2MzExOGIuLmNjN2Y0NDM4YzgyZGY5NGIyOTBkNzc3YTZiYzZhZWI5Mjdj
NzdkODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UGFzdGVXZWJBcmNoaXZlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tCkBAIC0yNDksNyArMjQ5LDcgQEAgVEVTVChQYXN0ZVdl
YkFyY2hpdmUsIFdlYkFyY2hpdmVUeXBlSWRlbnRpZmllcikKICAgICBhdXRvIGFyY2hpdmUgPSBh
ZG9wdE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291
cmNlLmdldCgpIHN1YnJlc291cmNlczpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsKIAogICAg
IE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdOwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07Cisg
ICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2
ZSBkYXRhXSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsK
IAogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDFhNjUzZDcyZmI2
NTZhOGJlYmVmYjI5ZjgzYTJhYjczNjUxYWQ4NmUuLjg0ZThiZmUyNzEzZjAwMjBkMGRmNzg0MWM1
Nzc5NDQ3YjZlMTA3MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC04MTcsNyAr
ODE3LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5KQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90
aWZpY2F0aW9uKQogewotICAgIFdLVXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBb
W1tXS1VzZXJTY3JpcHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9y
IG5vdGlmaWNhdGlvbicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVB
dERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0Fy
cmF5IGFycmF5XSBsZWdhY3lCbGFja2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tD
b250ZW50V29ybGQgZGVmYXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNh
dGlvbjpZRVNdIGF1dG9yZWxlYXNlXTsKKyAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZp
Y2F0aW9uID0gW1tbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgn
d2FpdGVkIGZvciBub3RpZmljYXRpb24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRl
bGlzdDpAW10gbGVnYWN5QmxhY2tsaXN0OkBbXSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAidGVzdDovLy9zY3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRl
ZmF1bHRDbGllbnRXb3JsZF0gZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRv
cmVsZWFzZV07CiAgICAgV0tVc2VyU2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlw
dCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcp
IiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZv
ck1haW5GcmFtZU9ubHk6WUVTXSBhdXRvcmVsZWFzZV07CiAKICAgICBUZXN0V0tXZWJWaWV3ICp3
ZWJWaWV3MSA9IFtbVGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tCmluZGV4IDk5NzUwNWJjNDBkYzA4N2EwNWU5M2M4Njk4ZTkwOGM0YjlkZGEzYzguLmM0
NGYwZGFiZGZlMThhYWIwNTQ4Y2M5MmM3MzIzNzM1MTIwODBkN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbQpAQCAtMTcxNiw3ICsxNzE2LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgVGFy
Z2V0ZWRQcmV2aWV3c1doZW5Ecm9wcGluZ0ltYWdlcykKICAgICBbc2Vjb25kSXRlbSBzZXRTdWdn
ZXN0ZWROYW1lOkAiYXBwbGUiXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRp
bWluZzpEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBb
c2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOmZpcnN0SXRlbS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKSwgbmlsXSBkZWZhdWx0RHJvcFBy
ZXZpZXdzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Zmlyc3RQcmV2aWV3LmdldCgpLCBzZWNv
bmRQcmV2aWV3LmdldCgpLCBuaWxdXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVBy
b3ZpZGVyczpAW2ZpcnN0SXRlbS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQ
cmV2aWV3czpAW2ZpcnN0UHJldmlldy5nZXQoKSwgc2Vjb25kUHJldmlldy5nZXQoKV1dOwogICAg
IFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSg0NTAs
IDQ1MCldOwogCiAgICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10u
Y291bnQsIDJVKTsKQEAgLTE3NTUsNyArMTc1NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJ
T1MsIFRhcmdldGVkUHJldmlld0lzQ2xpcHBlZFdoZW5Ecm9wcGluZ1RhbGxJbWFnZSkKICAgICBb
aXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiZ3JlZW4iXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJv
cEFuaW1hdGlvblRpbWluZzpEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdE
cm9wXTsKLSAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3Q6aXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3Q6cHJldmlldy5nZXQoKV1dOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJu
YWxJdGVtUHJvdmlkZXJzOkBbaXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW3ByZXZp
ZXcuZ2V0KCldXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86
Q0dQb2ludE1ha2UoMzUwLCAzNTApXTsKIAogICAgIEVYUEVDVF9FUShbc2ltdWxhdG9yIGRlbGF5
ZWREcm9wUHJldmlld3NdLmNvdW50LCAxVSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA1NWRl
ZmM0N2VlOTY1MTZmMDA2MDNkYTE4OGY2N2ZhZGQ1M2Y0MjZkLi5lYzNiNjA4ZDFiYjU0NTMwMmE4
NDViYmQ5YWIzODg2NThkYTM4NDZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTM3Miw3ICsz
NzIsNyBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3JlLCBDcmVhdGlvblRpbWUpCiAgICAgW2Nvb2tp
ZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUiIGZvcktleTpOU0hUVFBDb29raWVW
YWx1ZV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiLnd3dy53ZWJraXQub3Jn
IiBmb3JLZXk6TlNIVFRQQ29va2llRG9tYWluXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRP
YmplY3Q6QCIvcGF0aCIgZm9yS2V5Ok5TSFRUUENvb2tpZVBhdGhdOwotICAgIFJldGFpblB0cjxO
U051bWJlcj4gY3JlYXRpb25UaW1lID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MTAwMDAw
XTsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGNyZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAg
ICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpA
IkNyZWF0ZWQiXTsKICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQ
Q29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLT2JqZWN0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS09iamVjdC5tbQppbmRleCBi
NzQ2ZTM3Y2MwNTMwMjQ0NDU2OTA5ZmQxZjc1M2M5ODE0YjI1Y2JiLi4xZDZlZmYyMjZhMGJlZGFh
OGJjN2U4MzU0MDg4MWFmNWRlYTE4M2Y5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLT2JqZWN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tPYmplY3QubW0KQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChXZWJL
aXQsIFdLT2JqZWN0KQogewogICAgIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiA9IFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJqdXN0IHRlc3RpbmciKTsKICAgICBBU1NFUlRfVFJVRShbQCJq
dXN0IHRlc3RpbmciIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmdSZWZdKTsKLSAg
ICBBU1NFUlRfVFJVRShbKE5TU3RyaW5nICopc3RyaW5nUmVmIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pOworICAgIEFTU0VSVF9UUlVFKFsoTlNTdHJpbmcgKilzdHJpbmdSZWYgIGNs
YXNzXV0pOwogCiAgICAgTlNTdHJpbmcgKndlYWtTdHJpbmcgPSBuaWw7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3Jl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRh
c3RvcmUubW0KaW5kZXggOWJiMzZkNGFmYTE3NWYwZTEyM2MxY2FmNWU3OTA3YWFmNmYyNzhmZi4u
Yjk1OGYzYjIzZDBiYWM5MzllZTBlOGNiMDUzNjhmZDVlN2Q5Mzc1OSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRh
c3RvcmUubW0KQEAgLTIwMSw3ICsyMDEsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVt
b3ZlTm9uUGVyc2lzdGVudENyZWRlbnRpYWxzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVt
b3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHNdIGZvckRhdGFSZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpleHBlY3Rl
ZFJlY29yZC5nZXQoKV0gY29tcGxldGlvbkhhbmRsZXI6Xih2b2lkKSB7CisgICAgW3dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0
ZURhdGFUeXBlQ3JlZGVudGlhbHNdIGZvckRhdGFSZWNvcmRzOkBbZXhwZWN0ZWRSZWNvcmQuZ2V0
KCldIGNvbXBsZXRpb25IYW5kbGVyOl4odm9pZCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAg
ICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCAxM2EzZTk4ZWJhYmJkZmVlYWEyNGRkODg2
MTM4Y2RlNzMxYmY2Yjg0Li5jOTBlYTFjYjJhMjhlY2JlZmZhZTIzZWRlNWFkNjllMzVlOGU4NTIz
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtMjE4LDcgKzIx
OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRF
bmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgICAgIEVYUEVDVF9FUShbcmVjb3Jk
cyBjb3VudF0sICh1bnNpZ25lZCBsb25nKTMpOwogICAgICAgICBmb3IgKGlkIHJlY29yZCBpbiBy
ZWNvcmRzKSB7CiAgICAgICAgICAgICBpZiAoW1tyZWNvcmQgZGlzcGxheU5hbWVdIGlzRXF1YWw6
IEAiYXBwbGUuY29tIl0pIHsKLSAgICAgICAgICAgICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOnR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVj
dDpyZWNvcmRdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgICAgICAgICAgW2RhdGFT
dG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpAW3JlY29y
ZF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmcmFtZUlEQlBh
dGguZ2V0KCkucGF0aF0pOwogICAgICAgICAgICAgICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tCmluZGV4IDEwNmEyNWFh
NzRiOWI3MWQ3YWI2ZTgxN2QwY2M1OTQxMDA1M2I0OGUuLjRiMjllNzlkYjdkODc2M2UwYmFkMWU2
YjNiYTIyOWFlZjcxYjNiZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9XZWJWaWV3Q2FuUGFzdGVVUkwubW0KQEAgLTM3LDcgKzM3LDcgQEAgVEVTVChXZWJLaXRM
ZWdhY3ksIFdlYlZpZXdDYW5QYXN0ZVVSTCkKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5h
bWU6bmlsXTsKICAgICBbd2ViVmlldyBzZXRFZGl0YWJsZTpZRVNdOwogCi0gICAgW1tOU1Bhc3Rl
Ym9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6TlNVUkxQYm9hcmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdl
bmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1VSTFBib2FyZFR5cGVdIG93bmVyOm5p
bF07CiAgICAgW1tOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3d3dy53ZWJraXQub3JnLyJd
IHdyaXRlVG9QYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKICAg
ICBbd2ViVmlldyBwYXN0ZTpuaWxdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbQppbmRleCA1OGUwN2MxNDBlZWZj
YWI0NWI4ZTJkZTczYzgwZGY3MWVkZWZiMDg2Li5mYTJlMmFhOTY3YWJhMjMxYTc3MDcwZDJjMTcw
YTE4ZWIxYmRmOGEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9X
ZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0KQEAgLTM4LDcgKzM4LDcgQEAgVEVTVChXZWJL
aXRMZWdhY3ksIFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcpCiAgICAgW3dlYlZpZXcgc2V0RWRpdGFi
bGU6WUVTXTsKICAgICAKICAgICAvL3Bhc3RpbmcgYSAweDAgaW1hZ2UgYXMgcGRmIGJvYXJkIHR5
cGUuIFJlZmVycmluZyB0byA8cmRhcjovL3Byb2JsZW0vMTExNDE5MjA+Ci0gICAgW1tOU1Bhc3Rl
Ym9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6TlNQREZQYm9hcmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdl
bmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1BERlBib2FyZFR5cGVdIG93bmVyOm5p
bF07CiAgICAgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCIwIiB3aXRo
RXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
IHdyaXRlVG9QYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKICAg
ICBbd2ViVmlldyBwYXN0ZTpuaWxdOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250
ZXh0Lm1tCmluZGV4IDY5ZjQ0ODllNzdmYTBiNjY4NjViMWJhNjUxYTcyYzVlNTExNjBlN2EuLmEw
ZjM0ODEzNGFlNDU0ODFlNGI2ZWVmOGViYmI5ZTg2YWVjMmY2MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4
dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRl
SmF2YVNjcmlwdENvbnRleHQubW0KQEAgLTk0LDcgKzk0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopd2ViVmlldyBkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDooSlNDb250ZXh0ICop
Y29udGUKICAgICB9OwogCiAgICAgY29udGV4dFtAImNhbGxNZUJhY2siXSA9IF4oSlNWYWx1ZSAq
ZnVuY3Rpb25WYWx1ZSkgewotICAgICAgICBbZnVuY3Rpb25WYWx1ZSBjYWxsV2l0aEFyZ3VtZW50
czpbTlNBcnJheSBhcnJheV1dOworICAgICAgICBbZnVuY3Rpb25WYWx1ZSBjYWxsV2l0aEFyZ3Vt
ZW50czpAW11dOwogICAgIH07CiAKICAgICBjb250ZXh0W0AiY2hlY2tGb3JNeUN1c3RvbVByb3Bl
cnR5Il0gPSBeKEpTVmFsdWUgKmVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL21haW5JT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1t
CmluZGV4IGNmMDhhNzQ4MDliZTEwMWQ4ZWIzOTQxMWYzNDJiNjUwMjM5MmVhODEuLjAxYzdkMjcz
NjE1NjcxYmUwMDhmMjE4OGZjZDNjN2UxZmQwMGI1ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL21haW5JT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFp
bklPUy5tbQpAQCAtMzcsOSArMzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgIAotICAgIE5TRGljdGlvbmFyeSAq
ZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgQFlFUywgICAgQCJXZWJLaXRMaW5rZWRPbk9yQWZ0ZXJFdmVy
eXRoaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICBOU0RpY3Rpb25h
cnkgKmRpY3QgPSBAeyBAIldlYktpdExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmciOiBAWUVTIH07
CiAKICAgICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRpY3RdOwog
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9t
YWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0K
aW5kZXggM2EzM2MyZGFiY2MzMDIwNWViYTczYjNkNDg4YmE0ODA4Y2YyM2Y5OC4uNDFiMTdlYjRi
NDU3MGUzYjVmN2MzY2Y1ZWMwMzE2MTM2YmJlMDE4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQpAQCAtMzYsMTQg
KzM2LDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0Fy
Z3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV07CiAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKICAg
ICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
OwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnRlZ2VyOjRdLCAgIEAiQXBwbGVBbnRpQWxpYXNpbmdUaHJlc2hvbGQiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6MF0s
ICAgQCJBcHBsZUZvbnRTbW9vdGhpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBATk8s
ICAgICBAIk5TU2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIEBOTywgICAgIEAiTlNPdmVybGF5U2Nyb2xsZXJzRW5hYmxlZCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEAiQWx3YXlzIiwgICAgICAgICAgICAgICAgICAgICAgICBAIkFwcGxlU2hv
d1Njcm9sbEJhcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworCisgICAgTlNE
aWN0aW9uYXJ5ICpkaWN0ID0gQHsKKyAgICAgICAgQCJBcHBsZUFudGlBbGlhc2luZ1RocmVzaG9s
ZCI6IEAoNCksCisgICAgICAgIEAiQXBwbGVGb250U21vb3RoaW5nIjogQCgwKSwKKyAgICAgICAg
QCJOU1Njcm9sbEFuaW1hdGlvbkVuYWJsZWQiOiBATk8sCisgICAgICAgIEAiTlNPdmVybGF5U2Ny
b2xsZXJzRW5hYmxlZCI6IEBOTywKKyAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIjogQCJB
bHdheXMiLAorICAgIF07CiAKICAgICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0
aW9uYXJ5OmRpY3RdOwogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFp
bl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQppbmRleCA3Y2E5OWU2YTNiNWU0MDgyZWFm
Y2Q5NDc0NDkwYWMwOTVmZjBkNDNjLi5iZTdkODcyNjdlYzIyMTU0M2E1NDlmZTJiODhkMWM4MzI5
OTJmYTI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KQEAgLTM5LDkgKzM5LDcgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGlmICghYXJndW1lbnREb21haW4p
CiAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XTsKICAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEBZRVMs
ICAgIEAiV2ViS2l0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gQHsgQCJXZWJLaXRMaW5r
ZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nIjogQFlFUyB9OwogCiAgICAgW2FyZ3VtZW50RG9tYWluIGFk
ZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFpbiBmb3JOYW1l
Ok5TQXJndW1lbnREb21haW5dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IGE1
ZDU4ZWNjMTYyMDdmODQ5ZDc0YzJkZjExZjM5ODY2ODlhOWY0OWIuLjViNjc4MTEwMTI1MTM4ZDYy
YmRkYjhiMzMzMzRmNGQyNDUxZjAzNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgK
QEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvbkhhbmRs
ZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKICNlbGlmIFVTRShBVEspCiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAppbmRleCAwNDFmODFiYzc2ZDUw
MzZiOWE5MjllOTBhMmM2MmU3MTE3OGJlYjNjLi44ZmM5NGY2ZjU0OTQ4ODM1NTViMTQ0YjE0NTAz
MDYyMDQ4MTYwMWU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci10eXBlZGVmIENGVHlwZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXI7Cit1c2luZyBQbGF0Zm9ybVRl
eHRNYXJrZXIgPSBpZDsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlcjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAppbmRleCAxOGMx
OGQ0OGU0MWNkZjA5OGFjOTE1ODhmZjY2MzExMDYyOTkxMjNmLi43ODE4MmVlOTBjNGUyNzk3NTZm
YzY5NThhNDEyZTFjYWIyNDBlMjYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNyArMzIsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotdHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7Cit1
c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCog
UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0
ZToKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UmKTsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5Q
dHI8UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJhbmdlOworICAgIFJldGFp
blB0cjxpZD4gbV90ZXh0TWFya2VyUmFuZ2U7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlIG1fdGV4dE1hcmtlclJhbmdlOwogI2VuZGlmCkBAIC02Nyw0ICs2Nyw4IEBAIHByaXZh
dGU6CiBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFsKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAg
ICAgCisjaWZkZWYgX19PQkpDX18KK2lubGluZSBPcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiosIGlkIHJhbmdlKSB7IHJldHVybiB7IHsgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHJhbmdlKSB9IH07IH0KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMzVmYjM3MDcx
NmIyYWMzZTkyNWUxNjc2YzUyZTEyMmFhODFiYjc3Zi4uMTQxZGIyMGFlYjkyYTgxODQ3ZTkwZDg4
YTA1OTQ0MDdlNjhjNmVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTM1LDEx
ICszNSw4IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaWZkZWYgX19PQkpDX18KLXR5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1lbnQ7Ci0jZWxzZQot
dHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwotI2VuZGlmCisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordXNpbmcgUGxhdGZvcm1VSUVsZW1lbnQgPSBpZDsK
ICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUSykKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgogI2luY2x1ZGUgPGF0ay9hdGsuaD4KQEAg
LTQ5LDE0ICs0Niw2IEBAIHR5cGVkZWYgR1JlZlB0cjxBdGtPYmplY3Q+IFBsYXRmb3JtVUlFbGVt
ZW50OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0jaWZkZWYgX19PQkpDX18KLXR5cGVkZWYgaWQgTm90aWZpY2F0aW9uSGFu
ZGxlcjsKLSNlbHNlCi10eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogTm90aWZpY2F0aW9uSGFu
ZGxlcjsKLSNlbmRpZgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKQEAgLTY2LDcgKzU1LDEzIEBA
IHB1YmxpYzoKIAogICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBpZCBwbGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudC5n
ZXQoKTsgfQorI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVt
ZW50IHBsYXRmb3JtVUlFbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKIAogICAgIHN0YXRpYyBKU09i
amVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3Qg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwpAQCAtMzU2LDEyICszNTEsMTUgQEAgcHJpdmF0ZToK
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKICAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKIAorI2lm
ICFQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7Ci0gICAg
CisjZW5kaWYKKwogICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1
c2VkIHRvIGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgogI2lmIEhB
VkUoQUNDRVNTSUJJTElUWSkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBOb3RpZmljYXRpb25I
YW5kbGVyIG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZWxlbWVu
dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKIAogICAgIHZvaWQg
Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
ID4mKTsKICAgICB2b2lkIGdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiA+Jik7CkBAIC0zNzgsNCArMzc2LDggQEAgcHJpdmF0ZToKICNlbmRpZgog
fTsKICAgICAKKyNpZmRlZiBfX09CSkNfXworaW5saW5lIE9wdGlvbmFsPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+KiwgaWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSB9IH07IH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
Y29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KaW5kZXggZDFjZjdmNTUwNGVl
ZTBiYzMyOWYxOTNkMjU1YjZmMmM0NDM5MmNlMS4uZGIzYzI4OTMxZDA1ZjU0MjA2YjFiZjVkNTI5
ODE0ODQ5OThhYTI0MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KQEAgLTMw
LDcgKzMwLDYgQEAKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udE1hbmFnZXIuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1N0cmluZ0NGLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiAjaWYgVVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJJT1MubW0KaW5kZXggMWYxMDdjZTc5ZDdlNDNiOGQ4MzA4MDhkMzExZGZjN2FiNjhhNDAxNS4u
NTM3MThmZTVhYmRkZWIwNzZjMmUzM2Q4NDExYjY1MWM2ZmQ2NmZhMSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KQEAgLTI5LDggKzI5LDcgQEAgbmFtZXNw
YWNlIFdUUiB7CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIG90aGVyKQogewotICAgIHJldHVybiBbKGlkKXBsYXRmb3JtVGV4
dE1hcmtlcigpIGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
cmV0dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCAzNjQxNzU1ODVlOTcxZTdhYWY2NzJhYWE4Nzli
NmRkMTdmYTRkYzA2Li41NmQyN2I0YzBmMGY3NjQ0NGJiMGVhZGM5ODE4ZThhY2Q2ZTU2OGJkIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTI0LDkgKzI0
LDEwIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgiCisKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgogI2ltcG9ydCAi
SW5qZWN0ZWRCdW5kbGVQYWdlLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
QEAgLTM2LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmlj
YXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCog
Y29udGV4dCk7CiAKQEAgLTEzNywxMyArMTM5LDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZl
cnROU0FycmF5VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKLXsKLSAgICBOU1VJbnRlZ2VyIGNvdW50
ID0gW2FycmF5IGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsg
KytpKQotICAgICAgICBlbGVtZW50VmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pKTsKLX0gICAgCi0KIHN0YXRpYyBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmlu
ZyAqYXR0cmlidXRlLCBOU1N0cmluZyAqdmFsdWUpCiB7CiAgICAgVmVjdG9yPFVuaUNoYXI+IGJ1
ZmZlcihbYXR0cmlidXRlIGxlbmd0aF0pOwpAQCAtMTYwLDIzICsxNTUsMTcgQEAgc3RhdGljIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3Ry
aW5nICphdHRyaWJ1dGUKICAgICAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChl
bGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgLy8gRklYTUU6
IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NG
UmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJl
dGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCiAgICAgOiBKU1dyYXBwYWJs
ZSgpCiAgICAgLCBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRp
b25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCiB7Ci0gICAgW21fZWxlbWVu
dCByZWxlYXNlXTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKQEAgLTI0MywyNiArMjMyLDIwIEBA
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpl
bGVtZW50QXRQb2ludChpbnQgeCwgaW50CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShlbGVtZW50KTsKIH0KICAgICAKLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRF
bGVtZW50c1RvT2JqZWN0QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykKK3N0YXRpYyBKU1ZhbHVlUmVmIGNv
bnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykKIHsKLSAgICBK
U1ZhbHVlUmVmIGFycmF5UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgbnVs
bHB0ciwgbnVsbHB0cik7Ci0gICAgSlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmpl
Y3QoY29udGV4dCwgYXJyYXlSZXN1bHQsIG51bGxwdHIpOwotICAgIHNpemVfdCBlbGVtZW50Q291
bnQgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50
Q291bnQ7ICsraSkKLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwg
YXJyYXlPYmosIGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS0+d3JhcHBlckNs
YXNzKCksIGVsZW1lbnRzW2ldLmdldCgpKSwgbnVsbHB0cik7Ci0gICAgCi0gICAgcmV0dXJuIGFy
cmF5UmVzdWx0OworICAgIGF1dG8gYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAw
LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBhdXRvIHNpemUgPSBlbGVtZW50cy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEpTT2JqZWN0U2V0
UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBKU09iamVjdE1ha2UoY29udGV4dCwg
ZWxlbWVudHNbaV0tPndyYXBwZXJDbGFzcygpLCBlbGVtZW50c1tpXS5nZXQoKSksIG51bGxwdHIp
OworICAgIHJldHVybiBhcnJheTsKIH0KLQogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbGVtZW50c0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKICAgICBK
U0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dCht
YWluRnJhbWUpOwotCiAgICAgTlNBcnJheSAqZWxlbWVudHNGb3JSYW5nZSA9IFttX2VsZW1lbnQg
ZWxlbWVudHNGb3JSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV07Ci0gICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7Ci0gICAgY29udmVy
dE5TQXJyYXlUb1ZlY3RvcihlbGVtZW50c0ZvclJhbmdlLCBlbGVtZW50cyk7Ci0gICAgcmV0dXJu
IGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkoY29udGV4dCwgZWxlbWVudHMpOworICAgIHJl
dHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIG1ha2VWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihlbGVtZW50c0ZvclJhbmdlKSk7CiB9CiAKIHVu
c2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiBlbGVtZW50KQpAQCAtMTEwMCw5ICsxMDgzLDkgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogLy8gVGV4dCBtYXJrZXJzCiBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
ZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7Ci0gICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3Rh
cnRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
LSAgICBpZCBlbmRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2Vy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgTlNBcnJheSAqdGV4
dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0VGV4dE1hcmtlciwgZW5k
VGV4dE1hcmtlciwgbmlsXTsKKyAgICBpZCBzdGFydFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxp
bmVTdGFydE1hcmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgaWQgZW5kVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtl
cjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNBcnJheSAqdGV4dE1h
cmtlcnMgPSBAW3N0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtlcl07CiAgICAgCiAgICAgaWQg
dGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRl
eHRNYXJrZXJzXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3Jl
YXRlKHRleHRNYXJrZXJSYW5nZSk7CkBAIC0xMTEwLDcgKzEwOTMsNyBAQCBSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRN
YXJrZXJSYW5nZQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogc3RhcnQsIGJvb2wgZm9yd2FyZCkKIHsKLSAgICBpZCBtaXNzcGVs
bGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTooaWQpc3Rh
cnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKKyAgICBpZCBt
aXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTpz
dGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3J3YXJkOmZvcndhcmRdOwogICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUobWlzc3BlbGxpbmdSYW5n
ZSk7CiB9CiAKQEAgLTExMjIsNDcgKzExMDUsNDYgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckUK
IAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9
IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsgICAgCi0gICAgcmV0dXJuIFtt
X2VsZW1lbnQgbGVuZ3RoRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdOworICAgIHJldHVybiBb
bV9lbGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7Ci0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZp
b3VzTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFy
a2VyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CiB9CiAKIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAgaWQgbmV4
dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5l
eHRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJh
bmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpOwotICAgIGlmICghdGV4dE1hcmtlcnMgfHwgIVt0ZXh0TWFya2VycyBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgaWQgdGV4dE1hcmtlcnMgPSBtYXJr
ZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZiAoIVt0ZXh0TWFya2Vy
cyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBjcmVhdGVF
bXB0eUpTU3RyaW5nKCk7CiAgICAgcmV0dXJuIFtbbV9lbGVtZW50IHN0cmluZ0ZvclRleHRNYXJr
ZXJzOnRleHRNYXJrZXJzXSBjcmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFy
a2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07
CisgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1h
cmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJr
ZXJzXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRl
eHRNYXJrZXJSYW5nZSk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJz
ID0gKGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJr
ZXJzID0gcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFy
a2VycyBpc1N0YXJ0OllFU107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUodGV4dE1hcmtlcik7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2Vy
cyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFy
a2VycyA9IHJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlkIHRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1h
cmtlcnMgaXNTdGFydDpOT107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUodGV4dE1hcmtlcik7CiB9CkBAIC0xMTk0LDcgKzExNzYsNyBAQCBSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQ
b2ludChpbnQgeAogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7Ci0gICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1h
cmtlcjptYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZiAob2JqKQogICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG9iaik7CiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMjk0LDcgKzEyNzYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Ywog
ewogICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkK
LSAgICAgICAgdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFy
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpLCBuaWxdOworICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAg
ICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJr
ZXJzOnRleHRNYXJrZXJzIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
dGV4dF1dOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUo
dGV4dE1hcmtlclJhbmdlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KaW5kZXggNDI5
MDhiZWZlZjdhNThmN2FlMDRmMDU4MDUzMTRlNWE0NWU0ZTNlZC4uYmQ3MmY5ODQ1YzAxMzcwYjFm
ZGE4ZWQ3ZDNiYjQ3OTI5Y2VhMGRhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KQEAg
LTM2LDEyICszNiw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZShX
S1R5cGVSZWYpCiAKICAgICAvLyBMYW5ndWFnZSB3YXMgc2V0IHVwIGVhcmxpZXIgaW4gbWFpbigp
LiBEb24ndCBjbG9iYmVyIGl0LgogICAgIE5TQXJyYXkgKmxhbmd1YWdlcyA9IFtbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1
bWVudERvbWFpbl0gdmFsdWVGb3JLZXk6QCJBcHBsZUxhbmd1YWdlcyJdOwotCi0gICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGRpY3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF0pOwotICAgIGlmIChsYW5ndWFnZXMpCi0gICAgICAgIFtkaWN0IHNl
dE9iamVjdDpsYW5ndWFnZXMgZm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKLQotICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmRpY3Qu
Z2V0KCkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rp
b25hcnkgPSBsYW5ndWFnZXMgPyBAeyBAIkFwcGxlTGFuZ3VhZ2VzIjogbGFuZ3VhZ2VzIH0gOiBA
eyB9OworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0
aWxlRG9tYWluOmRpY3Rpb25hcnkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQppbmRl
eCBjZjc3OGM2ZTFkNGFhMGE4YzUzNDM0Yzc4ODJlNjlmOGFjYjQ2ZWQxLi4zOWFhYTI0YTk3NDBh
OGMyMzA0NmFiOGY1MzJkOTg3MzFjZDI5NTVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0KQEAgLTU1LDcgKzU1LDcgQEAgTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNh
dGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmUKICAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJs
ZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAgICAgCiAgICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBz
dGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpCi0gICAgICAgIFtwYXJhbWV0ZXJpemVk
QXR0cmlidXRlIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgp
IGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07CisgICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmli
dXRlIHNldE9iamVjdDpzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAi
QVhTdGFydEVsZW1lbnQiXTsKICAgICAKICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRP
YmplY3Q6KGlzRGlyZWN0aW9uTmV4dCkgPyBAIkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0
aW9uUHJldmlvdXMiIGZvcktleTpAIkFYRGlyZWN0aW9uIl07CiAgICAgCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCmluZGV4IDVlYjk1ZjIyNzQwMWY4N2Q2ZjM5
ZjRkNTQ5YzBmY2M4NTQ2ZDdhODcuLmJhMjg5YjFkNmNkZTdhMjIxMTMyZGExOGMyMGY5NjI5MzJl
MmQzOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCkBA
IC0yOSw4ICsyOSw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICBy
ZXR1cm4gWyhfX2JyaWRnZSBpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOihfX2JyaWRn
ZSBpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbcGxhdGZvcm1U
ZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0KaW5kZXggOWI1OWJmY2UwZjRjNDg1NWJmY2RmYWU2NWQ0NTk1ZTRiZjY2MWNhMy4uMjdm
MGZiNWUxODAwOWQ1NTlkMjE0ODZlNDg5MzRiYTJmYWFkNzdhYSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tC
dW5kbGVGcmFtZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgotCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNB
dHRyaWJ1dGUgQCJBWE93bnMiCkBAIC05MiwyNyArOTIsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxl
bWVudCkKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQg
ZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25I
YW5kbGVyKDApCiB7Ci0gICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVj
dHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24g
dGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCYgb3RoZXIpCiAgICAgOiBKU1dyYXBwYWJsZSgpCiAgICAgLCBtX2VsZW1lbnQob3RoZXIubV9l
bGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxlbWVu
dCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCgpCiB7Ci0gICAgLy8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBu
aWwgYmVjYXVzZSByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIGluIHRoZSB0ZXN0LgotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsK
LSAgICBbbV9lbGVtZW50IHJlbGVhc2VdOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KQpAQCAtMTY0
LDkgKzE1Niw5IEBAIHN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVl
T2JqZWN0LCBpZCBmb2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjCiAgICAgcmV0dXJuIFt2YWx1ZU9i
amVjdCBkZXNjcmlwdGlvbl07CiB9CiAKLXN0YXRpYyBOU1N0cmluZyogYXR0cmlidXRlc09mRWxl
bWVudChpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0KQorc3RhdGljIE5TU3RyaW5nICphdHRyaWJ1dGVz
T2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCiB7Ci0gICAgTlNBcnJheSogc3VwcG9y
dGVkQXR0cmlidXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVOYW1lc107CisgICAgTlNBcnJheSAqc3VwcG9ydGVkQXR0cmlidXRlcyA9IFthY2Nlc3NpYmls
aXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CiAKICAgICBOU011dGFibGVT
dHJpbmcqIGF0dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CiAgICAg
Zm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRlZEF0dHJpYnV0ZXMgY291bnRdOyAr
K2kpIHsKQEAgLTIxOSwxNyArMjExLDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUKICAgICBy
ZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9y
PFQ+IGNvbnZlcnROU0FycmF5VG9WZWN0b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9y
PFQ+IHY7Ci0gICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkKLSAgICAgICAgdi5hcHBlbmQoVDo6VmFsdWVUeXBlOjpjcmVhdGUoW2FycmF5
IG9iamVjdEF0SW5kZXg6aV0pKTsKLSAgICByZXR1cm4gdjsKLX0KLQogc3RhdGljIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQogewogICAgIE5TTXV0YWJsZVN0
cmluZyogYWxsRWxlbWVudFN0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKQEAgLTMy
OCwzNCArMzA5LDM0IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKEFjY2Vzc2liCiB7CiAgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqcGFyYW1ldGVycyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnld
OwogCi0gICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OihfX2JyaWRnZSBpZClzdGFydC0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl07Cisg
ICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OnN0YXJ0LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
IGZvcktleTpAIkFYU3RhcnRUZXh0TWFya2VyUmFuZ2UiXTsKICAgICBbcGFyYW1ldGVycyBzZXRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOmZvcndhcmRdIGZvcktleTpAIkFYU2VhcmNo
VGV4dERpcmVjdGlvbiJdOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmli
dXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGxpbmtlZEVsZW1lbnRzKTsKKyAgICBlbGVtZW50VmVj
dG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGxpbmtlZEVs
ZW1lbnRzKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
TlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnRO
U0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihsaW5rRWxlbWVu
dHMpOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4obGlua0VsZW1lbnRzKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9
CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1
dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4mIGVsZW1lbnRzKSBjb25zdAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykgY29uc3QKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0
cmlidXRlXV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0p
Ci0gICAgICAgIGVsZW1lbnRzID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKIH0KIApAQCAtMzYzLDcgKzM0NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiA+CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRy
ZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5
VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CisgICAg
ZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
PihjaGlsZHJlbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNzMsNyAr
MzU0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5n
ZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUUKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKCk7CiAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFk
SWZQb3NzaWJsZShbJmVsZW1lbnRWZWN0b3IsIGxvY2F0aW9uLCBsZW5ndGgsIHRoaXNdIHsKICAg
ICAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0
dHJpYnV0ZVZhbHVlczpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2Nh
dGlvbiBtYXhDb3VudDpsZW5ndGhdOwotICAgICAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5T
QXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsK
KyAgICAgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+PihjaGlsZHJlbik7CiAgICAgfSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogfQpAQCAtMzg3LDcgKzM2OCw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93SGVhZGVycygpIGNvbnN0CiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4gZWxlbWVudHM7CiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmli
dXRlXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAg
ICAgICAgZWxlbWVudHMgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pj4odmFsdWUpOworICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgcmV0dXJuIGNvbnZlcnRW
ZWN0b3JUb09iamVjdEFycmF5PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29udGV4
dCwgZWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTQwMSw3ICsz
ODIsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMo
KSBjb25zdAogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGVsZW1l
bnRzOwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1l
bnRzID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4+KHZhbHVlKTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmpl
Y3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbnRleHQsIGVsZW1lbnRz
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CkBAIC02MTAsMTQgKzU5MSwxNCBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mQ2hpbGRyZW4oKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YWxsQXR0cmlidXRlcygpCiB7Ci0gICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVzT2ZFbGVtZW50KG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMg
PSBhdHRyaWJ1dGVzT2ZFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIFthdHRy
aWJ1dGVzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KICAgICAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIE5TU3RyaW5nICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOmF0dHJpYnV0ZV1dLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nICp2YWx1ZSA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNT
dHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dLCBtX2VsZW1lbnQuZ2V0KCkp
OwogICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTcyOSw3ICs3MTAsNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBO
U1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50
KTsKKyAgICBOU1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwg
bV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShAIkFYUm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAg
LTczOSw3ICs3MjAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3Vicm9sZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
TlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxl
bWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJp
YnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUoQCJBWFN1YnJvbGUiLCByb2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAKQEAgLTc0OSw3ICs3MzAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVz
Y3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiByb2xlID0gZGVz
Y3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7
CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNjcmlw
dGlvbiIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTc1OSw3
ICs3NDAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm9sZURlc2NyaXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIE5TU3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEFSSUFS
b2xlIl0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRl
c2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYQVJJQVJvbGUiXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW2NvbXB1dGVkUm9s
ZVN0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIApAQCAtNzY5LDcgKzc1MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0
bGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNv
bmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFRpdGxlIiwgdGl0bGUpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzc5LDcgKzc2MCw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25P
ZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQo
KSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0
aW9uIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzg5
LDcgKzc3MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpkZXNjcmlwdGlvbigpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9u
T2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJu
IGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVzY3JpcHRp
b24pOyAgICAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc5OSw3ICs3ODAsNyBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50
YXRpb24oKSBjb25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxl
bWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1
dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIGlmIChkZXNjcmlwdGlvbikKICAgICAgICAgcmV0
dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFZhbHVlIiwgZGVzY3JpcHRpb24p
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTgxMCw3ICs3OTEsNyBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdl
KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9
IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYTGFuZ3VhZ2UiXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TGFuZ3VhZ2UiXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShAIkFYTGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogCkBAIC04MjAsNyArODAxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5SGVscEF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0
dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWEhlbHAiLCBkZXNjcmlwdGlvbik7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTEyOSw3ICsxMTEwLDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9w
RWZmZWN0cygpIGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4
KGludCBpbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eUxpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJl
ciBudW1iZXJXaXRoSW50OmluZGV4XV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0
ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpAKGluZGV4KV07CiAgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJl
ciAqKXZhbHVlIGludFZhbHVlXTsgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTE0
MCw3ICsxMTIxLDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChp
bnQgaW5kZXgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmFuZ2VGb3JMaW5lKGludCBsaW5lKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJh
bWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZV1dOworICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UmFuZ2VG
b3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6QChsaW5lKV07CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCiAgICAgICAgIHJldHVy
biBbTlNTdHJpbmdGcm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVdKSBjcmVhdGVKU1N0cmluZ1Jl
Zl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTI3Miw3ICsxMjUzLDcgQEAgSlNW
YWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKEpT
Q29udGV4dFJlZiBjb250ZXh0LAogICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSA9IHNlYXJjaFRleHRQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoY29udGV4
dCwgc2VhcmNoU3RyaW5ncywgc3RhcnRGcm9tLCBkaXJlY3Rpb24pOwogICAgIGlkIHJlc3VsdCA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZWFyY2hUZXh0V2l0
aENyaXRlcmlhIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgaWYg
KFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICByZXR1cm4g
Y29udmVydFZlY3RvclRvT2JqZWN0QXJyYXk8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+Pihjb250ZXh0LCBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPj4ocmVzdWx0KSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmVj
dG9yVG9PYmplY3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+KGNv
bnRleHQsIG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pihy
ZXN1bHQpKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTEyODQsNyArMTI2NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3Qg
eWV0IGRlZmluZWQgaW4gQXBwS2l0Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TQXJyYXkqIGNvbHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0
byBjb2x1bW5IZWFkZXJzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVtbkhlYWRlcnNBcnJheSk7CisgICAgYXV0byBjb2x1
bW5IZWFkZXJzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4+KGNvbHVtbkhlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhjb2x1bW5IZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
CkBAIC0xMjk1LDcgKzEyNzYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycygpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93SGVhZGVyc0FycmF5ID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJvd0hlYWRlclVJRWxlbWVudHMiXTsK
LSAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93SGVhZGVyc0FycmF5KTsKKyAgICBhdXRvIHJv
d0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4ocm93SGVhZGVyc0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJv
d0hlYWRlcnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEz
MDYsNyArMTI4Nyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICBOU0FycmF5KiBjb2x1bW5zQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKLSAgICBh
dXRvIGNvbHVtbnNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4oY29sdW1uc0FycmF5KTsKKyAgICBhdXRvIGNvbHVtbnNWZWN0b3Ig
PSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29sdW1uc0FycmF5
KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMTcsNyArMTI5OCw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZS
b3dzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dz
QXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJh
eVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93c0FycmF5KTsKKyAg
ICBhdXRvIHJvd3NWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4ocm93c0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NW
ZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMjgsNyArMTMw
OSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TQXJyYXkqIGNlbGxzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYVmlzaWJsZUNlbGxzIl07Ci0gICAgYXV0byBjZWxsc1ZlY3RvciA9IGNv
bnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjZWxs
c0FycmF5KTsKKyAgICBhdXRvIGNlbGxzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+KGNlbGxzQXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9m
RWxlbWVudHMoY2VsbHNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAK
QEAgLTE0MDksNyArMTM5MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQgY29sLCB1bnNpZ25lZCByb3cpCiB7Ci0gICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
Y29sXSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOworICAgIE5T
QXJyYXkgKmNvbFJvd0FycmF5ID0gQFtAKGNvbCksIEAocm93KV07CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2VsbEZvckNvbHVtbkFu
ZFJvdyIgZm9yUGFyYW1ldGVyOmNvbFJvd0FycmF5XSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUyAgICAKQEAgLTE0OTAsNyArMTQ3MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlCiBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZToo
X19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yQXR0
cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsK
KyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTptYXJrZXJSYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTU0OCw3ICsxNTI5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzeW5jUHJlc3MoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRT
ZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogYXJyYXkgPSBlbGVtZW50
ID8gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCld
IDogW05TQXJyYXkgYXJyYXldOworICAgIE5TQXJyYXkqIGFycmF5ID0gZWxlbWVudCA/IEBbZWxl
bWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV0gOiBAW107CiAgICAgW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5U2V0VmFsdWU6YXJyYXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
Q2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCiB9CkBA
IC0xNTYwLDcgKzE1NDEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVj
dGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghZWxlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENo
aWxkcmVuQXR0cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBOU0FycmF5ICphcnJh
eSA9IEBbZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CiAgICAgaWYgKHNlbGVjdGVkQ2hp
bGRyZW4pCiAgICAgICAgIGFycmF5ID0gW3NlbGVjdGVkQ2hpbGRyZW4gYXJyYXlCeUFkZGluZ09i
amVjdHNGcm9tQXJyYXk6YXJyYXldOwogICAgIFttX2VsZW1lbnQgX2FjY2Vzc2liaWxpdHlTZXRW
YWx1ZTphcnJheSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0
dHJpYnV0ZV07CkBAIC0xNzY5LDggKzE3NTAsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlbW92ZVNlbGVjdGlvbigpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRl
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2Vy
UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3ODEsNyArMTc2Miw3IEBAIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaXNz
cGVsbGluZ1RleHRNYXJrCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNEaWN0
aW9uYXJ5ICpwYXJhbWV0ZXJzID0gbWlzc3BlbGxpbmdTZWFyY2hQYXJhbWV0ZXJpemVkQXR0cmli
dXRlRm9yQ3JpdGVyaWEoc3RhcnQsIGZvcndhcmQpOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNaXNzcGVsbGluZ1Rl
eHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcnNdOwotICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0
TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpj
cmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3OTEsNyArMTc3Miw3IEBAIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFu
Z2VGb3JFCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRN
YXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRmb3JtVUlF
bGVtZW50KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVh
dGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODAw
LDcgKzE3ODEsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRQogaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiByYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJl
ciogbGVuZ3RoVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBOU051bWJlciogbGVuZ3RoVmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3RoRm9y
VGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCldOwogICAgIHJldHVybiBbbGVuZ3RoVmFsdWUgaW50VmFsdWVdOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE4MTAsOCArMTc5MSw4IEBAIGludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSoKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0
TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3Vz
TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZp
b3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNNYXJrZXIpOwor
ICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUocHJldmlvdXNNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MjAsOCArMTgwMSw4IEBA
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNUZXh0TWFya2VyKEFjY2VzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlk
KXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOwor
ICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MzAsNyArMTgxMSw3IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJr
ZXIoQWNjZXNzaWJpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqIG1hcmtlclJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlk
IHRleHRTdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
U3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKW1hcmtl
clJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBpZCB0ZXh0U3RyaW5nID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOm1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKICAgICByZXR1cm4gW3RleHRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE4NDAsOSArMTgyMSw5IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBl
bmRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSog
dGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihfX2JyaWRnZSBpZClzdGFy
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChfX2JyaWRnZSBpZCllbmRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOworICAgIE5TQXJyYXkqIHRleHRNYXJrZXJzID0gQFtz
dGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFy
a2VycyIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJh
bmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTg1Miw3ICsxODMzLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtl
clIKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07Ci0gICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJr
ZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0
ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4NzcsOCArMTg1OCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiBSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBpZCB0ZXh0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xODg3LDggKzE4NjgsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlk
IHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBp
ZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsK
KyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5n
ZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg5OCw3ICsxODc5LDcgQEAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0
TWFya2VyRm9yQm91bmRzKGkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRl
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyNCw3ICsxOTA1LDcgQEAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFy
dFRleHRNYXJrZXJGb3JCb3VuZHMKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5U3RhcnRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01ha2VSZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpXV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTM0LDcgKzE5MTUsNyBA
QCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFs
dWVXaXRoUG9pbnQ6TlNNYWtlUG9pbnQoeCwgeSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5
NDMsNyArMTkyNCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4CiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZv
clBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cisg
ICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKICAgICBpZiAodWlFbGVtZW50KQogICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHVpRWxlbWVudCk7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwpAQCAtMTk3NSw3ICsxOTU2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKICAg
ICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IG5pbDsKIAogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0
ZXI6KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
KyAgICBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
QXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOm1hcmtlclJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAKICAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5n
IGNsYXNzXV0pCkBAIC0xOTkwLDkgKzE5NzEsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQog
CiAgICAgaWQgcGFyYW1ldGVyID0gbmlsOwogICAgIGlmIChpbmNsdWRlU3BlbGxDaGVjaykKLSAg
ICAgICAgcGFyYW1ldGVyID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOltOU051bWJlciBudW1iZXJXaXRoQm9vbDppbmNsdWRlU3BlbGxDaGVja10sIEAiQVhTcGVs
bENoZWNrIiwgKF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZSgpLCBAIkFYVGV4dE1hcmtlclJhbmdlIiwgbmlsXTsKKyAgICAgICAgcGFyYW1ldGVyID0gQHsg
QCJBWFNwZWxsQ2hlY2siOiBpbmNsdWRlU3BlbGxDaGVjayA/IEBZRVMgOiBATk8sIEAiQVhUZXh0
TWFya2VyUmFuZ2UiOiBtYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSB9Owog
ICAgIGVsc2UKLSAgICAgICAgcGFyYW1ldGVyID0gKF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5w
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgICAgICBwYXJhbWV0ZXIgPSBtYXJrZXJSYW5n
ZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKIAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMiIGZvclBh
cmFtZXRlcjpwYXJhbWV0ZXJdOwpAQCAtMjAwNyw3ICsxOTg4LDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmEKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKV07CisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZSgpXTsKICAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5n
IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTIwMjIsNyArMjAwMyw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5kZXhGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1h
cmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICBOU051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSW5kZXhGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6bWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRW
YWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMjAzMiw3ICsyMDEz
LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogdmFsaWROdW1i
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtl
cklzVmFsaWQiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOworICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9yUGFyYW1l
dGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gW3ZhbGlk
TnVtYmVyIGJvb2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAt
MjA0Myw3ICsyMDI0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50IHQKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JJbmRleCIgZm9yUGFyYW1ldGVy
OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjp0ZXh0SW5kZXhdXTsKLSAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJr
ZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJr
ZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTIwNTMsNyArMjAzNCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlciJdOwotICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1h
cmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1h
cmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjA2Myw3ICsyMDQ0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJr
ZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJr
ZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTIwNzIsOCArMjA1Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJS
YW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29y
ZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2Vy
UmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2Up
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIwODIsOCArMjA2Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmlnaHRX
b3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
dGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
UmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRl
eHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFy
a2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTIwOTIsOCArMjA3Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyCiBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgcHJldmlvdXNXb3JkU3RhcnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIg
Zm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdl
IENGVHlwZVJlZilwcmV2aW91c1dvcmRTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNXb3Jk
U3RhcnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
UHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c1dvcmRTdGFydE1hcmtlcik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEwMiw4ICsy
MDgzLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0V29yZEVuZE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0V29yZEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRXb3JkRW5kTWFya2VyKTsKKyAgICBpZCBu
ZXh0V29yZEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhOZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRXb3JkRW5kTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTEyLDggKzIwOTMsOCBA
QCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAg
IGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0
ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTIyLDgg
KzIxMDMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNQYXJh
Z3JhcGhTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhQcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwot
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5
cGVSZWYpcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNQYXJh
Z3JhcGhTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhQcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUocHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtl
cik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjEzMiw4ICsyMTEzLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGUKIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFn
cmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0
ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRQ
YXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0
ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVm
KW5leHRQYXJhZ3JhcGhFbmRNYXJrZXIpOworICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFw
aEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
Y3JlYXRlKG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNDIsOCArMjEyMyw4IEBAIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBh
cmFncmFwaEVuZFRleHRNYXJrCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRN
YXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhT
ZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNTIsOCArMjEzMyw4IEBA
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlv
dXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19i
cmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlv
dXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91
c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTYyLDgg
KzIxNDMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleAogUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50
ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlk
KXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRQYXJhZ3JhcGhF
bmRNYXJrZXIpOworICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dFBhcmFn
cmFwaEVuZE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApp
bmRleCBjYmQxNDY5YjkyODhlYzY0ZWQ2YzZhNTdjMTNmYjY3YmY1ZjcwYjk0Li42MWNkZjBlYzE0
YTdlYzg3NzUzMTEzMjUzZWU1Yjc2OTNhOGUxNzU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCkKICAgICBXS1BhZ2VQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3
KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCi12b2lkIFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnMpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQogewogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMiKSk7CiAgICAgCkBAIC0y
MDA1LDcgKzIwMDUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwog
fQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmlu
ZyYgd2ViVmlld0NhdGVnb3J5KQordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZp
ZXdDYXRlZ29yeShTdHJpbmcmJiB3ZWJWaWV3Q2F0ZWdvcnkpCiB7CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkiKSk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTg0ZjVlYjc0OWEyNDAyYmI5ODVh
MDE2MzY0YzgxYTY2MjlkOWJiNi4uYzdhOTU2NDM0NDYzMjk0YjE1NWM1YzA1MDAyNGRlZjQ3ZmNi
NzFmNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgVGVzdEludm9jYXRpb25faAotI2RlZmluZSBUZXN0SW52b2NhdGlvbl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIK
QEAgLTUzLDE3ICs1MiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElzUGl4ZWxUZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKLSAgICB2b2lkIHNldEN1c3Rv
bVRpbWVvdXQoV1RGOjpTZWNvbmRzIGR1cmF0aW9uKSB7IG1fdGltZW91dCA9IGR1cmF0aW9uOyB9
CisgICAgdm9pZCBzZXRDdXN0b21UaW1lb3V0KFNlY29uZHMgZHVyYXRpb24pIHsgbV90aW1lb3V0
ID0gZHVyYXRpb247IH0KICAgICB2b2lkIHNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihib29s
IHZhbHVlKSB7IG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gdmFsdWU7IH0KIAotICAgIFdU
Rjo6U2Vjb25kcyBzaG9ydFRpbWVvdXQoKSBjb25zdDsKKyAgICBTZWNvbmRzIHNob3J0VGltZW91
dCgpIGNvbnN0OwogCiAgICAgdm9pZCBpbnZva2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHkpOwogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKIAogICAgIHN0YXRpYyB2b2lkIGR1bXBXZWJQcm9jZXNz
VW5yZXNwb25zaXZlbmVzcyhjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgb3V0
cHV0VGV4dChjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZvaWQgb3V0cHV0VGV4dChjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZvaWQgZGlkQmVnaW5Td2lwZSgpOwogICAgIHZvaWQgd2lsbEVuZFN3
aXBlKCk7CkBAIC04Nyw5ICs4Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNldFByZXZhbGVu
dFJlc291cmNlKCk7CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAg
ICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5
KFN0cmluZyYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmJik7
CiAgICAgdm9pZCBkaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCiAgICAgdm9p
ZCBkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKQEAgLTEzOCwxMiArMTM3LDEyIEBA
IHByaXZhdGU6CiAgICAgY29uc3QgVGVzdE9wdGlvbnMgbV9vcHRpb25zOwogICAgIAogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiBtX3VybDsKLSAgICBXVEY6OlN0cmluZyBtX3VybFN0cmluZzsK
KyAgICBTdHJpbmcgbV91cmxTdHJpbmc7CiAgICAgUnVuTG9vcDo6VGltZXI8VGVzdEludm9jYXRp
b24+IG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7CiAKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVj
dGVkUGl4ZWxIYXNoOwogCi0gICAgV1RGOjpTZWNvbmRzIG1fdGltZW91dDsKKyAgICBTZWNvbmRz
IG1fdGltZW91dDsKICAgICBib29sIG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2Ug
fTsKIAogICAgIC8vIEludm9jYXRpb24gc3RhdGUKQEAgLTE3Myw1ICsxNzIsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBUZXN0SW52b2NhdGlvbl9o
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KaW5kZXggNTQ4ZmU3MzEzMDY2NDY4ZjJkYWE3NmMyMTUwMGUwYTJhNDA4NDFiZi4uNmYz
MjllNzViOTcxN2YzMGNjODdhYzljZmMzMWNmYzk2ODNhZjAxNCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTIsNiAr
NTIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiBuYW1lc3BhY2Ug
V1RSIHsKQEAgLTEwMSwxMCArMTAyLDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0
Zm9ybUluaXRpYWxpemUoKQogICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVy
ID0gU3RyaW5nKGR1bXBSZW5kZXJUcmVlVGVtcCkgKyAnLycgKyAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyI7CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3Rv
cnlBdFBhdGg6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiBuaWxdOwogICAgIFN0cmluZyBmdWxs
QnJvd3NpbmdTZXNzaW9uUmVzb3VyY2VMb2cgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVy
ICsgJy8nICsgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCI7Ci0gICAg
TlNEaWN0aW9uYXJ5ICpyZXNvdXJjZUxvZ1BsaXN0ID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdLCBAInZlcnNp
b24iLCBuaWxdOworICAgIE5TRGljdGlvbmFyeSAqcmVzb3VyY2VMb2dQbGlzdCA9IEB7IEAidmVy
c2lvbiI6IEAoMSkgfTsKICAgICBpZiAoIVtyZXNvdXJjZUxvZ1BsaXN0IHdyaXRlVG9GaWxlOmZ1
bGxCcm93c2luZ1Nlc3Npb25SZXNvdXJjZUxvZyBhdG9taWNhbGx5OllFU10pCiAgICAgICAgIFdU
RkNyYXNoKCk7Ci0gICAgW3Jlc291cmNlTG9nUGxpc3QgcmVsZWFzZV07CiB9CiAKIFdLQ29udGV4
dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKQEAgLTMzMiwxMiArMzMyLDgg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAg
IGlmICghcGFyZW50VmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2dsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
Rm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxOU1N0cmluZyAqPiAqbnNEb21haW5zKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFp
bnM7Ci0gICAgICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291
bnQpOwotICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCi0gICAgICAg
ICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZChkb21haW4pOwotICAgICAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoZG9tYWlucyk7Cisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMobWFrZVZl
Y3RvcjxTdHJpbmc+KGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIApAQCAtMzQ3LDEyICszNDMsOCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiAgICAgaWYg
KCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgW2dsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9y
OnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxO
U1N0cmluZyAqPiAqbnNEb21haW5zKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7
Ci0gICAgICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQp
OwotICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCi0gICAgICAgICAg
ICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZChkb21haW4pOwotICAgICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5kaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5z
KSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xv
YWRlZFRoaXJkUGFydHlEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMobWFr
ZVZlY3RvcjxTdHJpbmc+KGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIApAQCAtMzg3LDcgKzM3OSw3
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSgpCiAgICAgICAgICAg
ICBjYXRlZ29yeSA9ICJXZWJCcm93c2VyIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnko
Y2F0ZWdvcnkpOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlV2ViVmll
d0NhdGVnb3J5KFdURk1vdmUoY2F0ZWdvcnkpKTsKICAgICB9XTsKIH0KIApAQCAtNDk0LDEwICs0
ODYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlvbihjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQQogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dlZE1lbnVBY3Rpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhY3Rpb25zKQogewogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byBhY3Rpb25OYW1lcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheTxOU1N0cmluZyAqPiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphY3Rpb25z
LnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgYWN0aW9uIDogYWN0aW9ucykKLSAgICAgICAgW2Fj
dGlvbk5hbWVzIGFkZE9iamVjdDphY3Rpb25dOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9y
bVZpZXcoKSBzZXRBbGxvd2VkTWVudUFjdGlvbnM6YWN0aW9uTmFtZXMuZ2V0KCldOworICAgIFtt
X21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBzZXRBbGxvd2VkTWVudUFjdGlvbnM6Y3JlYXRl
TlNBcnJheShhY3Rpb25zKS5nZXQoKV07CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhY3Rpb25z
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVy
YXRvci5tbQppbmRleCBiYzNiNjM1ZTdhYTBiNjJhMzM4OWY3YzdkMmZkZWEwNGI0YWQ5ODVmLi5l
Mjk4MzhiYTgyOGZiNGJkOTA4NTdhYjZiZWYyZmQ0NjU5ZmI0MjE4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTA0NCw3ICsxMDQ0
LDcgQEAgLSAoTlNBcnJheSAqKWludGVycG9sYXRlZEV2ZW50czooTlNEaWN0aW9uYXJ5ICopaW50
ZXJwb2xhdGlvbnNEaWN0aW9uYXJ5CiAgICAgd2hpbGUgKHRpbWUgPCBlbmRUaW1lKSB7CiAgICAg
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm5ld0V2ZW50ID0gW2VuZEV2ZW50IG11dGFibGVDb3B5
XTsKICAgICAgICAgZG91YmxlIHRpbWVSYXRpbyA9ICh0aW1lIC0gc3RhcnRUaW1lKSAvIChlbmRU
aW1lIC0gc3RhcnRUaW1lKTsKLSAgICAgICAgbmV3RXZlbnRbSElERXZlbnRUaW1lT2Zmc2V0S2V5
XSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOih0aW1lKV07CisgICAgICAgIG5ld0V2ZW50
W0hJREV2ZW50VGltZU9mZnNldEtleV0gPSBAKHRpbWUpOwogICAgICAgICAKICAgICAgICAgTlNF
bnVtZXJhdG9yICpzdGFydEVudW1lcmF0b3IgPSBbc3RhcnRUb3VjaGVzIG9iamVjdEVudW1lcmF0
b3JdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKnN0YXJ0VG91Y2g7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggNWUzM2YxZjU2Mzg4
MzZiZmI2ZjYwNjQ4YjEwNzk4ODVhNDY4NGYyMS4uNjQxNzgyY2E5N2UxZGFmYjkwMDkxOWRiMTli
MzQ3NGE1NTQzODhlNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxh
dGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbQpAQCAtMjIzLDEwICsyMjMsMTAgQEAgdm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OmNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxvYXQgbmV3U2NhbGUpCiAKICAgICAvLyBJ
bnN0ZWFkIG9mIHJlLWNvbnN0cnVjdGluZyB0aGUgY3VycmVudCB3aW5kb3csIGxldCdzIGZha2Ug
cmVzaXplIGl0IHRvIGVuc3VyZSB0aGF0IHRoZSBzY2FsZSBjaGFuZ2UgZ2V0cyBwaWNrZWQgdXAu
CiAgICAgZm9yY2VXaW5kb3dGcmFtZXNDaGFuZ2VkKCk7CisKICAgICAvLyBDaGFuZ2luZyB0aGUg
c2NhbGluZyBmYWN0b3Igb24gdGhlIHdpbmRvdyBkb2VzIG5vdCB0cmlnZ2VyIE5TV2luZG93RGlk
Q2hhbmdlQmFja2luZ1Byb3BlcnRpZXNOb3RpZmljYXRpb24uIFdlIG5lZWQgdG8gc2VuZCB0aGUg
bm90aWZpY2F0aW9uIG1hbnVhbGx5LgotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBub3RpZmljYXRpb25Vc2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OjFdKTsKLSAgICBbbm90aWZpY2F0aW9uVXNlckluZm8gc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmN1cnJlbnRTY2FsZV0gZm9yS2V5Ok5T
QmFja2luZ1Byb3BlcnR5T2xkU2NhbGVGYWN0b3JLZXldOwotICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6TlNXaW5kb3dEaWRDaGFu
Z2VCYWNraW5nUHJvcGVydGllc05vdGlmaWNhdGlvbiBvYmplY3Q6bV93aW5kb3cgdXNlckluZm86
bm90aWZpY2F0aW9uVXNlckluZm8uZ2V0KCldOworICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8g
PSBAeyBOU0JhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5OiBAKGN1cnJlbnRTY2FsZSkg
fTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmlj
YXRpb25OYW1lOk5TV2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXNOb3RpZmljYXRpb24g
b2JqZWN0Om1fd2luZG93IHVzZXJJbmZvOnVzZXJJbmZvXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdl
YlZpZXc6OmZvcmNlV2luZG93RnJhbWVzQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDhjNTk1NTUxNjE3ZmUwMzk1YWFl
NDc3OTc2Yjk3ZjQ4ZmZlNjlmYjYuLjQ5OGUzNzJmMjA0MzQzMGVjYjllN2UyODkzZTA0MzZkZTZl
YTU2MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVy
TWFjLm1tCkBAIC00NCw3ICs0NCw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgotI2ltcG9ydCA8d3RmL09i
akNSdW50aW1lRXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgTlNTb3VuZCAoKQogKyAodm9pZClfc2V0
QWxlcnRUeXBlOihOU1VJbnRlZ2VyKWFsZXJ0VHlwZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBhNDRjZmQwYzE4ZDU4
NGJkNDk1MjJhMWY0OGJkZGM1NDNjYTk2OGM4Li5lOTU2ZWVkOTJhMGE1ODc4MzY2ZWM1MzAwOTcy
MjQxNjk4ODU2NzljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlT
Y3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmFjdGl2YXRlQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBj
YWxsYmFjaykKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dChKU1N0cmluZ1Jl
ZiB0ZXh0KQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IE5TUGFzdGVib2FyZC5n
ZW5lcmFsUGFzdGVib2FyZDsKLSAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0Ok5TUGFzdGVib2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CisgICAg
W3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbTlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gb3duZXI6
bmlsXTsKICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGV4dC0+c3RyaW5nKCkgZm9yVHlwZTpO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQppbmRleCAxYjYyODZj
ZjkzMTIzZWJmOTAxM2M2MTI2MmExNjYyYjZkOTkwZWMxLi4wZDMwNGZjMjg0YTI4ODNjZmQwZjcy
ZTJmOTY2MDUwY2YyNWVkYjBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQpAQCAtODIsNyArODIsNyBAQCAr
ICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiAvLyBvZiB0aGUgdXN1YWwgV2ViU2NyaXB0
T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3VuZAogLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlOihO
U1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiB7Ci0gICAgcmV0dXJuIFtzZWxmIGRl
Y2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3duZXI6bmV3T3duZXJd
OworICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6QFt0eXBlXSBvd25lcjpuZXdPd25lcl07
CiB9CiAKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395857</attachid>
            <date>2020-04-08 13:01:27 -0700</date>
            <delta_ts>2020-04-08 13:51:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210138-20200408130126.patch</filename>
            <type>text/plain</type>
            <size>478632</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NGY1YzkxOGQxYWQ0NjkzYmQ2MzhkMmI5NzQ4YjBlMzViNmNiMGUxLi5hMzFmNjFkNGFiZDkxMTRj
MDczYmI3NzdkMzI1ZjNkOWRjMTgyMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0V2l0aG91dENvcHkpOiBVc2UgQCgpLgorICAgICAgICAodmFsdWVUb051bWJlcik6IERp
dHRvLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAoLVtUZXN0T2Jq
ZWN0IGNhbGxiYWNrOl0pOiBVc2UgQFtdLCBAKCksIGFuZCBAe30uCisgICAgICAgICgtW1RleHRY
WVogY2xpY2tdKTogRGl0dG8uCisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOiBEaXR0
by4KKwogMjAyMC0wNC0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogU3RvcmFnZTogY2Fubm90IGNsZWFyIG91dCBtdWx0aXBsZSBv
ciBhbGwgbG9jYWwgc3RvcmFnZSBlbnRyaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmM2E5YThhZjVjNDQyYzY0YjI2YzYw
NmQzOWRhN2FkN2YwYjk3MjcuLjQyZjA1MDNkNGNmZTM5ZGU2ZjgwOWJiODA4MzFlNzlhY2FkNmE1
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9u
YXJ5LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGRlZCBWZWN0b3JDb2NvYS5oLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybU1h
Yy5jbWFrZTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2EubW06
IERpdHRvLgorCisgICAgICAgICogd3RmL2NvY29hL1ZlY3RvckNvY29hLmg6IEFkZGVkLiBDb250
YWlucyBjcmVhdGVOU0FycmF5IGFuZCBtYWtlVmVjdG9yCisgICAgICAgIGZ1bmN0aW9uIHRlbXBs
YXRlcyBmb3IgY29udmVydGluZyBOU0FycmF5IHRvIGFuZCBmcm9tIFZlY3Rvci4KKworICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBBZGRlZCBtYWtlTlNBcnJheUVsZW1lbnQgYW5kIG1h
a2VWZWN0b3JFbGVtZW50CisgICAgICAgIGZ1bmN0aW9ucywgbWFraW5nIGNyZWF0ZU5TQXJyYXkg
YW5kIG1ha2VWZWN0b3IgY29tcGF0aWJsZSB3aXRoIFN0cmluZy4KKyAgICAgICAgKiB3dGYvdGV4
dC9jb2NvYS9TdHJpbmdDb2NvYS5tbToKKyAgICAgICAgKFdURjo6bWFrZU5TQXJyYXlFbGVtZW50
KTogQWRkZWQuCisgICAgICAgIChXVEY6Om1ha2VWZWN0b3JFbGVtZW50KTogQWRkZWQuCisKIDIw
MjAtMDQtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVhcnJhbmdlIGFuZCBzaW1wbGlmeSBzb21lIEpTQyBmZWF0dXJlIGZsYWdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMjNkNjZjMGZlOWQyODcxNTI4ODMzYTYxZmQzZTRlNGUyNWE2YWE4OC4uMGNiNzIwMzEx
NmZkZmRjMDY1MzMwNDJiOTE3NDU3NzM0MDE0ZTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
OCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBp
ZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gQWRkZWQgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZlY3Rvci4KKyAg
ICAgICAgLSBVc2UgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZlY3RvcjxTdHJpbmc+IGluIG1hbnkg
cGxhY2VzIHdoZXJlIHdlIGNvbnZlcnQKKyAgICAgICAgICBiZXR3ZWVuIE5TQXJyYXkgYW5kIFZl
Y3RvciwgcmVwbGFjaW5nIG11bHRpcGxlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0IHdlcmUKKyAg
ICAgICAgICBkb2luZyB0aGUgc2FtZSBqb2IgYmVmb3JlOyBsYXRlciBjYW4gdXNlIHRoZW0gZXZl
biBtb3JlLgorICAgICAgICAtIFVzZSBAW10gbWFueSBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIGFu
IGF1dG9yZWxlYXNlZCBOU0FycmF5LgorICAgICAgICAtIFVzZSBAe30gbWFueSBwbGFjZXMgd2hl
cmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU0RpY3Rpb25hcnkuCisgICAgICAgIC0gVXNl
IEAoKSBtYW55IHBsYWNlcyB3aGVyZSB3ZSBjcmVhdGUgYW4gYXV0b3JlbGVhc2VkIE5TTnVtYmVy
LgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IE1vdmVkIEZsb2F0L0ludFJlY3RNYWMu
bW0gdG8gRmxvYXQvSW50UmVjdENvY29hLm1tLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0
dG8uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxl
dmVsKTogVXNlIEAoKS4KKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVs
KTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4
dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6dG9FbmRNYXJrZXI6
YXR0cmlidXRlZDpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgZWxlbWVudHNGb3JSYW5nZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlcnNGb3JSYW5nZTpdKTogVXNlIEBbXS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KTogVXNlIEAoKS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
IGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246dXNlckluZm86XSk6CisgICAgICAgIFVz
ZSBAe30uCisgICAgICAgIChtYWtlVmVjdG9yRWxlbWVudCk6IEFkZWQgb3ZlcmxvYWQgZm9yIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKToKKyAgICAgICAgVXNl
IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4uCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAg
KGFjY2Vzc2liaWxpdHlUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogVXNl
IG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4K
KyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOiBVc2UgQCgpLgorICAgICAgICAo
QVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwpOiBVc2UgQCgpLgorICAgICAgICAo
QVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwpOiBVc2UgQCgpLgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdKTog
VXNlIEBbXS4KKyAgICAgICAgKGNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOl0pOgorICAgICAgICBVc2UgQCgpLCBAW10sIGFuZCBjcmVhdGVOU0FycmF5Lgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorICAgICAgICBEaXR0by4KKworICAgICAgICAq
IGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2Jq
ZWN0IF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTpvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6
XSk6CisgICAgICAgIFVzZSBAKCkuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIFVzZSBtYWtl
VmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW06CisgICAgICAgIChkZWZhdWx0UGFyYWdyYXBoU3R5bGUpOiBVc2UgQFtdLgorICAgICAgICAo
SFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCk6IFVzZSBAKCkuCisg
ICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc01ldGFFbGVtZW50V2l0aE5hbWUpOiBVc2Ug
QCgpLgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZFRhYmxlRm9yRWxlbWVudCk6IFVzZSBA
KCkuCisKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCBjb25zdCk6IFVzZSBAW10uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUp
OiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRSZWN0Lmg6IEFkZGVkIG1ha2VOU0FycmF5RWxlbWVudCBvdmVybG9hZCBzbyB3ZSBjYW4K
KyAgICAgICAgY29udmVydCBWZWN0b3I8RmxvYXRSZWN0PiBpbnRvIE5TQXJyYXk8TlNWYWx1ZT4u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oOiBTaW1pbGFybHkgZm9yIElu
dFJlY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRGVzY3JpcHRp
b25Gb3JLaW5kKTogVXNlIEBbXS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOiBVc2UgQCgpLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQ
bGF5ZXJJdGVtKTogVXNlIEAoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNoZWNrUGxheWFiaWxpdHkpOiBVc2UgQFtdLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9P
dXRwdXQpOiBVc2UgQHt9IGFuZCBAKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnZhbHVlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5RnJvbVZhbHVlRnJvbSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VG9WYWx1
ZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRW
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5
VmFsdWVzRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OnNldEtleVRpbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2Nv
YTo6Y29weUtleVRpbWVzRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2E6OnNldFRpbWluZ0Z1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKToKKyAgICAgICAgVXNl
IEAoKSwgQFtdLCBtb2Rlcm4gZm9yIGxvb3BzLCBhdXRvLCBhbmQgYWxsb2NhdGUgd2l0aCBjYXBh
Y2l0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FG
aWx0ZXJzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBRmlsdGVyczo6Zmls
dGVyVmFsdWVGb3JPcGVyYXRpb24pOiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW06IE1vdmVkIGZyb20gbWFjL0Zsb2F0UmVjdE1h
Yy5tbS4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VOU0FycmF5RWxlbWVudCk6IEFkZGVkIHNvIHdl
IGNhbiBjb252ZXJ0IFZlY3RvcjxGbG9hdFJlY3Q+CisgICAgICAgIGludG8gTlNBcnJheTxOU1Zh
bHVlPi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW06
IE1vdmVkIGZyb20gbWFjL0ludFJlY3RNYWMubW0uCisgICAgICAgIChXZWJDb3JlOjptYWtlTlNB
cnJheUVsZW1lbnQpOiBTaW1pbGFybHkgZm9yIEludFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpl
bmNsb3NpbmdJbnRSZWN0KTogVXNlIGNsYW1wVG8gdG8gYmUgY29uc2lzdGVudCB3aXRoIHdoYXQK
KyAgICAgICAgZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QpIGRvZXMgKHdoaWxlIGZpeGluZyBj
aGVjay13ZWJraXQtc3R5bGUgY29tcGxhaW50KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIubW06CisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxheV0p
OiBBZGQgV2ViQ29yZSBuYW1lc3BhY2UgcHJlZml4OyBuZWVkZWQgZGVwZW5kaW5nIG9uCisgICAg
ICAgIGhvdyBzb3VyY2VzIGdldCB1bmlmaWVkIChhbmQgd2FzIGFmZmVjdGluZyBteSBsb2NhbCBi
dWlsZCB3aGVuIGl0IHRlbXBvcmFyaWx5CisgICAgICAgIGhhZCBhbiBhZGRpdGlvbmFsIHNvdXJj
ZSBmaWxlKS4KKyAgICAgICAgKC1bV2ViR0xMYXllciBhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdT
dG9yZVdpdGhTaXplOnVzaW5nQWxwaGE6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJHTExheWVy
IGJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2VdKTogRGl0dG8uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c3lzdGVtRm9udE1vZGlmaWNhdGlvbkF0dHJpYnV0ZXMpOiBVc2UgQCgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJp
bmc+LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlz
dCk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOiBVc2UgY3JlYXRlTlNBcnJheS4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgor
ICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSk6
IFVzZSBAW10uCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tOgorICAgICAg
ICAoLVtXQUtWaWV3IHN1YnZpZXdzXSk6IERpdHR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmdldFR5cGVzKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZSBjb25zdCk6IFVz
ZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmFkZFR5cGVzKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+Lgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oOiBSZW1vdmVkCisgICAg
ICAgIHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheSwgcmVwbGFjZWQgYnkgbWFr
ZVZlY3RvcjxTdHJpbmc+CisgICAgICAgICogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJh
eSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFz
Lm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dCk6
IFVzZSBAKCkuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNl
dHVwQ2FwdHVyZVNlc3Npb24pOiBVc2UgQCgpLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6Om9wZXJhdG9y
IE5TSFRUUENvb2tpZSAqIF9OdWxsYWJsZSAgY29uc3QpOiBVc2UgQCgpLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00g
Y29uc3QpOiBVc2UgQHt9LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOiBVc2UgQFlFUy9ATk8uCisKIDIwMjAtMDQtMDggIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFN0b3JhZ2U6IGNhbm5vdCBjbGVhciBvdXQgbXVsdGlwbGUgb3IgYWxsIGxvY2FsIHN0b3JhZ2Ug
ZW50cmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBjN2RjYjE2NWZjMDg0ZmI3MmJlNTM2OWJmMDNjZDI1Y2U5NjU0
MzdlLi44NTUyOGFmNzNiNzM0NWQxODFkOWY4MzIyYzg0OWUwYTY1ZDk0MWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2MCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFu
ZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbTogUmVtb3ZlIHVuZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBQbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOiBEaXR0by4KKworICAgICAgICAqIFBsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnJlcGxhY2Vk
TlNDb25jcmV0ZVRhc2tfbGF1bmNoKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAg
KFdlYktpdDo6cmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlv
bnNfY29uZmlndXJhdGlvbl9lcnJvcik6CisgICAgICAgIERpdHRvLgorCisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OnRvU3VwcG9ydGVkTmV0d29ya3MpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVz
dCk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkVycm9y
c0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVOU0Vycm9yKTogVXNlIEB7fS4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcpOiBVc2UgQFtdLgorICAgICAgICAoV2ViS2l0
OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclVSTCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYXN0
ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJv
YXJkVHlwZXM6OmZvckltYWdlc1dpdGhBcmNoaXZlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlBhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW06CisgICAgICAgICgtW1dL
Q29udGVudFJ1bGVMaXN0U3RvcmUgZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmll
cnM6XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZ2V0QWN0aXZlUGFn
ZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0
dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbToKKyAg
ICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1h
aW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2VyQ29udGVudFdv
cmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlv
blRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFz
c29jaWF0ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0
IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hp
dGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDpjb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNl
clNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5Omxl
Z2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDpjb250ZW50V29ybGQ6
XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2Np
YXRlZFVSTDpjb250ZW50V29ybGQ6ZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246XSk6Cisg
ICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFBhZ2VDb25m
aWd1cmF0aW9uOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfY29yc0Rpc2FibGluZ1BhdHRlcm5zXSk6IFVzZSBjcmVhdGVOU0Fy
cmF5LgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRDT1JTRGlzYWJsaW5n
UGF0dGVybnM6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Nv
bnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTpdKTogVXNlIEAoKS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbToKKyAgICAgICAgKC1bX1dL
Q29udGVudFJ1bGVMaXN0QWN0aW9uIG5vdGlmaWNhdGlvbnNdKTogVXNlIGNyZWF0ZU5TQXJyYXku
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW06
CisgICAgICAgICgtW19XS0N1c3RvbUhlYWRlckZpZWxkcyB0aGlyZFBhcnR5RG9tYWluc10pOiBV
c2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1bX1dLQ3VzdG9tSGVhZGVyRmllbGRzIHNldFRo
aXJkUGFydHlEb21haW5zOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgorICAgICAg
ICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVt
ZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczpdKTogVXNlIG1ha2VWZWN0b3I8
U3RyaW5nPi4KKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsd2F5c1Jl
dmFsaWRhdGVkVVJMU2NoZW1lc10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1bX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczpd
KTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmg6CisgICAgICAgIChBUEk6OnRvU3RyaW5n
VmVjdG9yKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
clN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291
cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2Vy
Q29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNv
dXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFz
ZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKTogVXNlIEBb
XS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKTog
VXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5h
bWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOiBVc2UgQFtdLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29sbGVjdEtleWJvYXJkTGF5b3V0Q29tbWFuZHNGb3JF
dmVudCk6IFVzZSBAW10uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2lu
UHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OmxhdW5jaFByb2Nlc3MpOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKFdlYktpdDo6aXNK
YXZhVXBkYXRlclVSTCk6IFVzZSBAW10uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6bGF1bmNoQXBwbGljYXRpb25BdFVSTCk6IFVzZSBAe30gYW5kIGNyZWF0ZU5TQXJyYXku
CisgICAgICAgIChXZWJLaXQ6OmlzU2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTCk6IFVzZSBAW10u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vydmlj
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6SGlkU2VydmljZSk6IFVzZSBAKCkg
YW5kIGZpeGVkIGFuIG92ZXItcmVsZWFzZSBtaXN0YWtlLgorICAgICAgICBUaGlzIGNvZGUgd2Fz
IGRvaW5nIGFkb3B0TlMgb24gdGhlIHJlc3VsdCBvZiArW05TTnVtYmVyV2l0aEludDpdLCB3aGlj
aCBpcyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxD
b25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbiBjb25zdCk6IFVzZSBAW10uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyB0ZXh0U3R5bGluZ0F0UG9zaXRpb246aW5EaXJlY3Rpb246XSk6IFVzZSBAKCku
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlv
bkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1RvU2Vzc2lv
bldpdGhSZWdpc3RyYXRpb25MaXN0czpzdGFnZWREcmFnU291cmNlOl0pOgorICAgICAgICBGaXhl
ZCBhIHdhc3RlZnVsIGNhbGwgdG8gYXV0b3JlbGVhc2Ugd2hlcmUgd2UgYXJlIGFkZGluZyBhbiBp
dGVtIHRvIGEgZGljdGlvbmFyeS4gQ2FsbGluZyBnZXQKKyAgICAgICAgaXMgbW9yZSBlZmZpY2ll
bnQgYW5kIHN0aWxsIGNvcnJlY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAoLVtXS0ZpbGVVcGxvYWRQYW5lbCBpbWFnZVBp
Y2tlckNvbnRyb2xsZXI6ZGlkRmluaXNoUGlja2luZ01lZGlhV2l0aEluZm86XSk6IFVzZSBAW10u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yUGlja2VyLm1tOgor
ICAgICAgICAoLVtXS0NvbG9yTWF0cml4VmlldyBpbml0V2l0aEZyYW1lOmNvbG9yTWF0cml4Ol0p
OiBSZW1vdmVkIHVuZWVkZWQgUmV0YWluUHRyCisgICAgICAgIGxvY2FsIHZhcmlhYmxlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChXZWJL
aXQ6OkNvcnJlY3Rpb25QYW5lbDo6c2hvdyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4
dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyk6IFVzZSBjcmVhdGVO
U0FycmF5LgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQp
OiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1By
aW50aW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2FkanVzdFByaW50aW5n
TWFyZ2luc0ZvckhlYWRlckFuZEZvb3Rlcl0pOiBVc2UgQCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAgIChhcnJheUZyb21SZWN0cyk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRGaW5kU3RyaW5nTWF0
Y2hlc1dpdGhSZWN0czpkaWRXcmFwQXJvdW5kOl0pOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIG5vdGlmeUFjY2Vz
c2liaWxpdHlDbGllbnRzOl0pOiBVc2UgQHt9CisgICAgICAgIGFuZCBmaXggYSBidWcgd2hlcmUg
dGhpcyB3YXMgY3JlYXRpbmcgYSBiYWNrd2FyZHMgZGljdGlvbmFyeS4gU28gdGhpcyBuZXZlcgor
ICAgICAgICBjb3VsZCBoYXZlIGJlZW4gd29ya2luZyBiZWZvcmUsIG1ha2luZyBtZSB3b25kZXIg
aG93IHdlIHRlc3QgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWFyY2hUaGVXZWIpOiBVc2Ug
QFtdLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
SW50ZXJuYWxzLmg6IFJlbW92ZWQgdG9OU0FycmF5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbToKKyAgICAgICAgKFdlYktpdDo6
dG9OU0FycmF5KTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTU5vZGUubW06CisgICAgICAgICgtW1dLRE9NTm9kZSB0ZXh0UmVjdHNd
KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgdGV4dFJlY3Rz
XSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5q
ZWN0ZWRCdW5kbGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRC
dW5kbGVQYXJhbWV0ZXIpOiBVc2UgQHt9LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6bWFrZVJl
bmRlckxheWVyKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bh
c3RlYm9hcmQpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50
aW5nKTogVXNlIEB7fS4KKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnJlc3VtZVBhaW50aW5nKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW06CisgICAgICAg
IFJlbW92ZWQgYW4gdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW06IERpdHRvLgorICAgICAg
ICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlBY3Rpb25OYW1l
c10pOiBVc2UgQFtdLgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFj
Y2Vzc2liaWxpdHlDaGlsZHJlbl0pOiBVc2UgQFtdLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Omdl
dEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+Lgor
CiAyMDIwLTA0LTA4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgog
CiAgICAgICAgIFJlbW92ZSB1bnVzZWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nl
c1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5IGFuZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvT25l
UHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDgzYTBkOTVjNDgyMDY3MWY3
M2I2MWJhN2I2NjA1NjBiZDRiMWE2ZGYuLmY2NjdkOTljY2E2ZTUwYzViNDc3ZTNmYzA0OWE5NmUx
NmYyZjk0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMg
dGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwpOiBVc2UgY3JlYXRlTlNBcnJheS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAg
ICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIGVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFz
ZUFsdGVybmF0aXZlczpdKToKKyAgICAgICAgVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oOgorICAgICAgICBB
ZGRlZCAjaWYgc28gdGhhdCB0aGlzIGNvcnJlY3RseSBkb2Vzbid0IGNvbXBpbGUgYW55dGhpbmcg
b24gTWFjLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHN1cHBvcnRlZE1JTUVUeXBlc10pOiBVc2UgQFtdLgorCiAyMDIwLTA0LTA0
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxp
dmUgcmFuZ2VzIGluIERvY3VtZW50TWFya2VyQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDU4MmMwNGU0NDQ3MTZhYWMzNGQzN2FlNmEzMTNjOGJjNTY0NjQ2MzguLjg1
NjkzZWE5YjcxMDIwODQwYWUyNDBlNGVhNjM4ZTIzODJkZDk1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTcgQEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNE
aWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET00ubW06Cisg
ICAgICAgIChraXQpOiBEZWxldGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgVmVjdG9yPEludFJlY3Q+
LgorICAgICAgICAoLVtET01Ob2RlIHRleHRSZWN0c10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAg
ICAgICAgKC1bRE9NUmFuZ2UgdGV4dFJlY3RzXSk6IERpdHRvLgorCisgICAgICAgICogRE9NL0V4
Y2VwdGlvbkhhbmRsZXJzLm1tOgorICAgICAgICAocmFpc2VET01FcnJvckV4Y2VwdGlvbik6IFVz
ZSBAKCkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAg
ICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl0pOiBVc2Ug
QHt9LgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoK1tXZWJI
aXN0b3J5UHJpdmF0ZSBpbml0aWFsaXplXSk6IFVzZSBAe30uCisgICAgICAgICgtW1dlYkhpc3Rv
cnkgX3NlbmROb3RpZmljYXRpb246ZW50cmllczpdKTogVXNlIEB7fS4KKworICAgICAgICAqIEhp
c3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRG
cm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+Lgor
ICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6IFVz
ZSBjcmVhdGVOU0FycmF5IGFuZCBAKCkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYlVSTHNXaXRo
VGl0bGVzLm06CisgICAgICAgICgrW1dlYlVSTHNXaXRoVGl0bGVzIGFycmF5V2l0aElGVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlXSk6IFVzZSBAW10uCisgICAgICAgICgrW1dlYlVSTHNXaXRoVGl0
bGVzIHdyaXRlVVJMczphbmRUaXRsZXM6dG9QYXN0ZWJvYXJkOl0pOiBVc2UgQFtdLgorCisgICAg
ICAgICogTWlzYy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgc3RhdGlzdGljc10p
OiBVc2UgQFtdLCBAe30sIGFuZCBAKCkuCisgICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGlj
cy5tbToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgbWVtb3J5U3RhdGlzdGljc10pOiBE
aXR0by4KKworICAgICAgICAqIE1pc2MvV2ViS2l0RXJyb3JzLm06CisgICAgICAgICgtW05TRXJy
b3IgX3dlYmtpdF9pbml0V2l0aERvbWFpbjpjb2RlOlVSTDpdKTogVXNlIEB7fS4KKyAgICAgICAg
KCtbTlNFcnJvciBfcmVnaXN0ZXJXZWJLaXRFcnJvcnNdKTogVXNlIEAoKS4KKyAgICAgICAgKC1b
TlNFcnJvciBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6Y29udGVudFVSTDpwbHVnaW5QYWdlVVJM
OnBsdWdpbk5hbWU6TUlNRVR5cGU6XSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBNaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50
OmZvbnQ6dGV4dENvbG9yOl0pOiBVc2UgQHt9LgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX3dp
ZHRoV2l0aEZvbnQ6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFn
ZXJFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIE1pc2Mv
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoK1tOU1Bhc3RlYm9hcmQgX3dlYl9k
cmFnVHlwZXNGb3JVUkxdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93ZWJf
d3JpdGVVUkw6YW5kVGl0bGU6dHlwZXM6XSk6IFVzZSBAW10uCisgICAgICAgICgrW05TUGFzdGVi
b2FyZCBfd2ViX3NldEZpbmRQYXN0ZWJvYXJkU3RyaW5nOndpdGhPd25lcjpdKTogVXNlIEBbXS4K
KworICAgICAgICAqIE1pc2MvV2ViTlNVUkxFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5j
bHVkZS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXIubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OnNwYXdu
UGx1Z2luSG9zdCk6IFVzZSBAe30uCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAgKFdLUENJZGVudGlmaWVySW5mbyk6IFVzZSBA
KCkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRk
VmFsdWVUb0FycmF5KTogVXNlIEAoKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAg
ICAgICAqIFBsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW06IERpdHRvLgorCisgICAgICAg
ICogUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbToKKyAgICAgICAgKC1bV2ViUGx1
Z2luQ29udGFpbmVyQ2hlY2sgX2FjdGlvbkluZm9ybWF0aW9uV2l0aFVSTDpdKTogVXNlIEB7fS4K
KworICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06CisgICAgICAgICgrW1dl
YlBsdWdpbkRhdGFiYXNlIF9kZWZhdWx0UGx1Z0luUGF0aHNdKTogVXNlIEBbXS4KKworICAgICAg
ICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJEYXRhYmFz
ZU1hbmFnZXIgZGF0YWJhc2VzV2l0aE9yaWdpbjpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChDb3Jy
ZWN0aW9uUGFuZWw6OnNob3cpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
YWRkTWVzc2FnZVRvQ29uc29sZSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0
cmluZ0NvbnZlcnNpb24pOiBVc2UgQCgpLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRH
dWVzc2VzRm9yV29yZCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5IGNvbnN0KTogVXNlIEAoKS4KKyAgICAgICAgKGtp
dCk6IERlbGV0ZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAg
KHBsdWdpblZpZXcpOiBVc2UgQHt9LgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbik6IFVzZSBjcmVhdGVOU0FycmF5LCBAe30sIGFuZCBAKCkuCisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6IFVzZSBjcmVhdGVO
U0FycmF5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIubW06CisgICAgICAgICgtW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGNob29zZUZp
bGVuYW1lczpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKC1bV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWU6ZGlzcGxheVN0cmluZzppY29uSW1hZ2U6
XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGNob29z
ZUZpbGVuYW1lczpkaXNwbGF5U3RyaW5nOmljb25JbWFnZTpdKTogVXNlIG1ha2VWZWN0b3I8U3Ry
aW5nPi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyLm1tOgorICAgICAgICAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmhhbmRs
ZVNlbGVjdGlvblNlcnZpY2VDbGljayk6CisgICAgICAgIENvbW1lbnQgb3V0IGFuIHVudXNlZCBh
cmd1bWVudC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dl
YkZyYW1lIF9yZWN0c0ZvclJhbmdlOl0pOiBVc2UgY3JlYXRlTlNBcnJyYXkuCisgICAgICAgICgt
W1dlYkZyYW1lIF9jb21wdXRlUGFnZVJlY3RzV2l0aFByaW50U2NhbGVGYWN0b3I6cGFnZVNpemU6
XSk6IFVzZSBjcmVhdGVOU0FycmF5IGFuZCBAW10uCisgICAgICAgICgtW1dlYkZyYW1lIGNoaWxk
RnJhbWVzXSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoK1tXZWJIVE1MVmlldyBfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzXSk6IFVzZSBA
W10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb246XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGtub3dzUGFn
ZVJhbmdlOl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcHlG
b250Ol0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW50ZXJwcmV0S2V5RXZl
bnQ6c2F2aW5nQ29tbWFuZHM6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNl
bGVjdGlvblRleHRSZWN0c10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgcmVjdHNGb3JUZXh0TWF0Y2hlc10pOiBVc2UgY3JlYXRlTlNBcnJheSBhbmQgQFtdLgor
CisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbTogUmVtb3ZlZCB1bm5l
ZWRlZCBpbmNsdWRlLgorICAgICAgICAoK1tXZWJQREZSZXByZXNlbnRhdGlvbiBwb3N0U2NyaXB0
TUlNRVR5cGVzXSk6IFVzZSBAW10uCisgICAgICAgICgrW1dlYlBERlJlcHJlc2VudGF0aW9uIHN1
cHBvcnRlZE1JTUVUeXBlc10pOiBVc2UgQFtdLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IGVsZW1lbnRBdFBvaW50Ol0pOiBVc2UgQHt9
IGFuZCBAKCkuCisgICAgICAgICgtW1dlYlBERlZpZXcgdmlld1N0YXRlXSk6IFVzZSBAKCkuCisg
ICAgICAgICgtW1dlYlBERlZpZXcgc2VsZWN0aW9uVGV4dFJlY3RzXSk6IFVzZSBAW10uCisgICAg
ICAgICgtW1dlYlBERlZpZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10u
CisgICAgICAgICgtW1dlYlBERlZpZXcgX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDpdKTog
VXNlIEAoKS4KKyAgICAgICAgKC1bV2ViUERGVmlldyBfb3BlbldpdGhGaW5kZXI6XSk6IFVzZSBA
e30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAg
ICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogVXNlIEAoKS4KKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgX3NldFVuc2lnbmVkSW50VmFsdWU6Zm9yS2V5Ol0pOiBVc2UgQCgpLgor
ICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc2V0SW5pdGlhbERlZmF1bHRUZXh0RW5jb2RpbmdU
b1N5c3RlbUVuY29kaW5nXSk6IFVzZSBAKCkuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeTpdKTogVXNlIEB7fSBhbmQgQCgpLgorCisgICAgICAgICog
V2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2Vy
Ojpzb3VyY2VQYXJzZWQpOiBVc2UgQCgpLgorCisgICAgICAgICogV2ViVmlldy9XZWJUZXh0Q29t
cGxldGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJv
bGxlciBfcGxhY2VQb3B1cFdpbmRvdzpdKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBV
c2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoLVtXZWJWaWV3IF9jb250ZW50c09mVXNl
ckludGVyZmFjZUl0ZW06XSk6IFVzZSBAKCkuCisgICAgICAgICh0b1N0cmluZ1ZlY3Rvcik6IERl
bGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNv
dXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVz
Ol0pOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoK1tXZWJWaWV3
IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6Ymxh
Y2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+
LgorICAgICAgICAoLVtXZWJWaWV3IF9lbGVtZW50QXRXaW5kb3dQb2ludDpdKTogVXNlIEB7fS4K
KyAgICAgICAgKC1bV2ViVmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25dKTogVXNlIEBb
XS4KKyAgICAgICAgKC1bV2ViVmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JFbGVtZW50Ol0pOiBVc2Ug
QFtdLgorICAgICAgICAoLVtXZWJWaWV3IHJlY3RzRm9yVGV4dE1hdGNoZXNdKTogVXNlIEBbXS4K
KyAgICAgICAgKC1bV2ViVmlldyBfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51Ol0pOiBVc2UgQFtd
LgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRGb250V2hpdGVsaXN0Ol0pOiBVc2UgbWFrZVZlY3Rv
cjxTdHJpbmc+LgorCiAyMDIwLTA0LTA4ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTk3MDguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggZjYwZDFmYjMzZTQ2YzUzNzMzYzA5MDMxMjM5ZDhm
NjliNGFiMTNkOC4uYzkxZTZlYTI3OGFiMTk2YTYxZWJmZmFjNGM4YzA4MDRkZjczMTE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNDYsNyArNDYsNiBAQAogI2ltcG9y
dCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYv
TG9jay5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTc0Miw3ICs3NDEsNyBAQCBzdGF0aWMgSlNDb250YWluZXJD
b252ZXJ0b3I6OlRhc2sgdmFsdWVUb09iamVjdFdpdGhvdXRDb3B5KEpTR2xvYmFsQ29udGV4dFJl
ZiBjbwogICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBudW1iZXIsIHNvIGl0IHdpbGwgdW5p
cXVlIGNvcnJlY3RseSBpbiB0aGUgaGFzaCBtYXAgLQogICAgICAgICAgICAgLy8gaXQncyBuaWNl
ciBub3QgdG8gbGVhayB0aGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbCEKICAgICAg
ICAgICAgIHZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIHZhbHVlLCAwKSk7Ci0gICAgICAgICAgICBwcmltaXRpdmUgPSBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTpKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIDApXTsKKyAg
ICAgICAgICAgIHByaW1pdGl2ZSA9IEAoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCAw
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSkg
ewogICAgICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byB1bmlxdWUgc3RyaW5ncywgdG9vLgog
ICAgICAgICAgICAgYXV0byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgdmFsdWUsIDApKTsKQEAgLTgzNyw3ICs4MzYsNyBAQCBpZCB2YWx1ZVRvTnVtYmVy
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVm
KiBleGNlcAogICAgICAgICByZXR1cm4gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2YWx1ZSkg
PyBAWUVTIDogQE5POwogCiAgICAgZG91YmxlIHJlc3VsdCA9IEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhE
b3VibGU6KmV4Y2VwdGlvbiA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCkgOiByZXN1bHRdOworICAgIHJldHVybiBAKCpleGNlcHRpb24gPyBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpIDogcmVzdWx0KTsKIH0KIAogaWQgdmFsdWVUb1N0cmlu
ZyhKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
CmluZGV4IGVmYWYzMGRkNDRlNjJjM2Y5MTdmYjZiZWU2ZWIxYjhmMGFjNjE2NTYuLjQyMmNiYTU3
Zjk0MTUwNzczMDI3NDQyOWExOGM0NDE4OWQ5NzMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCAtIChOU1N0cmluZyAq
KXRlc3RBcmd1bWVudFR5cGVzV2l0aEludDooaW50KWkgZG91YmxlOihkb3VibGUpZCBib29sZWFu
OihCT09MKWIgcwogfQogLSAodm9pZCljYWxsYmFjazooSlNWYWx1ZSAqKWZ1bmN0aW9uCiB7Ci0g
ICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDo0Ml1dXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1
bWVudHM6QFtAKDQyKV1dOwogfQogLSAodm9pZClib2d1c0NhbGxiYWNrOih2b2lkKF4pKGludCkp
ZnVuY3Rpb24KIHsKQEAgLTE5OSw3ICsxOTksNyBAQCAtICh2b2lkKWNsaWNrCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hhbmRsZXIgdmFsdWVd
OwotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheV1dOworICAg
IFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpAW11dOwogfQogQGVuZAogCkBAIC0xMTcxLDEw
ICsxMTcxLDggQEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKICAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwogICAgICAgICBj
b250ZXh0W0AiaGFuZGxlVGhlRGljdGlvbmFyeSJdID0gXihOU0RpY3Rpb25hcnkgKmRpY3QpIHsK
ICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwZWN0ZWREaWN0ID0gQHsKLSAgICAgICAgICAg
ICAgICBAImZvbyIgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSwKLSAgICAgICAgICAgICAg
ICBAImJhciIgOiBAewotICAgICAgICAgICAgICAgICAgICBAImJheiI6IFtOU051bWJlciBudW1i
ZXJXaXRoSW50OjJdCi0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEAiZm9vIjog
QCgxKSwKKyAgICAgICAgICAgICAgICBAImJhciI6IEB7IEAiYmF6IjogQCgyKSB9CiAgICAgICAg
ICAgICB9OwogICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJyZWN1cnNpdmVseSBjb252ZXJ0IG5l
c3RlZCBkaWN0aW9uYXJpZXMiLCBbZGljdCBpc0VxdWFsVG9EaWN0aW9uYXJ5OmV4cGVjdGVkRGlj
dF0pOwogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYmEyNWU5MzRhMTE2MjFkMzg4ODVjNTA4MDdiY2FhODk3YzI5YTg4Yy4uZTQzYjNiNGMy
YTk4ZmY1YWE1M2U2ODQ4MWMzYTMxMjQ2YzYwNmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzcsNiArNDc3LDcgQEAKIAkJODNGMkJBREUxQ0Y5NTI0
RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlERjQ1
OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVHlwZUNhc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVGMUEy
ODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyNDE2
NTcyNDNCQzJFNTAwMzJGQUFFIC8qIFZlY3RvckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rv
ckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2MzE5MUZDQjZBQjkw
MDMyRUNENiAvKiBTdHJpbmdIYXNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RyaW5nSGFzaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODRCNzNF
MjBERUEyODQwMDVCNzNCMiAvKiBDRlhQQ0JyaWRnZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlhQ
Q0JyaWRnZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFF
OEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVmlld0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTUyNCw2ICsxNTI1LDcgQEAKIAkJCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5
NTQgLyogU29mdExpbmtpbmcuaCAqLywKIAkJCQlFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYgLyog
U3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLywKIAkJCQk1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIg
LyogVVJMQ29jb2EubW0gKi8sCisJCQkJOTMyNDE2NTcyNDNCQzJFNTAwMzJGQUFFIC8qIFZlY3Rv
ckNvY29hLmggKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDZlODYzMzJjZTIzZmYyZTMzZmMxNjM2NjUyNzMyZDgwNTlmNmRlZGIuLmI3NGEy
NzcyOGVjNTUwMDc1NTg3ZTBhNDgyNWMyMTgxZmI5NTkxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFj
LmNtYWtlCkBAIC0xOCw2ICsxOCw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwog
ICAgIGNvY29hL05TVVJMRXh0cmFzLmgKICAgICBjb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3NDb2NvYS5oCiAgICAgY29jb2EvU29mdExpbmtpbmcuaAorICAgIGNvY29hL1ZlY3RvckNvY29h
LmgKIAogICAgIGRhcndpbi9XZWFrTGlua2luZy5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRy
YXMubW0KaW5kZXggM2E0ZmNhOTkxZjQ2YmZmYmE3NDJkNmI1OTEzY2RkZDg1YjFkZTUwNS4uNDdk
ZWU2Mjk1NmEzMzQ0ZjY5NTEzOGZlNjgzYjg0YjZjNzgzMTM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMubW0KQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgIk5TVVJMRXh0cmFzLmgi
CiAKICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0
cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMSGVscGVy
cy5oPgogI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvY29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpp
bmRleCAyM2VlOWU2ZThkMGMxMjljZTUzZGVjOWE0ZjgzNzQ3NjQ0MGUwNjhjLi42YmRhZTgwYmQ2
NzYxNmExNDg5MjFiZmY2MzkwYmQwMTNiYTE5ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5t
bQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1VS
TFBhcnNlci5oPgogI2ltcG9ydCA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1Zl
Y3RvckNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2MjljMmYzYzE4NDBlZTAxY2UwNGE5NmU3YmY3Mjg5ZTNiNDY5ZDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Ly8gU3BlY2lhbGl6ZSB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zIGJ5IG92ZXJsb2Fk
aW5nIHRoZSBtYWtlTlNBcnJheUVsZW1lbnQKKy8vIGZ1bmN0aW9ucyBhbmQgbWFrZVZlY3RvckVs
ZW1lbnQgZnVuY3Rpb25zLiBUaGUgbWFrZU5TQXJyYXlFbGVtZW50IGZ1bmN0aW9uIHRha2VzCisv
LyBhIGNvbnN0JiB0byBhIHZlY3RvciBlbGVtZW50IGFuZCBjYW4gcmV0dXJuIGVpdGhlciBhIFJl
dGFpblB0cjxpZD4gb3IgYW4gaWQKKy8vIGlmIHRoZSB2YWx1ZSBpcyBhdXRvcmVsZWFzZWQuIFRo
ZSBtYWtlVmVjdG9yRWxlbWVudCBmdW5jdGlvbiB0YWtlcyBhbiBpZ25vcmVkCisvLyBwb2ludGVy
IHRvIHRoZSB2ZWN0b3IgZWxlbWVudCB0eXBlLCBtYWtpbmcgYXJndW1lbnQtZGVwZW5kZW50IGxv
b2t1cCB3b3JrLCBhbmQgYW4KKy8vIGlkIGZvciB0aGUgYXJyYXkgZWxlbWVudCwgYW5kIHJldHVy
bnMgYW4gT3B0aW9uYWw8VD4gb2YgdGhlIHRoZSB2ZWN0b3IgZWxlbWVudCwKKy8vIGFsbG93aW5n
IHVzIHRvIGZpbHRlciBvdXQgYXJyYXkgZWxlbWVudHMgdGhhdCBhcmUgbm90IG9mIHRoZSBleHBl
Y3RlZCB0eXBlLgorLy8KKy8vICAgIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNv
bnN0IFZlY3RvckVsZW1lbnRUeXBlJiB2ZWN0b3JFbGVtZW50KTsKKy8vICAgICAgICAtb3ItCisv
LyAgICBpZCBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgVmVjdG9yRWxlbWVudFR5cGUmIHZlY3Rv
ckVsZW1lbnQpOworLy8KKy8vICAgIE9wdGlvbmFsPFZlY3RvckVsZW1lbnRUeXBlPiBtYWtlVmVj
dG9yRWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlwZSosIGlkIGFycmF5RWxlbWVudCk7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVO
U0FycmF5KGNvbnN0IFZlY3RvclR5cGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvckVsZW1l
bnRUeXBlPiBWZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3IoTlNBcnJheSAqKTsK
KworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgZnVuY3Rpb24gdGVtcGxhdGVzIGFi
b3ZlLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiBSZXRhaW5QdHI8TlNBcnJheT4g
Y3JlYXRlTlNBcnJheShjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpCit7CisgICAgYXV0byBzaXpl
ID0gdmVjdG9yLnNpemUoKTsKKyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiB2ZWN0b3IpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6Z2V0UHRyKG1ha2VOU0FycmF5
RWxlbWVudChlbGVtZW50KSldOworICAgIHJldHVybiBhcnJheTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+IFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZl
Y3RvcihOU0FycmF5ICphcnJheSkKK3sKKyAgICBWZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IHZl
Y3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcnJheS5jb3VudCk7Cisg
ICAgZm9yIChpZCBlbGVtZW50IGluIGFycmF5KSB7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBW
ZWN0b3JFbGVtZW50VHlwZSogdHlwZWROdWxsID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8g
dmVjdG9yRWxlbWVudCA9IG1ha2VWZWN0b3JFbGVtZW50KHR5cGVkTnVsbCwgZWxlbWVudCkpCisg
ICAgICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKnZlY3RvckVsZW1lbnQp
KTsKKyAgICB9CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
K3VzaW5nIFdURjo6bWFrZVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGMyYWRm
YmU2ODAyNWFlYWFmZmQ2ZTY2ZDNmMWEwYzc5NGJkNGRiMGMuLmEyMzcwYzc5YjY4YjQyMzA2NDZh
ZTQ3ZDRhZmMzZTZlNTU0NGE0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDU0LDYg
KzQ1NCwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJh
aXQ8U3RyaW5nPiB7CiAgICAgc3RhdGljIFN0cmluZyBmbHVzaChMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCB2b2lkKikgeyByZXR1cm4geyBjaGFyYWN0ZXJzLCBsZW5ndGggfTsg
fQogfTsKIAorI2lmZGVmIF9fT0JKQ19fCisKK1dURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8
aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0cmluZyosIGlkKTsK
KworI2VuZGlmCisKIC8vIERlZmluaXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKIGlubGlu
ZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tIGIvU291cmNlL1dURi93dGYvdGV4dC9j
b2NvYS9TdHJpbmdDb2NvYS5tbQppbmRleCAxYmZjNTI4YTIxZmE1NDRhYjVjNDM2MzQ0NjM1NDZl
YjY5OGI4NzdjLi45NThiY2YwN2I4NjY0NzA0MWIzMzYyNjEwOGM4NzZlM2Q5NDY3MjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KQEAgLTQ4LDQgKzQ4LDE2IEBA
IFN0cmluZzo6U3RyaW5nKE5TU3RyaW5nICpzdHIpCiAgICAgfQogfQogCitSZXRhaW5QdHI8aWQ+
IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBTdHJpbmcmIHZlY3RvckVsZW1lbnQpCit7CisgICAg
cmV0dXJuIGFkb3B0TlMoKF9fYnJpZGdlX3RyYW5zZmVyIGlkKXZlY3RvckVsZW1lbnQuY3JlYXRl
Q0ZTdHJpbmcoKS5sZWFrUmVmKCkpOworfQorCitPcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JF
bGVtZW50KGNvbnN0IFN0cmluZyosIGlkIGFycmF5RWxlbWVudCkKK3sKKyAgICBpZiAoIVthcnJh
eUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBhcnJheUVsZW1lbnQgfSB9OworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGMyM2U0OTQ3MDQ4Zjk4ZmNmNDhlMWFhM2NkZjBh
NWFiOTA5MjJjNWYuLjYyMmI0M2FkMDlmYzQzNzQyZDRiNWUxZmJkM2E4NjczNDJjMDUxYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMDcsMTYgKzMwNywxOCBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0K
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpAQCAt
MzM1LDcgKzMzNyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UG9pbnRNYWMubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRmxvYXRSZWN0TWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1h
Yy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTM0Myw3ICsz
NDQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSWNvbk1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQotICAgIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbnRSZWN0TWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFNp
emVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZmZjNjFiNDg2NTUyMGRmYTc3ZWRhNGJhNGQwOTc2
MmQ2MmVlYjMxNi4uMGJhZmQzNmZhNjU4Nzc2MDIzNThmN2ZlZjlhN2RiNTQyYzFkNmJmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMTUsNiArMzE1LDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvVVRJUmVnaXN0cnkuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENhc2NhZGVDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBA
IC0zMjQsNiArMzI1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0
YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRS
ZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCkBAIC0zNjcsNyArMzY5LDYgQEAgcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQ29yZVRleHQubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQot
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0U2l6ZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0z
NzUsNyArMzc2LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXpl
TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2FkNTNj
ZjVkMmQ3NzhmZDhjNmJkNmFhMjY2ZTBlNzE4NGIwMTcwNS4uN2FjZGM0ZGMyYzYxMGQ1OTExNTcy
ZmRmMzc2OWJjZmE0NzY0ODVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3NjksMTEgKzEyNzY5LDExIEBACiAJCUIyNzUz
NTQ4MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50U2l6ZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI3NTM1NEEwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRSZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZsb2F0UmVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI3
NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0UmVjdENvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXpl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0U2l6
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEUwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEltYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0
RjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSW50UG9pbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0TWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFJlY3RNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRS
ZWN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50
UmVjdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU1MTBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBJbnRTaXplTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTUzMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NTE0Nyw3ICsyNTE0Nyw2IEBACiAJCQkJNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgKi8sCiAJCQkJMkRFNzAwMjIxOTJGRTgyQTAwQjA5NzVD
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovLAogCQkJCUIyNzUzNTRCMEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFBvaW50TWFjLm1tICovLAotCQkJCUIyNzUzNTRDMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFJlY3RNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEQwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0U2l6ZU1hYy5tbSAqLywKIAkJCQlCMkFGRkM3NDBEMDBBNUMxMDAzMDA3NEQgLyog
Rm9udENhY2hlTWFjLm1tICovLAogCQkJCUIyQUZGQzc1MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCAqLywKQEAgLTI1MTU2LDcgKzI1MTU1LDYgQEAKIAkJCQlC
Mjc1MzU4RDBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBC
MDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFBvaW50TWFjLm1tICovLAotCQkJCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbnRSZWN0TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRTaXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1
bWVudEltYWdlTWFjLm1tICovLAogCQkJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcCAqLywKQEAgLTI1NTEzLDYgKzI1NTExLDcgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmgg
Ki8sCiAJCQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8sCisJ
CQkJQjI3NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1tICovLAogCQkJ
CTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi8sCiAJ
CQkJQzI0NThFNjExRkU4OTc5RTAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8sCiAJ
CQkJQjJBRkZDNzgwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gKi8sCkBA
IC0yNTUyNSw2ICsyNTUyNCw3IEBACiAJCQkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gKi8sCiAJCQkJQ0RBNTk1OTYyMTQ2REY3ODAw
QTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oICovLAogCQkJCUNEQTU5NTk3MjE0NkRGNzgw
MEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EubW0gKi8sCisJCQkJQjI3NTM1NTAwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3RDb2NvYS5tbSAqLywKIAkJCQkyRDBCNEFBOTE4REExQ0NEMDA0
MzRERTEgLyogSU9TdXJmYWNlLmggKi8sCiAJCQkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8q
IElPU3VyZmFjZS5tbSAqLywKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJm
YWNlUG9vbENvY29hLm1tICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCAxNDlhNmYyNjk4NzAzZTkzYWM3MTE2MWY5MjNjMGU5YTRmMWRhOGE2Li5hZDQ3MWNj
Mjg2OGUyMzBhY2M0NjFiMzM1ZjM0NDNiNWYzZjczZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjEzNiw3ICsyMTM2LDcgQEAgc3RhdGljIHZvaWQgQVhB
dHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clMKICAgICBpbnQgcXVvdGVMZXZlbCA9IGJsb2NrcXVvdGVMZXZlbChyZW5kZXJlcik7
CiAgICAgCiAgICAgaWYgKHF1b3RlTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJp
YnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCB2YWx1ZTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpxdW90ZUxldmVsXSByYW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3Ry
aW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCB2YWx1
ZTpAKHF1b3RlTGV2ZWwpIHJhbmdlOnJhbmdlXTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3Ry
aW5nIHJlbW92ZUF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCBy
YW5nZTpyYW5nZV07CiB9CkBAIC0yMTUwLDcgKzIxNTAsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRy
U3RyaQogICAgIGludCBwYXJlbnRIZWFkaW5nTGV2ZWwgPSBwYXJlbnRPYmplY3QtPmhlYWRpbmdM
ZXZlbCgpOwogICAgIAogICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgIFthdHRy
U3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1
ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpwYXJlbnRIZWFkaW5nTGV2ZWxdIHJhbmdlOnJhbmdl
XTsKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2Vu
SGVhZGluZ0xldmVsIHZhbHVlOkAocGFyZW50SGVhZGluZ0xldmVsKSByYW5nZTpyYW5nZV07CiAg
ICAgZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6VUlBY2Nlc3NpYmls
aXR5VG9rZW5IZWFkaW5nTGV2ZWwgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgLSAoTlNBcnJheSAqKXRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbgogICAgIGlmICghc3Rh
cnRNYXJrZXIgfHwgIWVuZE1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydE1hcmtlciwgZW5kTWFya2VyLCBu
aWxdOworICAgIHJldHVybiBAW3N0YXJ0TWFya2VyLCBlbmRNYXJrZXJdOwogfQogCiAtIChXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJGb3JQb3NpdGlvbjooTlNJbnRlZ2Vy
KXBvc2l0aW9uCkBAIC0yNDY4LDcgKzI0NjgsNyBAQCAtIChpZClfc3RyaW5nRnJvbVN0YXJ0TWFy
a2VyOihXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopc3RhcnRNYXJrZXIgdG9FbmRNYXJrZQog
ICAgIGlmICghc3RhcnRNYXJrZXIgfHwgIWVuZE1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICAKLSAgICBOU0FycmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtl
cnM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydE1hcmtlciwgZW5kTWFya2VyLCBuaWxd
IGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF07CisgICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJh
eU9mVGV4dEZvclRleHRNYXJrZXJzOkBbc3RhcnRNYXJrZXIsIGVuZE1hcmtlcl0gYXR0cmlidXRl
ZDphdHRyaWJ1dGVkXTsKICAgICBDbGFzcyByZXR1cm5DbGFzcyA9IGF0dHJpYnV0ZWQgPyBbTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyBjbGFzc10gOiBbTlNNdXRhYmxlU3RyaW5nIGNsYXNzXTsK
ICAgICBpZCByZXR1cm5WYWx1ZSA9IFtbKE5TU3RyaW5nICopW3JldHVybkNsYXNzIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CiAgICAgCkBAIC0yNTg2LDcgKzI1ODYsNyBAQCAtIChOU0FycmF5
ICopZWxlbWVudHNGb3JSYW5nZTooTlNSYW5nZSlyYW5nZQogICAgIGlmICghc3RhcnRNYXJrZXIg
fHwgIWVuZE1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBOU0FycmF5KiBh
cnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6W05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czpzdGFydE1hcmtlciwgZW5kTWFya2VyLCBuaWxdIGF0dHJpYnV0ZWQ6Tk9dOworICAg
IE5TQXJyYXkqIGFycmF5ID0gW3NlbGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0
TWFya2VyLCBlbmRNYXJrZXJdIGF0dHJpYnV0ZWQ6Tk9dOwogICAgIE5TTXV0YWJsZUFycmF5KiBl
bGVtZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgZm9yIChpZCBlbGVtZW50IGlu
IGFycmF5KSB7CiAgICAgICAgIGlmICghW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSkKQEAgLTI4NTIsNyArMjg1Miw3IEBAIC0gKE5TQXJy
YXkgKil0ZXh0TWFya2Vyc0ZvclJhbmdlOihSZWZQdHI8UmFuZ2U+KXJhbmdlCiAgICAgV2ViQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZCA9IFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBz
dGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOnJhbmdlIGlzU3RhcnQ6Tk8gY2FjaGU6c2VsZi5h
eEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07CiAgICAgaWYgKCFzdGFydCB8fCAhZW5k
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOnN0YXJ0LCBlbmQsIG5pbF07CisgICAgcmV0dXJuIEBbc3RhcnQsIGVuZF07CiB9CiAKIC0g
KE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eUV4cGFuZGVkVGV4dFZhbHVlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCA2
ODg3ODJjZmRlZDdhZTUzN2Q0YTc0YjI2YjJjYTg0OTUyMTQxMzJiLi5iMTVjZDA1ODA1MmU2YmQ2
Y2YzNGQxNTM0ZmFmYjgxMWZjZDBhM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTQ0NSw3ICs0NDUsNyBAQCBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KEFYQ29y
ZU9iamVjdCYgb2JqZWN0LCBBWFRleAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNoYW5nZSA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XTsKICAgICBb
Y2hhbmdlIHNldE9iamVjdDpAKHBsYXRmb3JtRWRpdFR5cGVGb3JXZWJDb3JlRWRpdFR5cGUodHlw
ZSkpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0RWRpdFR5cGVdOwogICAgIGlmIChsZW5ndGgg
PiBBWFZhbHVlQ2hhbmdlVHJ1bmNhdGlvbkxlbmd0aCkgewotICAgICAgICBbY2hhbmdlIHNldE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsZW5ndGhdIGZvcktleTpOU0FjY2Vzc2liaWxp
dHlUZXh0Q2hhbmdlVmFsdWVMZW5ndGhdOworICAgICAgICBbY2hhbmdlIHNldE9iamVjdDpAKGxl
bmd0aCkgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZUxlbmd0aF07CiAgICAg
ICAgIHRleHQgPSBbdGV4dCBzdWJzdHJpbmdUb0luZGV4OkFYVmFsdWVDaGFuZ2VUcnVuY2F0aW9u
TGVuZ3RoXTsKICAgICB9CiAgICAgW2NoYW5nZSBzZXRPYmplY3Q6dGV4dCBmb3JLZXk6TlNBY2Nl
c3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQppbmRleCAxYWU2YWE5YzU4ZTRmZTQxZjVhZGQ1OGRiNTY1YTUzYTVjMjc5Yzg4
Li5lMGJhMGJmNDA4YmEwNTM5NzVkYTQ3YzhjODc4MWM1ZTBkOTc1MDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0
ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbXBvcnQgIlZpc2libGVVbml0cy5oIgogI2ltcG9y
dCAiV2ViQ29yZUZyYW1lVmlldy5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJ
Lmg+CkBAIC02MTQsNyArNjE1LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uOihOU1N0cmluZyAqKW5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86KE4KICAgICBpZiAo
YWNjZXNzaWJpbGl0eVNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnMpIHsKICAgICAgICAgQVNTRVJU
KG5vdGlmaWNhdGlvbk5hbWUpOwogICAgICAgICB1c2VySW5mbyA9IGRpY3Rpb25hcnlSZW1vdmlu
Z05vblN1cHBvcnRlZFR5cGVzKHVzZXJJbmZvKTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICppbmZv
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOm5vdGlmaWNhdGlv
bk5hbWUsIEAibm90aWZpY2F0aW9uTmFtZSIsIHVzZXJJbmZvLCBAInVzZXJJbmZvIiwgbmlsXTsK
KyAgICAgICAgTlNEaWN0aW9uYXJ5ICppbmZvID0gQHsgQCJub3RpZmljYXRpb25OYW1lIjogbm90
aWZpY2F0aW9uTmFtZSwgQCJ1c2VySW5mbyI6IHVzZXJJbmZvIH07CiAgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJBWERS
VE5vdGlmaWNhdGlvbiIgb2JqZWN0OnNlbGYgdXNlckluZm86aW5mb107CiAgICAgfQogfQpAQCAt
NjkxLDYgKzY5MiwxMyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmls
aXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHNlYXJjaEtleSkgPyBzZWFyY2hLZXkgOiBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpBbnlUeXBlOwogfQogCitzdGF0aWMgT3B0aW9uYWw8QWNjZXNzaWJpbGl0eVNlYXJjaEtl
eT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSosIGlkIGFy
cmF5RWxlbWVudCkKK3sKKyAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpOU1N0
cmluZy5jbGFzc10pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsg
eyBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGFycmF5RWxlbWVudCkgfSB9OworfQor
CiBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
Rm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25h
cnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpCiB7CiAgICAgTlNTdHJpbmcgKmRpcmVjdGlvblBh
cmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYRGlyZWN0
aW9uIl07CkBAIC03MjksMTYgKzczNyw5IEBAIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBh
Y2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0CiAgICAg
CiAgICAgaWYgKFtzZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKICAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy5hcHBlbmQoYWNjZXNzaWJpbGl0eVNl
YXJjaEtleUZvclN0cmluZyhzZWFyY2hLZXlQYXJhbWV0ZXIpKTsKLSAgICBlbHNlIGlmIChbc2Vh
cmNoS2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgewotICAgICAg
ICBzaXplX3Qgc2VhcmNoS2V5Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFtzZWFyY2hLZXlQ
YXJhbWV0ZXIgY291bnRdKTsKLSAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNlYXJjaEtleUNvdW50KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzZWFyY2hLZXlDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqc2VhcmNo
S2V5ID0gW3NlYXJjaEtleVBhcmFtZXRlciBvYmplY3RBdEluZGV4OmldOwotICAgICAgICAgICAg
aWYgKFtzZWFyY2hLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAg
ICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnVuY2hlY2tlZEFwcGVuZChhY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAor
ICAgIGVsc2UgaWYgKFtzZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBj
bGFzc11dKQorICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzID0gbWFrZVZlY3RvcjxBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5PihzZWFyY2hLZXlQYXJhbWV0ZXIpOworCiAgICAgcmV0dXJuIGNyaXRl
cmlhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDM2
NDA0MzM4ZDY1NzMzNjBkZTJlYTBlNzI5YWFiNjhkOWU1OWJkNjUuLmI0MDNkM2Y2YzUxNmZiNmJk
NjBmYTljYmNmYWZjNWE0NDQxNTJhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC03OCw3ICs3OCw3IEBACiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3Lmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0
cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY0
NSwxNCArNjQ1LDggQEAgc3RhdGljIHN0ZDo6cGFpcjxBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENy
aXRlcmlhLCBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbj4gYWMKICAgICBpZiAoW3JlcGxhY2Vt
ZW50U3RyaW5nUGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAg
ICAgIG9wZXJhdGlvbi5yZXBsYWNlbWVudFRleHQgPSByZXBsYWNlbWVudFN0cmluZ1BhcmFtZXRl
cjsKIAotICAgIGlmIChbc2VhcmNoU3RyaW5nc1BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0pIHsKLSAgICAgICAgc2l6ZV90IHNlYXJjaFN0cmluZ3NDb3VudCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oW3NlYXJjaFN0cmluZ3NQYXJhbWV0ZXIgY291bnRdKTsKLSAgICAgICAg
Y3JpdGVyaWEuc2VhcmNoU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlYXJjaFN0cmlu
Z3NDb3VudCk7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKnNlYXJjaFN0cmluZyBpbiBzZWFyY2hT
dHJpbmdzUGFyYW1ldGVyKSB7Ci0gICAgICAgICAgICBpZiAoW3NlYXJjaFN0cmluZyBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgICAgIGNyaXRlcmlhLnNlYXJj
aFN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHNlYXJjaFN0cmluZyk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgaWYgKFtzZWFyY2hTdHJpbmdzUGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5ncyA9IG1ha2VWZWN0b3I8U3Ry
aW5nPihzZWFyY2hTdHJpbmdzUGFyYW1ldGVyKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihjcml0ZXJpYSwgb3BlcmF0aW9uKTsKIH0KQEAgLTY2NSwxNCArNjU5LDggQEAgc3RhdGljIEFj
Y2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0
ZXJpYUZvclBhcmFtZXQKICAgICBOU1N0cmluZyAqc3RhcnQgPSBbcGFyYW1zIG9iamVjdEZvcktl
eTpOU0FjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tXTsKICAgICBOU1N0cmluZyAqZGly
ZWN0aW9uID0gW3BhcmFtcyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERp
cmVjdGlvbl07CiAKLSAgICBpZiAoW3NlYXJjaFN0cmluZ3MgaXNLaW5kT2ZDbGFzczpbTlNBcnJh
eSBjbGFzc11dKSB7Ci0gICAgICAgIHNpemVfdCBzZWFyY2hTdHJpbmdzQ291bnQgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFtzZWFyY2hTdHJpbmdzIGNvdW50XSk7Ci0gICAgICAgIGNyaXRlcmlhLnNl
YXJjaFN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWFyY2hTdHJpbmdzQ291bnQpOwot
ICAgICAgICBmb3IgKE5TU3RyaW5nICpzZWFyY2hTdHJpbmcgaW4gc2VhcmNoU3RyaW5ncykgewot
ICAgICAgICAgICAgaWYgKFtzZWFyY2hTdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKLSAgICAgICAgICAgICAgICBjcml0ZXJpYS5zZWFyY2hTdHJpbmdzLnVuY2hlY2tlZEFw
cGVuZChzZWFyY2hTdHJpbmcpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChbc2VhcmNoU3Ry
aW5ncyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIGNyaXRlcmlhLnNl
YXJjaFN0cmluZ3MgPSBtYWtlVmVjdG9yPFN0cmluZz4oc2VhcmNoU3RyaW5ncyk7CiAKICAgICBp
ZiAoW3N0YXJ0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgaWYg
KFtzdGFydCBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJv
bUJlZ2luXSkKQEAgLTEwMTksOSArMTAwNyw5IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAg
ICAgLy8gc2V0IHN1cGVyL3N1YiBzY3JpcHRpbmcKICAgICBWZXJ0aWNhbEFsaWduIGFsaWdubWVu
dCA9IHN0eWxlLnZlcnRpY2FsQWxpZ24oKTsKICAgICBpZiAoYWxpZ25tZW50ID09IFZlcnRpY2Fs
QWxpZ246OlN1YikKLSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDooLTEpXSwgcmFuZ2UpOworICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51
bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUs
IEAoLTEpLCByYW5nZSk7CiAgICAgZWxzZSBpZiAoYWxpZ25tZW50ID09IFZlcnRpY2FsQWxpZ246
OlN1cGVyKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBO
U0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJX
aXRoSW50OjFdLCByYW5nZSk7CisgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgQCgxKSwg
cmFuZ2UpOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5T
QWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAg
CkBAIC0xMDc0LDcgKzEwNjIsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJs
b2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyUwogICAgIGludCBx
dW90ZUxldmVsID0gb2JqLT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAKICAgICBpZiAocXVvdGVM
ZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJs
b2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpxdW90
ZUxldmVsXSByYW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpO
U0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgdmFsdWU6QChxdW90ZUxldmVs
KSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRy
aWJ1dGU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlIHJhbmdlOnJhbmdl
XTsKIH0KQEAgLTExNTMsNyArMTE0MSw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5n
U2V0SGVhZGluZ0xldmVsKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpCiAgICAg
fQogICAgIAogICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5n
IGFkZEF0dHJpYnV0ZTpAIkFYSGVhZGluZ0xldmVsIiB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpwYXJlbnRIZWFkaW5nTGV2ZWxdIHJhbmdlOnJhbmdlXTsKKyAgICAgICAgW2F0dHJTdHJp
bmcgYWRkQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOkAocGFyZW50SGVhZGluZ0xl
dmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVB
dHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtMTMxMiwxNyAr
MTMwMCwxNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogICAgIC8v
IEFsbCBlbGVtZW50cyBzaG91bGQgZ2V0IFNob3dNZW51IGFuZCBTY3JvbGxUb1Zpc2libGUuCiAg
ICAgLy8gQnV0IGNlcnRhaW4gZWFybGllciBWb2ljZU92ZXIgdmVyc2lvbnMgZG8gbm90IHN1cHBv
cnQgc2Nyb2xsIHRvIHZpc2libGUsIGFuZCBpdCBjb25mdXNlcyB0aGVtIHRvIHNlZSBpdCBpbiB0
aGUgbGlzdC4KLSAgICBzdGF0aWMgTlNBcnJheSAqZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rp
b24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbiwgbmlsXTsKKyAgICBzdGF0
aWMgTlNBcnJheSAqZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gW0BbTlNBY2Nlc3NpYmlsaXR5U2hv
d01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0YWlu
XTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAvLyBUaGUgb3Jk
ZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUgJ2RlZmF1bHQn
IGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQg
YWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVu
dEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxp
dHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJp
bGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbiwgbmlsXTsKKyAgICBzdGF0aWMgTlNBcnJheSAqYWN0
aW9uRWxlbWVudEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nl
c3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFj
dGlvbl0gcmV0YWluXTsKIAogICAgIC8vIE1lbnUgZWxlbWVudHMgYWxsb3cgUHJlc3MgYW5kIENh
bmNlbC4KICAgICBzdGF0aWMgTlNBcnJheSAqbWVudUVsZW1lbnRBY3Rpb25zID0gW1thY3Rpb25F
bGVtZW50QWN0aW9ucyBhcnJheUJ5QWRkaW5nT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFj
dGlvbl0gcmV0YWluXTsKIAogICAgIC8vIFNsaWRlciBlbGVtZW50cyBhbGxvdyBJbmNyZW1lbnQv
RGVjcmVtZW50LgotICAgIHN0YXRpYyBOU0FycmF5ICpzbGlkZXJBY3Rpb25zID0gW1tkZWZhdWx0
RWxlbWVudEFjdGlvbnMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6W05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNzaWJp
bGl0eURlY3JlbWVudEFjdGlvbiwgbmlsXV0gcmV0YWluXTsKKyAgICBzdGF0aWMgTlNBcnJheSAq
c2xpZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmpl
Y3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2li
aWxpdHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOwogCiAgICAgTlNBcnJheSAqYWN0aW9uczsK
ICAgICBpZiAoYmFja2luZ09iamVjdC0+c3VwcG9ydHNQcmVzc0FjdGlvbigpKQpAQCAtMTg4OCwx
NCArMTg3Niw2IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAgICAgfQogfQogCi1zdGF0aWMg
TlNNdXRhYmxlQXJyYXkgKmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB2ZWN0b3IpCi17Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OnZlY3Rvci5zaXplKCldOwotICAgIGZvciAoY29uc3QgYXV0
byYgc3RyaW5nIDogdmVjdG9yKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnN0cmluZ107Ci0g
ICAgcmV0dXJuIGFycmF5OwotfQotCiAtIChpZCl0ZXh0TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb24K
IHsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5zZWxlY3Rpb24oKTsKQEAgLTI0MDIsOSArMjM4Miw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhMb2FkZWQiXSkKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6YmFja2luZ09iamVjdC0+aXNMb2FkZWQoKV07CiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExheW91dENvdW50Il0pCi0gICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+bGF5b3V0Q291bnQoKV07
CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5sYXlvdXRDb3VudCgpKTsKICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlM
b2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOmJhY2tpbmdPYmplY3QtPmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
XTsKKyAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcygpKTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkK
ICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVj
dC0+cHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCgpXTsKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5h
YmxlZEF0dHJpYnV0ZV0pCkBAIC0yNDE4LDcgKzIzOTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGludCBsZW5ndGggPSBiYWNraW5nT2JqZWN0
LT50ZXh0TGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAobGVuZ3RoIDwgMCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6bGVuZ3RoXTsKKyAgICAgICAgICAgIHJldHVybiBAKGxlbmd0aCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlXSkgewogICAgICAgICAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dCA9IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dCgpOwpAQCAtMjQ0Nyw3ICsy
NDI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAg
ICBpZiAobGluZU51bWJlciA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxpbmVOdW1iZXJdOworICAg
ICAgICAgICAgcmV0dXJuIEAobGluZU51bWJlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1
MDYsMTYgKzI0ODYsMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyVGh1bWIpCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhG
bG9hdDpiYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3QoKS0+dmFsdWVGb3JSYW5nZSgpXTsKICAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzSGVhZGluZygpKQotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPmhlYWRpbmdMZXZlbCgpXTsK
KyAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmhlYWRpbmdMZXZlbCgpKTsKIAog
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNDaGVja2JveE9yUmFkaW8oKSB8fCBiYWNraW5n
T2JqZWN0LT5pc01lbnVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNTd2l0Y2goKSB8fCBiYWNr
aW5nT2JqZWN0LT5pc1RvZ2dsZUJ1dHRvbigpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJhY2tp
bmdPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoSW50OjBdOworICAgICAgICAgICAgICAgIHJldHVybiBAKDApOwogICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOgotICAgICAgICAgICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQCgxKTsKICAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpN
aXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml07
CisgICAgICAgICAgICAgICAgcmV0dXJuIEAoMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IApAQCAtMjUzNSw3ICsyNTE1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJJdGVtKCkp
Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVj
dC0+aXNTZWxlY3RlZCgpXTsKKyAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlz
U2VsZWN0ZWQoKSk7CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkp
IHsKICAgICAgICAgICAgIGludCByLCBnLCBiOwpAQCAtMjY5MSw3ICsyNjcxLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNUYWJsZUNvbHVtbigpKSB7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6YmFja2luZ09iamVjdC0+Y29sdW1uSW5k
ZXgoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5jb2x1bW5JbmRleCgp
KTsKIAogICAgICAgICAvLyByb3dzIGF0dHJpYnV0ZSBmb3IgYSBjb2x1bW4gaXMgdGhlIGxpc3Qg
b2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNvbHVtbiBhdCBlYWNoIHJvdwogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdCkBAIC0yNzQyLDcgKzI3MjIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKIAogICAgICAgICAvLyBUcmVlUm9sZXMgZG8gbm90IHN1cHBvcnQgY29sdW1ucywg
YnV0IE1hYyBBWCBleHBlY3RzIHRvIGJlIGFibGUgdG8gYXNrIGFib3V0IGNvbHVtbnMgYXQgdGhl
IGxlYXN0LgogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU0FycmF5
IGFycmF5XTsKKyAgICAgICAgICAgIHJldHVybiBAW107CiAgICAgfQogCiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0p
IHsKQEAgLTI3NjAsMTMgKzI3NDAsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgICAgICBzaXplX3QgY291bnQgPSByb3dzQ29weS5zaXplKCk7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGNvdW50OyArK2spCiAgICAgICAgICAgICAg
ICAgaWYgKHJvd3NDb3B5W2tdLT53cmFwcGVyKCkgPT0gc2VsZikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6a107CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBAKGspOwogCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVSb3coKSkKLSAgICAgICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5yb3dJbmRl
eCgpXTsKKyAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnJvd0luZGV4KCkpOwog
ICAgIH0KIAogICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMg
cm93LgpAQCAtMjgwMSw3ICsyNzgxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgIGludCBsZXZlbCA9IGJhY2tpbmdPYmplY3QtPmhpZXJhcmNoaWNhbExl
dmVsKCk7CiAgICAgICAgIGlmIChsZXZlbCA+IDApCiAgICAgICAgICAgICBsZXZlbCAtPSAxOwot
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGV2ZWxdOworICAgICAgICBy
ZXR1cm4gQChsZXZlbCk7CiAgICAgfQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNFeHBhbmRlZCgpXTsK
QEAgLTI4MzIsOSArMjgxMiw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6YmFja2luZ09iamVjdC0+YmxvY2txdW90ZUxldmVs
KCldOworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKSk7
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYVGFibGVMZXZlbCJd
KQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+
dGFibGVMZXZlbCgpXTsKKyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+dGFibGVMZXZl
bCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNz
aWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdKSB7CiAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOwpA
QCAtMjg1MSw3ICsyODMxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
U2VydmVzQXNUaXRsZUZvclVJRWxlbWVudHNBdHRyaWJ1dGVdICYmIGJhY2tpbmdPYmplY3QtPmlz
TWVudUJ1dHRvbigpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHVpRWxlbWVudCA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KCpiYWNraW5nT2JqZWN0KS5tZW51
Rm9yTWVudUJ1dHRvbigpOwogICAgICAgICBpZiAodWlFbGVtZW50KQotICAgICAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp1aUVsZW1lbnQtPndyYXBwZXIoKV07CisgICAg
ICAgICAgICByZXR1cm4gQFt1aUVsZW1lbnQtPndyYXBwZXIoKV07CiAgICAgfQogCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxl
bWVudEF0dHJpYnV0ZV0pIHsKQEAgLTI5MjEsMTcgKzI5MDEsMTUgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBUG9zSW5TZXRBdHRyaWJ1dGVdKQotICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+cG9zSW5T
ZXQoKV07CisgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnBvc0luU2V0KCkpOwogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVNl
dFNpemVBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
YmFja2luZ09iamVjdC0+c2V0U2l6ZSgpXTsKKyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVj
dC0+c2V0U2l6ZSgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNBUklBR3JhYmJlZCgpXTsKIAotICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RHJvcEVm
ZmVjdHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRyb3BFZmZlY3RzID0g
YmFja2luZ09iamVjdC0+ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCk7Ci0gICAgICAgIHJldHVy
biBjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShkcm9wRWZmZWN0cyk7Ci0gICAgfQorICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNB
dHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShiYWNraW5nT2JqZWN0LT5k
ZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1
ZUF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5wbGFjZWhvbGRlclZh
bHVlKCk7CkBAIC0zMDE2LDcgKzI5OTQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eURPTUNsYXNzTGlzdEF0dHJpYnV0ZV0pIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
Y2xhc3NMaXN0OwogICAgICAgICBiYWNraW5nT2JqZWN0LT5jbGFzc0xpc3QoY2xhc3NMaXN0KTsK
LSAgICAgICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNsYXNzTGlzdCk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGNsYXNzTGlzdCkuYXV0b3JlbGVhc2UoKTsKICAgICB9
CiAKICAgICAvLyBUaGlzIGFsbG93cyB1cyB0byBjb25uZWN0IHRvIGEgcGx1Z2luIHRoYXQgY3Jl
YXRlcyBhIHNoYWRvdyBub2RlIGZvciBlZGl0aW5nIChsaWtlIFBERnMpLgpAQCAtNDEwMSw3ICs0
MDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtwcm90ZWN0ZWRTZWxmIHZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07CiAgICAgICAgICAgICByZXR1cm4gYmFja2lu
Z09iamVjdC0+bGluZUZvclBvc2l0aW9uKHZpc2libGVQb3MpOwogICAgICAgICB9KTsKLSAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OnJlc3VsdF07CisgICAgICAgIHJldHVy
biBAKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JMaW5lIl0pIHsKQEAgLTQzMjksNyArNDMwNyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICB9KTsKICAgICAgICAg
aWYgKGxlbmd0aCA8IDApCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGVuZ3RoXTsKKyAgICAgICAgcmV0dXJuIEAobGVuZ3Ro
KTsKICAgICB9CiAKICAgICAvLyBVc2VkIG9ubHkgYnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhciku
CkBAIC00Mzc5LDcgKzQzNTcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gYmFja2luZ09iamVjdC0+ZG9BWExpbmVG
b3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7CiAgICAgICAgICAgICBpZiAobGluZU51bWJlciA8
IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIHJldHVybiBbTlNO
dW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmxpbmVOdW1iZXJdOworICAgICAgICAgICAgcmV0
dXJuIEAobGluZU51bWJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVdKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KaW5kZXggZGUzYTQzZGVmMGI5NzhjMDc4MTNkODAwNDcyZTlmOTlhZWY3ODRjZS4uZTkw
NjIyMWNhOThjM2RhZmM3MzMzMGU1ODJhNGQxZjY2ZGJmODhiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtNTg2LDcgKzU4Niw3IEBAICsg
KGlkKV9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTooSlNDOjpKU1ZhbHVlKXZhbHVlIG9yaWdpblJv
b3RPYmplY3Q6KFJvb3RPYmplY3QqCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2YWx1ZSktPnZh
bHVlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKIAogICAgIGlmICh2YWx1ZS5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuYXNO
dW1iZXIoKV07CisgICAgICAgIHJldHVybiBAKHZhbHVlLmFzTnVtYmVyKCkpOwogCiAgICAgaWYg
KHZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOnZhbHVlLmFzQm9vbGVhbigpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KaW5kZXggNTA3MmQ2
YjMyYWM3NWQ3MWNiOGZiZTUzOGNlODdlMTU2Mzk3MjZhMy4uZTU4ZWFlZGVjMDA3ZTRiOTljNjgy
NzE0NzI1ZGUxYTI1ZDUwOTc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KQEAgLTI4LDcgKzI4
LDggQEAKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogCi0jaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCAiRmxvYXRSZWN0LmgiCisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvTlNT
cGVsbENoZWNrZXIuaD4KQEAgLTQ3LDEyICs0OCw3IEBAIHVpbnQ2NF90IEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
CiAKIFZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRp
dmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQogewotICAgIE5TVGV4dEFsdGVybmF0aXZl
cyAqdGV4dEFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChjb250ZXh0KTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmluZ3M7
Ci0gICAgYWx0ZXJuYXRpdmVTdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodGV4dEFsdGVy
bmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnN0
cmluZyBpbiB0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncykKLSAgICAgICAgYWx0
ZXJuYXRpdmVTdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChzdHJpbmcpOwotICAgIHJldHVybiBhbHRl
cm5hdGl2ZVN0cmluZ3M7CisgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihtX2NvbnRleHRD
b250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkuYWx0ZXJuYXRpdmVTdHJp
bmdzKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmNsZWFyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBhNTQz
YWMyZDFhZTJhYzM4ZjhjZDI3ZmIyNTdmZTJkMTYyNDBkY2VmLi40ZjQ2MzUyODBkNjQ1ODE0Mzlh
ZjdjYjUyYWU2MTVjOGUxMzNmNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIE5TUGFyYWdyYXBo
U3R5bGUgKmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSgpCiAgICAgaWYgKCFkZWZhdWx0UGFyYWdyYXBo
U3R5bGUpIHsKICAgICAgICAgZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gW1tQbGF0Zm9ybU5TUGFy
YWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV07CiAgICAgICAg
IFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUgc2V0RGVmYXVsdFRhYkludGVydmFsOjM2XTsKLSAgICAg
ICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXRUYWJTdG9wczpbTlNBcnJheSBhcnJheV1dOwor
ICAgICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOkBbXV07CiAgICAgfQog
ICAgIHJldHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5bGU7CiB9CkBAIC0xMDI3LDcgKzEwMjcsNyBA
QCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1l
bnQoRWxlbWVudCYgZWxlbWVudCkKICAgICBmbG9hdCBzdHJva2VXaWR0aCA9IDAuMDsKICAgICBp
ZiAoX2NhY2hlcy0+ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpKSB7CiAgICAgICAgIGZsb2F0IHRl
eHRTdHJva2VXaWR0aCA9IHN0cm9rZVdpZHRoIC8gKFtmb250IHBvaW50U2l6ZV0gKiAwLjAxKTsK
LSAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0ZXh0
U3Ryb2tlV2lkdGhdIGZvcktleTpOU1N0cm9rZVdpZHRoQXR0cmlidXRlTmFtZV07CisgICAgICAg
IFthdHRycyBzZXRPYmplY3Q6QCh0ZXh0U3Ryb2tlV2lkdGgpIGZvcktleTpOU1N0cm9rZVdpZHRo
QXR0cmlidXRlTmFtZV07CiAgICAgfQogICAgIGlmIChzdHJva2VDb2xvcikKICAgICAgICAgW2F0
dHJzIHNldE9iamVjdDpzdHJva2VDb2xvciBmb3JLZXk6TlNTdHJva2VDb2xvckF0dHJpYnV0ZU5h
bWVdOwpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpj
b21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgICAg
ICBpZiAoVUlGbG9hdElzWmVybyhrZXJuVmFsKSkKICAgICAgICAgICAgICAgICBbYXR0cnMgc2V0
T2JqZWN0OkAwLjAgZm9yS2V5Ok5TS2VybkF0dHJpYnV0ZU5hbWVdOyAvLyBhdXRvIGFuZCBub3Jt
YWwsIHRoZSBvdGhlciBwb3NzaWJsZSB2YWx1ZXMsIGFyZSBib3RoICJrZXJuaW5nIGVuYWJsZWQi
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTprZXJuVmFsXSBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFt
ZV07CisgICAgICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAKGtlcm5WYWwpIGZvcktleTpO
U0tlcm5BdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA3NCw3ICsxMDc0
LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBmbG9hdCBiYXNlbGluZU9mZnNldCA9IDAu
MDsKICAgICBpZiAoX2NhY2hlcy0+ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBD
U1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGJhc2VsaW5lT2Zmc2V0KSkKLSAgICAgICAgW2F0dHJz
IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpiYXNlbGluZU9mZnNldF0gZm9y
S2V5Ok5TQmFzZWxpbmVPZmZzZXRBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpAKGJhc2VsaW5lT2Zmc2V0KSBmb3JLZXk6TlNCYXNlbGluZU9mZnNldEF0dHJpYnV0ZU5h
bWVdOwogCiAgICAgU3RyaW5nIHRleHRTaGFkb3cgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9y
Tm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpOwogICAgIGlmICh0ZXh0U2hhZG93
Lmxlbmd0aCgpID4gNCkgewpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgdm9pZCBIVE1MQ29udmVydGVy
OjpfcHJvY2Vzc01ldGFFbGVtZW50V2l0aE5hbWUoTlNTdHJpbmcgKm5hbWUsIE5TU3RyaW5nICpj
b250ZW4KICAgICAgICAgaWYgKHZlcnNpb25OdW1iZXIgPiAwLjApIHsKICAgICAgICAgICAgIC8v
ID8/PyB0aGlzIHNob3VsZCBiZSBrZXllZCBvZmYgb2YgdmVyc2lvbiBudW1iZXIgaW4gZnV0dXJl
CiAgICAgICAgICAgICBbX2RvY3VtZW50QXR0cnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TQ29udmVy
dGVkRG9jdW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICAgICAgW19kb2N1bWVudEF0dHJzIHNldE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2ZXJzaW9uTnVtYmVyXSBmb3JLZXk6TlND
b2NvYVZlcnNpb25Eb2N1bWVudEF0dHJpYnV0ZV07CisgICAgICAgICAgICBbX2RvY3VtZW50QXR0
cnMgc2V0T2JqZWN0OkAodmVyc2lvbk51bWJlcikgZm9yS2V5Ok5TQ29jb2FWZXJzaW9uRG9jdW1l
bnRBdHRyaWJ1dGVdOwogICAgICAgICB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9
IGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0gW0AiR2VuZXJhdG9yIiBjb21wYXJlOm5hbWUgb3B0
aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaF0pIHsKQEAgLTE2NzIsOCArMTY3Miw4IEBAIHZv
aWQgSFRNTENvbnZlcnRlcjo6X2FkZFRhYmxlRm9yRWxlbWVudChFbGVtZW50ICp0YWJsZUVsZW1l
bnQpCiAgICAgfQogICAgIAogICAgIFtfdGV4dFRhYmxlcyBhZGRPYmplY3Q6dGFibGUuZ2V0KCld
OwotICAgIFtfdGV4dFRhYmxlU3BhY2luZ3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOmNlbGxTcGFjaW5nVmFsXV07Ci0gICAgW190ZXh0VGFibGVQYWRkaW5ncyBhZGRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6Y2VsbFBhZGRpbmdWYWxdXTsKKyAgICBbX3Rl
eHRUYWJsZVNwYWNpbmdzIGFkZE9iamVjdDpAKGNlbGxTcGFjaW5nVmFsKV07CisgICAgW190ZXh0
VGFibGVQYWRkaW5ncyBhZGRPYmplY3Q6QChjZWxsUGFkZGluZ1ZhbCldOwogICAgIFtfdGV4dFRh
YmxlUm93cyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOjBdXTsKICAgICBb
X3RleHRUYWJsZVJvd0FycmF5cyBhZGRPYmplY3Q6W05TTXV0YWJsZUFycmF5IGFycmF5XV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGMwZjMxYzJlYmM5ZGRlZTlkYzk5
NDhjYWY2ODA0M2U5MWZkOTAzYjQuLmEyMDdjYjA5YjgwNjFlN2QxOTQ5OTU0NWZjZDE1Y2FmZmQz
ZDQzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC03MzAsNyArNzMwLDcg
QEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QK
IAogICAgIC8vIFRoZXJlIGFyZSBubyBwaHJhc2VzIHdpdGggYWx0ZXJuYXRpdmVzLCBzbyB0aGVy
ZSBpcyBqdXN0IG9uZSBpbnRlcnByZXRhdGlvbi4KICAgICBpZiAobWFya2Vyc0luUm9vdC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cGxhaW5UZXh0
KHJhbmdlT2ZSb290Q29udGVudHMpXTsKKyAgICAgICAgcmV0dXJuIEBbcGxhaW5UZXh0KHJhbmdl
T2ZSb290Q29udGVudHMpXTsKIAogICAgIC8vIFRoZSBudW1iZXIgb2YgaW50ZXJwcmV0YXRpb25z
IHdpbGwgYmUgaTEgKiBpMiAqIC4uLiAqIGlOLCB3aGVyZSBpWCBpcyB0aGUgbnVtYmVyIG9mIGlu
dGVycHJldGF0aW9ucyBmb3IgdGhlIFh0aCBwaHJhc2Ugd2l0aCBhbHRlcm5hdGl2ZXMuCiAgICAg
c2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQppbmRleCBhODdjZjVj
NGU4Zjg1NmRmN2M3OTAwMTE0M2YzYzc0NGM3ZmY4MDZhLi4yYjNmZTA1NTg0Zjk2NGUwOTk3Njg0
NmFhMTI5ODA3NmVhNGJlMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDEwICsyNCwxMSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAK
LSNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL05TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oPgorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4
LDE2ICszOSw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIAogVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
LSAgICBOU0FycmF5ICpzdHJpbmdzQXJyYXkgPSBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFy
ZWRNYXBwaW5nc10gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlOihOU1N0cmluZyAqKXR5cGVdOwotICAg
IFZlY3RvcjxTdHJpbmc+IHN0cmluZ3NWZWN0b3IgPSBWZWN0b3I8U3RyaW5nPigpOwotICAgIHVu
c2lnbmVkIGNvdW50ID0gW3N0cmluZ3NBcnJheSBjb3VudF07Ci0gICAgaWYgKGNvdW50ID4gMCkg
ewotICAgICAgICBOU0VudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBbc3RyaW5nc0FycmF5IG9iamVj
dEVudW1lcmF0b3JdOwotICAgICAgICBOU1N0cmluZyogc3RyaW5nOwotICAgICAgICB3aGlsZSAo
KHN0cmluZyA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwpCi0gICAgICAgICAgICBz
dHJpbmdzVmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIH0KLSAgICByZXR1cm4gc3RyaW5nc1Zl
Y3RvcjsKKyAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KFtbTlNVUkxGaWxlVHlwZU1hcHBp
bmdzIHNoYXJlZE1hcHBpbmdzXSBleHRlbnNpb25zRm9yTUlNRVR5cGU6dHlwZV0pOwogfQogCiBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludC5oCmluZGV4IDQ1NWJiMjUxYTI0ZDRlNjZjNzU1OWYwMjBhOWYzOWY1MDNkN2Nm
ZmYuLjc1YzkyOGRhN2FhMzc0NjZiMTQ2YzFjNzhlYzEwMGI2NTBjZjMxOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTMwLDEwICszMCw2
IEBACiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCi0jaW1wb3J0IDxGb3VuZGF0
aW9uL05TR2VvbWV0cnkuaD4KLSNlbmRpZgotCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3Qg
Q0dQb2ludCBDR1BvaW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UmVjdC5oCmluZGV4IDMzMTcwZWJjNDU2YmU4NDZiMzE3YWMxMzRjMzE1MDQ1ZDc2
NWUzZmMuLjFiNmQ0OTNlOTI2YmZlYWFhOTI5ZTI2NDI4YmNkMDdhYmEyOWU4YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCkBAIC0yNzksNSArMjc5
LDggQEAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCByb3VuZGVkSW50UmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi19CisjaWZkZWYgX19PQkpDX18KK1dF
QkNPUkVfRVhQT1JUIGlkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBGbG9hdFJlY3QmKTsKKyNl
bmRpZgogCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaApp
bmRleCBkMzQ4ODBhMmIyNTQ3YTI4MGNiMGQ3ZDJmOTczMjI1MjNkZmE2ZGUyLi4xNmM5MjM2MTZj
ZDVkYTZjNDg4MmJjNzNlNjlhN2YyOWNlMTA3YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFBvaW50LmgKQEAgLTI4LDE1ICsyOCwxMCBAQAogI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlIDxjbWF0aD4KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5l
ZCBfX09CSkNfXwotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0dlb21ldHJ5Lmg+Ci0jZW5kaWYKLQog
I2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHUG9pbnQgQ0dQb2ludDsKICNlbmRpZgogCi0K
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBPUyhEQVJXSU4pCiAjaWZkZWYgTlNHRU9N
RVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCAxMjJkZDUwNTNiMDIxYjVlMWUzOWMwMDgzZGUx
ZTI0MGI1OThkNWU0Li4wM2M1YWFmNDhiMGZjMzgyYzFkOTBhMGRhYjI5NmRjYmYwMWQxY2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCkBAIC0yNTAsNSAr
MjUwLDggQEAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5T
UmVjdCYpOwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgSW50UmVjdCYpOwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjaWZkZWYgX19PQkpDX18KK1dFQkNPUkVfRVhQT1JUIGlkIG1ha2VOU0FycmF5RWxlbWVudChj
b25zdCBJbnRSZWN0Jik7CisjZW5kaWYKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCmluZGV4IGVlN2M2YzBhZGZkN2Qz
ZGViZGJkYzVkYjk1ZGRiNTFkMzFiODA5NTUuLjc1NjgzNDFjNzc2ZDJlMDA2YmFkMGMwYWM0M2Y4
NWI2YTc3MDliMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
LmgKQEAgLTI5LDEwICsyOSw2IEBACiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JK
Q19fCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KLSNlbmRpZgotCiAjaWYgVVNF
KENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dTaXplIENHU2l6ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0
aW9uR3JvdXBBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCmluZGV4IDgzYjY0MjE3MmUx
OWU2N2JlOWVhYmQ5YTZmOTlhYmMzNDkwNDhmMjAuLjhmODQ3YjgyNzMzMDg2ZTgyYjJmNGVmMDU1
YzMwYTI1MmNmZThlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0xh
bmd1YWdlLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1F
V09SSykKQEAgLTEzMiwxMCArMTMzLDggQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2Jq
Qzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAgICBp
ZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21hdGljYWxseSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBuc0xhbmd1YWdlcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKSkKLSAgICAgICAgW25zTGFuZ3VhZ2VzIGFkZE9iamVjdDooTlNTdHJpbmcqKWxh
bmd1YWdlXTsKLSAgICBOU0FycmF5KiBmaWx0ZXJlZE9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlh
U2VsZWN0aW9uR3JvdXBDbGFzcygpIG1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbV9t
ZWRpYVNlbGVjdGlvbkdyb3VwIG9wdGlvbnNdIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9Q
cmVmZXJyZWRMYW5ndWFnZXM6bnNMYW5ndWFnZXMuZ2V0KCldOworICAgIE5TQXJyYXkqIGZpbHRl
cmVkT3B0aW9ucyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgbWVkaWFT
ZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OlttX21lZGlhU2VsZWN0aW9uR3JvdXAgb3B0aW9uc10K
KyAgICAgICAgZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpj
cmVhdGVOU0FycmF5KHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkuZ2V0KCldOwogCiAgICAgaWYg
KCFbZmlsdGVyZWRPcHRpb25zIGNvdW50XSAmJiBjaGFyYWN0ZXJpc3RpY3MuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDQsMTEgKzE0Myw3IEBAIHZvaWQgTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakM6OnVwZGF0ZU9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3Rl
cmlzCiAgICAgaWYgKCFbZmlsdGVyZWRPcHRpb25zIGNvdW50XSkKICAgICAgICAgZmlsdGVyZWRP
cHRpb25zID0gW21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXTsKIAotICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gbnNDaGFyYWN0ZXJpc3RpY3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y2hhcmFjdGVyaXN0aWNzLnNpemUoKV0pOwot
ICAgIGZvciAoYXV0byYgY2hhcmFjdGVyaXN0aWMgOiBjaGFyYWN0ZXJpc3RpY3MpCi0gICAgICAg
IFtuc0NoYXJhY3RlcmlzdGljcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopY2hhcmFjdGVyaXN0aWNd
OwotCi0gICAgTlNBcnJheSogb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgPSBbUEFMOjpnZXRB
Vk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIG1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJh
eTpmaWx0ZXJlZE9wdGlvbnMgd2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWNzOm5zQ2hhcmFjdGVyaXN0
aWNzLmdldCgpXTsKKyAgICBOU0FycmF5KiBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyA9IFtQ
QUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25z
RnJvbUFycmF5OmZpbHRlcmVkT3B0aW9ucyB3aXRoTWVkaWFDaGFyYWN0ZXJpc3RpY3M6Y3JlYXRl
TlNBcnJheShjaGFyYWN0ZXJpc3RpY3MpLmdldCgpXTsKICAgICBpZiAob3B0aW9uc1dpdGhDaGFy
YWN0ZXJpc3RpY3MgJiYgW29wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzIGNvdW50XSkKICAgICAg
ICAgZmlsdGVyZWRPcHRpb25zID0gb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCmluZGV4IDVhNjJhMWU0NjdkODU2NmQyYjZiMzQyMmQ2NGI5NDgyNGQ5
YzY4ZDMuLjhhNzcxNjJkNjMwM2VlZmYzMzc2NjgwZTM3ZGE5NDBhMTE5NjM3OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQpAQCAtNjk3LDcgKzY5Nyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiB9CiAK
ICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQotc3RhdGljIGNvbnN0IE5TQXJyYXkqIG1lZGlhRGVz
Y3JpcHRpb25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCkKKworc3Rh
dGljIGNvbnN0IE5TQXJyYXkgKm1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRy
YWNrOjpUcmFja0tpbmQga2luZCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYW51YWxTZWxlY3Rpb25N
b2RlID0gTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyKCkgJiYgTVRFbmFibGVDYXB0aW9u
MjAxNUJlaGF2aW9yUHRyKCkoKTsKICAgICBpZiAobWFudWFsU2VsZWN0aW9uTW9kZSkKQEAgLTcw
NSwxOCArNzA2LDE4IEBAIHN0YXRpYyBjb25zdCBOU0FycmF5KiBtZWRpYURlc2NyaXB0aW9uRm9y
S2luZChQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tLaW5kIGtpbmQpCiAKICAgICAvLyBGSVhNRTog
TWF0Y2ggdGhlc2UgdG8gY29ycmVjdCB0eXBlczoKICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRl
eHRUcmFjazo6Q2FwdGlvbikKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eSwgbmlsXTsKKyAgICAgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Ry
YW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBdOwogCiAgICAgaWYgKGtpbmQg
PT0gUGxhdGZvcm1UZXh0VHJhY2s6OlN1YnRpdGxlKQotICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5E
aWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOworICAgICAgICByZXR1cm4gQFsgQVZNZWRpYUNo
YXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiAK
ICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6RGVzY3JpcHRpb24pCi0gICAgICAg
IHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNU
cmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOworICAgICAg
ICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dG
b3JBY2Nlc3NpYmlsaXR5LCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNv
dW5kRm9yQWNjZXNzaWJpbGl0eSBdOwogCiAgICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJh
Y2s6OkZvcmNlZCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgbmlsXTsKKyAg
ICAgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1
YnRpdGxlcyBdOwogCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwg
bmlsXTsKKyAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9r
ZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiB9CiAgICAgCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6Om5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKQpAQCAtNzU0LDgg
Kzc1NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3luY2hy
b25pemVUZXh0VHJhY2tTdGF0ZSgpCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5kaWYKIAorI2Vu
ZGlmCiAKIHN0YXRpYyBOU1VSTCAqY2Fub25pY2FsVVJMKGNvbnN0IFVSTCYgdXJsKQogewpAQCAt
Nzg1LDcgKzc4Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBvcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsgICAgCiAKLSAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3Rl
UmVmZXJlbmNlVG9Mb2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2Fs
UmVmZXJlbmNlVG9SZW1vdGVdIGZvcktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25z
S2V5XTsKKyAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6QChBVkFzc2V0UmVmZXJlbmNlUmVz
dHJpY3Rpb25Gb3JiaWRSZW1vdGVSZWZlcmVuY2VUb0xvY2FsIHwgQVZBc3NldFJlZmVyZW5jZVJl
c3RyaWN0aW9uRm9yYmlkTG9jYWxSZWZlcmVuY2VUb1JlbW90ZSkgZm9yS2V5OkFWVVJMQXNzZXRS
ZWZlcmVuY2VSZXN0cmljdGlvbnNLZXldOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGhlYWRlckZpZWxkcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7CiAKQEAgLTk4OSw3ICs5OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSgpCiAKICAgICBjb25zdCBOU1RpbWVJ
bnRlcnZhbCBhdlBsYXllck91dHB1dEFkdmFuY2VJbnRlcnZhbCA9IDI7CiAKLSAgICBSZXRhaW5Q
dHI8TlNBcnJheT4gc3VidHlwZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6a0NNU3VidGl0bGVGb3JtYXRU
eXBlX1dlYlZUVF0sIG5pbF0pOworICAgIFJldGFpblB0cjxOU0FycmF5PiBzdWJ0eXBlcyA9IGFk
b3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QChrQ01TdWJ0aXRsZUZvcm1h
dFR5cGVfV2ViVlRUKSwgbmlsXSk7CiAgICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbUEFM
OjphbGxvY0FWUGxheWVySXRlbUxlZ2libGVPdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFT
dWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9uOnN1YnR5cGVzLmdldCgpXSk7CiAgICAgW21f
bGVnaWJsZU91dHB1dC5nZXQoKSBzZXRTdXBwcmVzc2VzUGxheWVyUmVuZGVyaW5nOllFU107CiAK
QEAgLTEwMjgsNyArMTAyOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y2hlY2tQbGF5YWJpbGl0eSgpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAg
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKIAotICAgIFttX2F2QXNzZXQu
Z2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOkAicGxheWFibGUiLCBAInRyYWNrcyIsIG5pbF0gY29tcGxldGlvbkhhbmRsZXI6XnsK
KyAgICBbbV9hdkFzc2V0LmdldCgpIGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtA
InBsYXlhYmxlIiwgQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHdlYWtUaGlzLT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb246OkFzc2V0UGxheWFiaWxp
dHlLbm93bik7CkBAIC0yMTcxLDcgKzIxNzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KCkKICNpZiBVU0UoVklERU9UT09MQk9Y
KQogICAgIE5TRGljdGlvbmFyeSogYXR0cmlidXRlcyA9IG5pbDsKICNlbHNlCi0gICAgTlNEaWN0
aW9uYXJ5KiBhdHRyaWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6a0NWUGl4ZWxGb3JtYXRUeXBl
XzMyQkdSQV0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdOworICAgIE5T
RGljdGlvbmFyeSogYXR0cmlidXRlcyA9IEB7IGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBl
S2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH07CiAjZW5kaWYKICAgICBtX3ZpZGVv
T3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFu
Y2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczphdHRyaWJ1dGVzXSk7CiAgICAgQVNT
RVJUKG1fdmlkZW9PdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
Lm1tCmluZGV4IGQ5N2NjYjNiZGFiYWU1MzM1N2Q1MjgxOWM3ODgyMTcxOWYxNWViN2YuLjQ4MTZi
MDA0ZjE0ODE4MGZiOTAxNTc5MTljZWJlN2I1ZWRkZjU1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXS0V4cGxpY2l0QmVnaW5UaW1lRmxh
ZyA9IEAiV0tQbGF0Zm9ybUNBQW5pbWF0aW9uRXhwbGljaXRCZWdpblRpbWVGbGFnIjsKK2NvbnN0
ZXhwciBOU1N0cmluZyAqIGNvbnN0IFdLRXhwbGljaXRCZWdpblRpbWVGbGFnID0gQCJXS1BsYXRm
b3JtQ0FBbmltYXRpb25FeHBsaWNpdEJlZ2luVGltZUZsYWciOwogCiBib29sIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKENBQW5pbWF0aW9uICphbmltYXRpb24pCiB7CkBAIC0zNjIsOCArMzYyLDcgQEAg
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEFkZGl0aXZlKGJvb2wgdmFsdWUpCiAK
IFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYTo6dmFsdWVGdW5jdGlvbigpIGNvbnN0CiB7Ci0gICAgQ0FWYWx1ZUZ1bmN0aW9uKiB2
ZiA9IFttX2FuaW1hdGlvbiB2YWx1ZUZ1bmN0aW9uXTsKLSAgICByZXR1cm4gZnJvbUNBVmFsdWVG
dW5jdGlvblR5cGUoW3ZmIG5hbWVdKTsKKyAgICByZXR1cm4gZnJvbUNBVmFsdWVGdW5jdGlvblR5
cGUoW1ttX2FuaW1hdGlvbiB2YWx1ZUZ1bmN0aW9uXSBuYW1lXSk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlIHZh
bHVlKQpAQCAtMzc1LDE0ICszNzQsMTMgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OnNldEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24o
KSkKICAgICAgICAgcmV0dXJuOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4o
bV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZV1dOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldEZyb21WYWx1ZTpAKHZhbHVlKV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZh
bHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0K
ICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQog
CkBAIC0zOTAsMzIgKzM4OCwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0
RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2lj
QW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIE5TQXJyYXkqIGFycmF5ID0gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6dmFsdWUueCgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUu
eSgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueigpXSwKLSAg
ICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0
aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2lj
QW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpAWyBAKHZhbHVlLngo
KSksIEAodmFsdWUueSgpKSwgQCh2YWx1ZS56KCkpIF1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBp
ZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSog
YXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp2YWx1ZS5yZWQoKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlLmdyZWVuKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZS5ibHVlKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZS5hbHBoYSgpXSwKLSAgICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1h
dGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6YXJyYXldOworICAgIFtzdGF0
aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1
ZTpAW0AodmFsdWUucmVkKCkpLCBAKHZhbHVlLmdyZWVuKCkpLCBAKHZhbHVlLmJsdWUoKSksIEAo
dmFsdWUuYWxwaGEoKSldXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNl
dEZyb21WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiwgaW50IGludGVybmFs
RmlsdGVyUHJvcGVydHlJbmRleCkKIHsKLSAgICBSZXRhaW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZv
cm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxG
aWx0ZXJQcm9wZXJ0eUluZGV4KTsKKyAgICBhdXRvIHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6
OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9u
LmdldCgpKSBzZXRGcm9tVmFsdWU6dmFsdWUuZ2V0KCldOwogfQogCkBAIC00MjMsOCArNDA4LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0
IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHUKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24o
KSB8fCAhdmFsdWUuaXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBD
QUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmlt
YXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1h
dGlvbi5nZXQoKSk7CisgICAgYXV0byBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFz
aWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5t
X2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPiht
X2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOltvdGhlckFuaW1hdGlvbiBmcm9tVmFsdWVd
XTsKIH0KIApAQCAtNDMyLDE0ICs0MTYsMTMgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9u
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+
KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlXV07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlv
bi5nZXQoKSkgc2V0VG9WYWx1ZTpAKHZhbHVlKV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkK
IHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAg
W3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9W
YWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlXV07CiB9CiAKQEAgLTQ0
NywzMiArNDMwLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVl
KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9u
KCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUu
eCgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueSgpXSwKLSAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueigpXSwKLSAgICAgICAgbmls
XTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRUb1ZhbHVlOmFycmF5XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+
KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOkBbIEAodmFsdWUueCgpKSwgQCh2YWx1ZS55
KCkpLCBAKHZhbHVlLnooKSkgXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpzZXRUb1ZhbHVlKGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmlt
YXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2
YWx1ZS5yZWQoKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmdy
ZWVuKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ibHVlKCld
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKLSAg
ICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0
aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFycmF5XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOkBbQCh2YWx1ZS5yZWQoKSks
IEAodmFsdWUuZ3JlZW4oKSksIEAodmFsdWUuYmx1ZSgpKSwgQCh2YWx1ZS5hbHBoYSgpKV1dOwog
fQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9WYWx1ZShjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkK
IHsKLSAgICBSZXRhaW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZh
bHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsK
KyAgICBhdXRvIHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0
aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKICAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOnZh
bHVlLmdldCgpXTsKIH0KIApAQCAtNDgxLDcgKzQ1MSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hOjpjb3B5VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFs
dWUpCiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkgfHwgIXZhbHVlLmlzQmFzaWNBbmltYXRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0FCYXNpY0FuaW1hdGlvbiogb3RoZXJBbmlt
YXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOworICAgIGF1dG8gb3Ro
ZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxh
dGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtz
dGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFs
dWU6W290aGVyQW5pbWF0aW9uIHRvVmFsdWVdXTsKIH0KIApAQCAtNDkyLDkgKzQ2Miw5IEBAIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0
PiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKQotICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ld
XV07CisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2
YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byBudW1iZXIgOiB2YWx1ZSkKKyAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpAKG51bWJlcildOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUw
MywxMSArNDczLDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhj
b25zdCBWZWN0b3I8VHJhbnNmb3JtYXRpb25NYXRyaXg+JiB2YWwKICAgICBpZiAoYW5pbWF0aW9u
VHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJh
eSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlW2ldXV07Ci0KKyAgICBhdXRvIGFycmF5
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAg
Zm9yIChhdXRvJiBtYXRyaXggOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOm1hdHJpeF1dOwogICAgIFtzdGF0aWNfY2FzdDxD
QUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07
CiB9CiAKQEAgLTUxNiwxNiArNDg0LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUpCiAgICAgaWYgKGFu
aW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRh
YmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTlNBcnJheSogb2Jq
ZWN0ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLngoKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp2YWx1ZVtpXS55KCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWVbaV0ueigpXSwKLSAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIFth
cnJheSBhZGRPYmplY3Q6b2JqZWN0XTsKLSAgICB9CisgICAgYXV0byBhcnJheSA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byYg
cG9pbnQgOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAW0AocG9pbnQueCgpKSwg
QChwb2ludC55KCkpLCBAKHBvaW50LnooKSldXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFt
ZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOwogfQogCkBA
IC01MzQsMTcgKzQ5NSw5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPENvbG9yPiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAh
PSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTlNBcnJheSogb2JqZWN0ID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlW2ldLnJlZCgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlW2ldLmdyZWVuKCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6dmFsdWVbaV0uYmx1ZSgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOnZhbHVlW2ldLmFscGhhKCldLAotICAgICAgICAgICAgbmlsXTsKLSAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpvYmplY3RdOwotICAgIH0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBjb2xv
ciA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkBbQChjb2xvci5yZWQoKSksIEAo
Y29sb3IuZ3JlZW4oKSksIEAoY29sb3IuYmx1ZSgpKSwgQChjb2xvci5hbHBoYSgpKV1dOwogICAg
IFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNl
dFZhbHVlczphcnJheV07CiB9CiAKQEAgLTU1MywxMiArNTA2LDkgQEAgdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4+JgogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBSZXRhaW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZh
bHVlRm9yT3BlcmF0aW9uKHZhbHVlc1tpXS5nZXQoKSwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUlu
ZGV4KTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDp2YWx1ZS5nZXQoKV07Ci0gICAgfQorICAg
IGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWVzLnNp
emUoKV07CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykKKyAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24odmFsdWUu
Z2V0KCksIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkuZ2V0KCldOwogICAgIFtzdGF0aWNf
Y2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczph
cnJheV07CiB9CiAKQEAgLTU2NywzOSArNTE3LDM1IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkK
ICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lIHx8IHZhbHVlLmFuaW1hdGlvblR5
cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0FLZXlmcmFtZUFuaW1h
dGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4o
ZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0
KCkpOworICAgIGF1dG8gb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5p
bWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmlt
YXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczpbb3RoZXJBbmltYXRpb24gdmFsdWVzXV07CiB9CiAK
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2YWx1ZSkKIHsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7
ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0
OnZhbHVlW2ldXV07Ci0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvIHRpbWUgOiB2YWx1ZSkKKyAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpAKHRpbWUpXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlm
cmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczphcnJheV07CiB9
CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0
IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIENBS2V5ZnJhbWVBbmltYXRpb24q
IG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBhdXRv
IG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3Rh
dGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlU
aW1lczpbb3RoZXIga2V5VGltZXNdXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OnNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24q
PiYgdmFsdWUsIGJvb2wgcmV2ZXJzZSkKIHsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZS5zaXplKCk7ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1pbmdG
dW5jdGlvbih2YWx1ZVtpXSwgcmV2ZXJzZSldOwotCisgICAgYXV0byBhcnJheSA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1p
bmdGdW5jdGlvbihmdW5jdGlvbiwgcmV2ZXJzZSldOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZy
YW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRpbWluZ0Z1bmN0aW9uczphcnJh
eV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VGltaW5nRnVuY3Rp
b25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUtleWZy
YW1lQW5pbWF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihk
b3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQo
KSk7CisgICAgYXV0byBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihk
b3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQo
KSk7CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5n
ZXQoKSkgc2V0VGltaW5nRnVuY3Rpb25zOltvdGhlciB0aW1pbmdGdW5jdGlvbnNdXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUZpbHRlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KaW5kZXggZTFhZTVkOWI3NzEyMDQz
MjA2ZmNlZmFkNDllNGFiZjA1NjgwNzhlYi4uM2M0ZGNlMmFiM2IyZTA5MzU0YjhiNzQ0ZTkxM2Mz
MDZmNjA3NzZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCkBAIC0z
MjQsNyArMzI0LDcgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0
ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgaWYgKG9wZXJh
dGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAKLSAgICAgICAgdmFs
dWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOworICAgICAgICB2YWx1ZSA9
IEAoYW1vdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTRVBJQTogewpAQCAtMzYzLDcgKzM2Myw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0
Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0
CiAgICAgICAgIGlmIChvcGVyYXRpb24pCiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAg
ICAgICAgCi0gICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50
XTsKKyAgICAgICAgdmFsdWUgPSBAKGFtb3VudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewpAQCAtMzc0LDcgKzM3NCw3IEBA
IFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVy
YXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAg
ICAgICAgCiAgICAgICAgIGFtb3VudCA9IGRlZzJyYWQoYW1vdW50KTsKLSAgICAgICAgdmFsdWUg
PSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOworICAgICAgICB2YWx1ZSA9IEAo
YW1vdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpJTlZFUlQ6IHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZv
cm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAog
ICAgICAgICBpZiAob3BlcmF0aW9uKQogICAgICAgICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7
CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmFt
b3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91bnQpOwogI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1D
QUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAg
ICAgICBpZiAob3BlcmF0aW9uKQogICAgICAgICAgICAgYW1vdW50ID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5zdGREZXZpYXRp
b24oKSwgMCk7CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91bnQpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmYTA3
ZjZkOGZmYWI4N2RkODlkOWFiY2YyMDZmMWQzYjBhOTYzYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRmxvYXRSZWN0LmgiCisKKyNpZiAhUExB
VEZPUk0oTUFDKQorI2ltcG9ydCA8VUlLaXQvVUlHZW9tZXRyeS5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgcmVjdCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIFtOU1ZhbHVl
IHZhbHVlV2l0aFJlY3Q6cmVjdF07CisjZWxzZQorICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhDR1JlY3Q6cmVjdF07CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisKK0Zsb2F0UmVj
dDo6RmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYgcmVjdCkKKyAgICA6IG1fbG9jYXRpb24ocmVjdC5v
cmlnaW4pCisgICAgLCBtX3NpemUocmVjdC5zaXplKQoreworfQorCitGbG9hdFJlY3Q6Om9wZXJh
dG9yIE5TUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5TTWFrZVJlY3QoeCgpLCB5KCksIHdp
ZHRoKCksIGhlaWdodCgpKTsKK30KKworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTNjYWZhNTJhOTU2YTM3ZmJiNjUxNGQ1MDA2NDY5N2FkOGMxNDcxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29h
Lm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIK
KworI2lmICFQTEFURk9STShNQUMpCisjaW1wb3J0IDxVSUtpdC9VSUdlb21ldHJ5Lmg+CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpZCBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIFtOU1ZhbHVl
IHZhbHVlV2l0aFJlY3Q6cmVjdF07CisjZWxzZQorICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhDR1JlY3Q6cmVjdF07CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisKK0ludFJlY3Q6
Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5TTWFrZVJlY3QoeCgpLCB5
KCksIHdpZHRoKCksIGhlaWdodCgpKTsKK30KKworSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNv
bnN0IE5TUmVjdCYgcmVjdCkKK3sKKyAgICBpbnQgbGVmdCA9IGNsYW1wVG88aW50PihzdGQ6OmZs
b29yKHJlY3Qub3JpZ2luLngpKTsKKyAgICBpbnQgdG9wID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Zmxv
b3IocmVjdC5vcmlnaW4ueSkpOworICAgIGludCByaWdodCA9IGNsYW1wVG88aW50PihzdGQ6OmNl
aWwoTlNNYXhYKHJlY3QpKSk7CisgICAgaW50IGJvdHRvbSA9IGNsYW1wVG88aW50PihzdGQ6OmNl
aWwoTlNNYXhZKHJlY3QpKSk7CisgICAgcmV0dXJuIHsgbGVmdCwgdG9wLCByaWdodCAtIGxlZnQs
IGJvdHRvbSAtIHRvcCB9OworfQorCisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggMDA4ZGJkN2Qz
OWUwMjQ2YTc5ODFmNWI0NTIzYjJiY2RjMDM5YzFkMC4uM2ZlYzM3ODMyMjkxZjhiYTNmNjg3Y2Mw
YTIyYmI2YjYyNWIyZDU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0xNjcsNyArMTY3LDcgQEAgLSAodm9pZClk
aXNwbGF5CiAgICAgICAgIGlmIChfbGF0Y2hlZFBidWZmZXIpIHsKIAogICAgICAgICAgICAgR0NH
TGVudW0gdGV4dHVyZSA9IF9jb250ZXh0LT5wbGF0Zm9ybVRleHR1cmUoKTsKLSAgICAgICAgICAg
IGdsOjpCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbDo6QmluZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQsIHRleHR1cmUpOwogICAgICAgICAg
ICAgaWYgKCFFR0xfUmVsZWFzZVRleEltYWdlKF9lZ2xEaXNwbGF5LCBfbGF0Y2hlZFBidWZmZXIs
IEVHTF9CQUNLX0JVRkZFUikpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVy
cm9yLgogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0yMjYsNyArMjI2LDcg
QEAgLSAodm9pZClhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXplOihXZWJDb3Jl
OjpJbnRTaXplKXNpemUgdXNpbmdBbHBoYToKICAgICAgICAgRUdMX1dJRFRILCBzaXplLndpZHRo
KCksCiAgICAgICAgIEVHTF9IRUlHSFQsIHNpemUuaGVpZ2h0KCksCiAgICAgICAgIEVHTF9JT1NV
UkZBQ0VfUExBTkVfQU5HTEUsIDAsCi0gICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgR3JhcGhp
Y3NDb250ZXh0R0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQsCisgICAgICAgIEVHTF9URVhU
VVJFX1RBUkdFVCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkVHTElPU3VyZmFjZVRleHR1
cmVUYXJnZXQsCiAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgdXNp
bmdBbHBoYSA/IEdMX0JHUkFfRVhUIDogR0xfUkdCLAogICAgICAgICBFR0xfVEVYVFVSRV9GT1JN
QVQsIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsIEdM
X1VOU0lHTkVEX0JZVEUsCkBAIC0yNjAsNyArMjYwLDcgQEAgLSAodm9pZCliaW5kRnJhbWVidWZm
ZXJUb05leHRBdmFpbGFibGVTdXJmYWNlCiAjZWxpZiBVU0UoQU5HTEUpCiAgICAgR0NHTGVudW0g
dGV4dHVyZSA9IF9jb250ZXh0LT5wbGF0Zm9ybVRleHR1cmUoKTsKIAotICAgIGdsOjpCaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7
CisgICAgZ2w6OkJpbmRUZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZh
Y2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKIAogICAgIGlmIChfbGF0Y2hlZFBidWZmZXIpIHsK
ICAgICAgICAgaWYgKCFFR0xfUmVsZWFzZVRleEltYWdlKF9lZ2xEaXNwbGF5LCBfbGF0Y2hlZFBi
dWZmZXIsIEVHTF9CQUNLX0JVRkZFUikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCmluZGV4IGNlM2Y4ZGIxYzEyYTA5MDlk
YmY1NWRjODVkNjQ5MGU5Yzg4OWI2MmUuLjRmMDhjYTA2ZDI0ZTlkYzNmYTA0MzQxOGMzY2JmYzI4
Mjc2ZWUxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9Gb250Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0ZvbnRDYWNoZUlPUy5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5PiBzeXN0ZW1Gb250TW9kaWZpY2F0aW9uQXR0cmlidXRlcyhGb250U2VsZWN0
aW9uVmFsCiAgICAgW3RyYWl0c0RpY3Rpb25hcnkgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OnN0YXRp
Y19jYXN0PE5TU3RyaW5nICo+KGtDVEZvbnRVSUZvbnREZXNpZ25UcmFpdCldOwogCiAgICAgaWYg
KGl0YWxpYykKLSAgICAgICAgW3RyYWl0c0RpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoSW50OmtDVEZvbnRJdGFsaWNUcmFpdF0gZm9yS2V5OnN0YXRpY19jYXN0PE5TU3Ry
aW5nICo+KGtDVEZvbnRTeW1ib2xpY1RyYWl0KV07CisgICAgICAgIFt0cmFpdHNEaWN0aW9uYXJ5
IHNldE9iamVjdDpAKGtDVEZvbnRJdGFsaWNUcmFpdCkgZm9yS2V5OnN0YXRpY19jYXN0PE5TU3Ry
aW5nICo+KGtDVEZvbnRTeW1ib2xpY1RyYWl0KV07CiAKICAgICByZXR1cm4gQHsgc3RhdGljX2Nh
c3Q8TlNTdHJpbmcgKj4oa0NURm9udFRyYWl0c0F0dHJpYnV0ZSkgOiB0cmFpdHNEaWN0aW9uYXJ5
LmdldCgpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRmxvYXRSZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0UmVjdE1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkMzQ4
YWNjYmJlNDQxODUxZWFlYWFlY2FjOWVkYjY2ZGZlMTFmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRmxvYXRSZWN0TWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1F
X0FTX0NHR0VPTUVUUllfVFlQRVMKLQotRmxvYXRSZWN0OjpGbG9hdFJlY3QoY29uc3QgTlNSZWN0
JiByKSA6IG1fbG9jYXRpb24oci5vcmlnaW4pLCBtX3NpemUoci5zaXplKQotewotfQotCi1GbG9h
dFJlY3Q6Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE5TTWFrZVJlY3Qo
eCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKTsKLX0KLQotI2VuZGlmCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCi0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbnRSZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFiOTYxZWI4MzcwNDk1NjkxNjNlNjkxZDcwMTMyM2VjYTA1NjM2MmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpZm5kZWYgTlNHRU9NRVRSWV9U
WVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKLQotSW50UmVjdDo6b3BlcmF0b3IgTlNSZWN0
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVp
Z2h0KCkpOwotfQotCi1JbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNSZWN0JiByZWN0
KQotewotICAgIGludCBsID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYocmVjdC5vcmlnaW4ueCkp
OwotICAgIGludCB0ID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYocmVjdC5vcmlnaW4ueSkpOwot
ICAgIGludCByID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsZihOU01heFgocmVjdCkpKTsKLSAgICBp
bnQgYiA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYoTlNNYXhZKHJlY3QpKSk7Ci0gICAgcmV0dXJu
IEludFJlY3QobCwgdCwgciAtIGwsIGIgLSB0KTsKLX0KLQotI2VuZGlmCi0jZW5kaWYKLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KaW5kZXggYzBlMWYyZGE2YjMyOThjNzYwYWNjNTUxMWU0NmU4OTFiYjJjZTk5ZC4uYmFh
MjU1NTA4YzM4MDg2YWM2MGM0ZTEwMjkxYTEzYzczNjE1MWQ0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zOSwx
MyArMzksMTUgQEAKICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
SW1hZ2UuaD4KICNpbXBvcnQgPFVJS2l0L1VJUGFzdGVib2FyZC5oPgotI2ltcG9ydCA8cGFsL2lv
cy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2lt
cG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3
dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5o
PgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCisjaW1wb3J0IDxwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaD4KKwogI2RlZmluZSBQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklE
RVJTIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhKFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRG
T1JNKEFQUExFVFYpKSkKICNkZWZpbmUgUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05f
U1RZTEVfQU5EX1RFQU1fREFUQSAoUEFTVEVCT0FSRF9TVVBQT1JUU19JVEVNX1BST1ZJREVSUyAm
JiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQogI2RlZmluZSBOU1VSTF9TVVBQT1JUU19USVRMRSAo
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKQEAgLTc0LDggKzc2LDcgQEAgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKIHsKLSAgICBmb3IgKE5T
U3RyaW5nICpwYXN0ZWJvYXJkVHlwZSBpbiBbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10p
Ci0gICAgICAgIHR5cGVzLmFwcGVuZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgdHlwZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKQEAgLTU4NywxMCArNTg4LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmEKICAgICAgICAgICAgIC8vIGV2ZW50cywgd2UgbmVlZCBhbiBhZGRpdGlvbmFsIGluLW1lbW9y
eSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcnJheSB0aGF0IGNvbnRh
aW5zCiAgICAgICAgICAgICAvLyBhbGwgb2YgdGhlIGN1c3RvbSB0eXBlcy4gV2UgdXNlIHRoZSB0
ZWFtRGF0YSBwcm9wZXJ0eSwgYXZhaWxhYmxlIG9uIE5TSXRlbVByb3ZpZGVyIG9uIGlPUywgdG8g
c3RvcmUKICAgICAgICAgICAgIC8vIHRoaXMgaW5mb3JtYXRpb24sIHNpbmNlIHRoZSBjb250ZW50
cyBvZiB0ZWFtRGF0YSBhcmUgaW1tZWRpYXRlbHkgYXZhaWxhYmxlIHByaW9yIHRvIHRoZSBkcm9w
LgotICAgICAgICAgICAgTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKnR5cGVzQXNOU0FycmF5
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IGRhdGEub3JkZXJlZFR5cGVzKCkpCi0gICAgICAgICAgICAgICAgW3R5cGVzQXNOU0FycmF5IGFk
ZE9iamVjdDp0eXBlXTsKLSAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqdGVhbURhdGFEaWN0aW9u
YXJ5ID0gQHsgQChvcmlnaW5LZXlGb3JUZWFtRGF0YSkgOiBkYXRhLm9yaWdpbigpLCBAKGN1c3Rv
bVR5cGVzS2V5Rm9yVGVhbURhdGEpIDogdHlwZXNBc05TQXJyYXkgfTsKKyAgICAgICAgICAgIE5T
RGljdGlvbmFyeSAqdGVhbURhdGFEaWN0aW9uYXJ5ID0gQHsgQChvcmlnaW5LZXlGb3JUZWFtRGF0
YSkgOiBkYXRhLm9yaWdpbigpLCBAKGN1c3RvbVR5cGVzS2V5Rm9yVGVhbURhdGEpIDogY3JlYXRl
TlNBcnJheShkYXRhLm9yZGVyZWRUeXBlcygpKS5nZXQoKSB9OwogICAgICAgICAgICAgaWYgKE5T
RGF0YSAqdGVhbURhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2Jq
ZWN0OnRlYW1EYXRhRGljdGlvbmFyeSByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51
bGxwdHJdKSB7CiAgICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0
VGVhbURhdGE6dGVhbURhdGFdOwogICAgICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6c2VyaWFsaXplZFNoYXJlZEJ1ZmZlci5nZXQoKSBmb3JUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CkBAIC03NTMsMTEgKzc1MSw3IEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHR5CiAgICAgaWYgKCFbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IodXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOildKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSAqdHlwZXNBcnJheSA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp0eXBlcy5zaXplKCldOwotICAgIGZvciAoY29uc3Qg
YXV0byYgdHlwZSA6IHR5cGVzKQotICAgICAgICBbdHlwZXNBcnJheSBhZGRPYmplY3Q6KE5TU3Ry
aW5nICopdHlwZV07Ci0KLSAgICBbbV9wYXN0ZWJvYXJkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVyczp0eXBlc0FycmF5XTsKKyAgICBbbV9wYXN0ZWJvYXJkIHVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVyczpjcmVhdGVOU0FycmF5KHR5cGVzKS5nZXQoKV07CiB9CiAKIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0KaW5kZXggNzE5M2I2NWJlYmU0OWE1MDQwZGQ4ZDgxMThlYmEwZmVm
NWIyYTg2YS4uYjgxNjMwOGI1OTZlYzkzZjNjYzg0OWExMjlkMGU5MzExMjVmODI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KQEAgLTUxOCw3ICs1MTgsNyBAQCAtIChOU0FycmF5PF9fa2luZG9mIE5TSXRl
bVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycwogCiAtICh2b2lkKXNldEl0ZW1Qcm92aWRlcnM6
KE5TQXJyYXk8X19raW5kb2YgTlNJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJzCiB7Ci0g
ICAgaXRlbVByb3ZpZGVycyA9IGl0ZW1Qcm92aWRlcnMgPzogW05TQXJyYXkgYXJyYXldOworICAg
IGl0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJzID86IEBbIF07CiAgICAgaWYgKF9pdGVtUHJv
dmlkZXJzID09IGl0ZW1Qcm92aWRlcnMgfHwgW19pdGVtUHJvdmlkZXJzIGlzRXF1YWxUb0FycmF5
Oml0ZW1Qcm92aWRlcnNdKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBlMzM1ZDc1YmRjYTRmYTc5ZTVmM2RkMDI5YTA2
OGMzNGI2N2QzNjFmLi4yNDdmOTJmZTlhZDMzZjMzNjk0YzM5MmI1YTJiOWI5NjBiNTZhODBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC0yODQsMTUg
KzI4NCwxNSBAQCAtIChOU0FycmF5ICopc3Vidmlld3MKIHsKICAgICBDRkFycmF5UmVmIHN1YnZp
ZXdzID0gV0tWaWV3R2V0U3Vidmlld3MoW3NlbGYgX3ZpZXdSZWZdKTsKICAgICBpZiAoIXN1YnZp
ZXdzKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFsg
XTsKICAgICAKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHN1YnZpZXdzKTsK
ICAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAg
ICAgICAgcmV0dXJuIEBbIF07CiAgICAgCiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3VudF07CiAgICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAWyBdOwog
ICAgIAogICAgIENGQXJyYXlBcHBseUZ1bmN0aW9uKHN1YnZpZXdzLCBDRlJhbmdlTWFrZSgwLCBj
b3VudCksIF9XQUtDb3B5V3JhcHBlciwgKHZvaWQqKXJlc3VsdCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRl
eCBjOTY0ZjQxZjQxOTFkZGExNDFiYjJkZGMwMjQ2MTBhY2EwMmY0ZmM0Li4wNzYyN2YxY2I0MjQ3
OGJkNjMzMTlkZTZjZmJhMzNmNzM2OWRkYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0
IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2lt
cG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3
LDEwICs1OCw3IEBAIFBsYXRmb3JtUGFzdGVib2FyZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiB7Ci0gICAgTlNBcnJheSAqcGFzdGVib2FyZFR5
cGVzID0gW21fcGFzdGVib2FyZC5nZXQoKSB0eXBlc107Ci0KLSAgICBmb3IgKE5TVUludGVnZXIg
aSA9IDA7IGkgPCBbcGFzdGVib2FyZFR5cGVzIGNvdW50XTsgaSsrKQotICAgICAgICB0eXBlcy5h
cHBlbmQoW3Bhc3RlYm9hcmRUeXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICB0eXBlcyA9IG1h
a2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkLmdldCgpIHR5cGVzXSk7CiB9CiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQpAQCAtOTUsMTMgKzkzLDEyIEBAIGludCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewotICAgIE5TQXJyYXkqIHBhdGhzID0gW21f
cGFzdGVib2FyZC5nZXQoKSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAg
ICBpZCBwYXRocyA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgcHJvcGVydHlMaXN0Rm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKFtwYXRocyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKSB7CiAgICAgICAgIHBhdGhuYW1lcy5hcHBlbmQoKE5TU3RyaW5nICopcGF0aHMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtwYXRo
cyBjb3VudF07IGkrKykKLSAgICAgICAgcGF0aG5hbWVzLmFwcGVuZChbcGF0aHMgb2JqZWN0QXRJ
bmRleDppXSk7CisgICAgcGF0aG5hbWVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHBhdGhzKTsKIH0K
IAogc3RhdGljIGJvb2wgcGFzdGVib2FyZE1heUNvbnRhaW5GaWxlUGF0aHMoTlNQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkKQpAQCAtMzE3LDI0ICszMTQsMTYgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCkKIAogaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFzdGVib2FyZFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICBbdHlwZXMuZ2V0KCkgYWRk
T2JqZWN0OnBhc3RlYm9hcmRUeXBlc1tpXV07Ci0KLSAgICByZXR1cm4gW21fcGFzdGVib2FyZC5n
ZXQoKSBhZGRUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpuaWxdOworICAgIHJldHVybiBbbV9wYXN0
ZWJvYXJkLmdldCgpIGFkZFR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQo
KSBvd25lcjpuaWxdOwogfQogCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKIHsKLSAgICBhdXRvIHR5cGVz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChhdXRv
JiBwYXN0ZWJvYXJkVHlwZSA6IHBhc3RlYm9hcmRUeXBlcykgewotICAgICAgICBpZiAoIWNhbldy
aXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKSB7Ci0gICAgICAgICAgICBbdHlwZXMg
cmVtb3ZlQWxsT2JqZWN0c107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBbdHlwZXMgYWRkT2JqZWN0OnBhc3RlYm9hcmRUeXBlXTsKKyAgICAgICAgaWYgKCFjYW5Xcml0
ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBbbV9w
YXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW10gb3duZXI6bmlsXTsKICAgICB9Ci0gICAgcmV0dXJu
IFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOnR5cGVzLmdldCgpIG93bmVyOm5pbF07CisgICAg
cmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2Fy
ZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGls
aXRpZXMuaAppbmRleCBhYmYyYmYxMzA4YWZkY2VkZWRiNTNhNTExOTFjZWZjNDExY2ViYmE1Li5j
YmM2NjZlNWVjN2IwNDY4OWQ3NzAwMmQ3MzExOGVmNTI0YmNjODYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCkBAIC0zMiw4ICszMiw0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBzdHJpbmdNYXRjaGVzV2ls
ZGNhcmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmdUb0JlTWF0Y2hlZCwgY29uc3QgU3RyaW5n
JiB3aWxkY2FyZFN0cmluZyk7CiAKLSNpZmRlZiBfX09CSkNfXwotV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8
TlNTdHJpbmcgKj4gKik7Ci0jZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKLQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggZjFmNTZi
MzA4N2QwZTA5MTFmMTgwZTU1MzIwNjZmYjBkYTFlNmE5ZS4uN2NkMWJkODBhZTllMzNlNzU2ZjY1
OTEyMjQwZjdlZDZjYzMzYzViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLm1tCkBAIC01OSwxNSArNTksNCBAQCBib29sIHN0cmluZ01hdGNoZXNX
aWxkY2FyZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiB3aWxkY2Fy
ZFN0cgogICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKHdpbGRjYXJkUmVn
ZXhQYXR0ZXJuU3RyaW5nKHdpbGRjYXJkU3RyaW5nKSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vu
c2l0aXZlKS5tYXRjaChzdHJpbmcpICE9IC0xOwogfQogCi1WZWN0b3I8U3RyaW5nPiB3ZWJDb3Jl
U3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXkoTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJp
bmdBcnJheSkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdWZWN0b3I7Ci0gICAgc3RyaW5n
VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW25zU3RyaW5nQXJyYXkgY291bnRdKTsKLQot
ICAgIGZvciAoTlNTdHJpbmcgKm5zU3RyaW5nIGluIG5zU3RyaW5nQXJyYXkpCi0gICAgICAgIHN0
cmluZ1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQobnNTdHJpbmcpOwotCi0gICAgcmV0dXJuIHN0cmlu
Z1ZlY3RvcjsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW0KaW5kZXggMzgzNjhlYzI0N2RkMDA0NGFiOWRhYWU4ZGY2NDA1OTBk
ZDAyMDI4Yi4uYzc1ZDIwZjBmNzc1NjE3OWQ0ZjlkODAyODFlY2E0NDhlZDIwMGI4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBA
IC0zMSw3ICszMSw2IEBACiAKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAj
aW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2lt
cG9ydCA8dW5pY29kZS91Y2hhci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDIzMzU0ZjQ3ODRkZTA5MmYwNDg3YzE4NTRm
YzViMjZhNWUyMjExYWMuLjQ0ZmZkYzBiNzUzZjNmN2QyOGZjNmZkNDc4Njk5ZDcyZTRlZGQ3ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBBU1NFUlQoIW1fdmlk
ZW9JbnB1dCk7CiAgICAgCiAgICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMg
PSBAewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKKyAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRS
YXRlS2V5IDogQCh3aWR0aCAqIGhlaWdodCAqIDEyKSwKICAgICAgICAgQVZWaWRlb0V4cGVjdGVk
U291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCiAgICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUlu
dGVydmFsS2V5IDogQCgxMjApLAogICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZW
aWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCkBAIC0xNzAsOCArMTcwLDggQEAgYm9v
bCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiAKICAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewogICAgICAg
ICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0
aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVp
Z2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAorICAgICAgICBBVlZpZGVv
V2lkdGhLZXk6IEAod2lkdGgpLAorICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBAKGhlaWdodCks
CiAgICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJv
cGVydGllcwogICAgIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXgg
MTNlZGMzNTVhNTM1ODM2YTY2ODUwMTI3ODgzOWIyOTBmNDc4MzUyYy4uZjE3N2UwOTY3YWY3NTlk
ODU5Y2RlYjU4OTQ4NDk2ZDA1ZjI0NjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5t
bQpAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2Fw
dHVyZVNlc3Npb24oKQogICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CiAK
ICAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ2FwdHVyZVZpZGVvRGF0
YU91dHB1dEluc3RhbmNlKCkgaW5pdF0pOwotICAgIGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5ID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmF2VmlkZW9DYXB0dXJlUGl4ZWxCdWZmZXJGb3Jt
YXQoKV0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdKTsKKyAgICBhdXRv
IHNldHRpbmdzRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOiBAKGF2VmlkZW9DYXB0dXJlUGl4ZWxCdWZmZXJGb3Jt
YXQoKSksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdKTsKIAogICAgIFtt
X3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpXTsK
ICAgICBbbV92aWRlb091dHB1dCBzZXRBbHdheXNEaXNjYXJkc0xhdGVWaWRlb0ZyYW1lczpZRVNd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29r
aWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2ll
Q29jb2EubW0KaW5kZXggZjY3NmEyNDU1OGQ4OTgwZmYyMTI1MjEzODQ0NDFhM2Y0ZWJlMzE5MS4u
Yzk3YWViZDdkZjhmMGJhZDI2OTE0MmFlZTNmNTJkM2JlMDdkMzE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCkBAIC0x
NzUsNyArMTc1LDcgQEAgQ29va2llOjpvcGVyYXRvciBOU0hUVFBDb29raWUgKiBfTnVsbGFibGUg
KCkgY29uc3QKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBb
cHJvcGVydGllcyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6Y3JlYXRlZCAv
IDEwMDAuMCAtIE5TVGltZUludGVydmFsU2luY2UxOTcwXSBmb3JLZXk6QCJDcmVhdGVkIl07Cisg
ICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OkAoY3JlYXRlZCAvIDEwMDAuMCAtIE5TVGltZUludGVy
dmFsU2luY2UxOTcwKSBmb3JLZXk6QCJDcmVhdGVkIl07CiAjZW5kaWYKIAogICAgIGF1dG8qIHBv
cnRTdHJpbmcgPSBwb3J0U3RyaW5nRnJvbVZlY3Rvcihwb3J0cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCBiZDBmZDY3NTM4ODI1YmUwODFjNzk1YzQ4N2YyNjEw
MWQ4YzM0ZmQ1Li5jNGJkNWVmYmFjYmFkYTBjZWEyZTgwZmM4NTcxOGQ2YTE2NzZlMmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lUwogICAgIFN0cmluZyBjb29raWVTdHJpbmcgPSBjb29raWVT
dHIuY29udGFpbnMoJz0nKSA/IGNvb2tpZVN0ciA6IGNvb2tpZVN0ciArICI9IjsKIAogICAgIE5T
VVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JLZXk6QCJT
ZXQtQ29va2llIl07CisgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBAeyBAIlNldC1D
b29raWUiOiBjb29raWVTdHJpbmcgfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU0FycmF5
ICp1bmZpbHRlcmVkQ29va2llcyA9IFtOU0hUVFBDb29raWUgX3BhcnNlZENvb2tpZXNXaXRoUmVz
cG9uc2VIZWFkZXJGaWVsZHM6aGVhZGVyRmllbGRzIGZvclVSTDpjb29raWVVUkxdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggZDZlZWVmZGQ4Yzk2ZDM4ODljZmU2ZGU5NGYyNWQ1YmNh
Y2ZlY2Y3Mi4uNzY2ZWEzYjgyZjU4NWFmMTZhZmRhYmUxMmFjYTg3Mjg2MjQ0MGJkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OnNpdGVGb3JDb29raWVzKG1f
c2FtZVNpdGVEaXNwb3NpdGlvbiwgbnNSZXF1ZXN0LlVSTCkgZm9yS2V5OkAiX2tDRkhUVFBDb29r
aWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIl07Ci0gICAgW25zUmVxdWVzdCBfc2V0UHJv
cGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1faXNUb3BTaXRlXSBmb3JLZXk6QCJfa0NG
SFRUUENvb2tpZVBvbGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKKyAgICBbbnNS
ZXF1ZXN0IF9zZXRQcm9wZXJ0eTptX2lzVG9wU2l0ZSA/IEBZRVMgOiBATk8gZm9yS2V5OkAiX2tD
RkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eUlzVG9wTGV2ZWxOYXZpZ2F0aW9uIl07CiAjZW5kaWYK
IAogICAgIC8vIENhbm5vdCBqdXN0IHVzZSBzZXRBbGxIVFRQSGVhZGVyRmllbGRzIGhlcmUsIGJl
Y2F1c2UgaXQgZG9lcyBub3QgcmVtb3ZlIGhlYWRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NDNkZjUyZGFlNWZhMDM4ODVkMDcwOWE3ZTc0ZDM4YzgyODI3M2QyZC4uNjI2ZmViNTIyOGMxZGY4
MjEyMGM0OWM2OGFmYzFlMDQ0MjdkMjI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNTIsNyAr
NTIsNiBAQAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OYWtlZFJl
Zi5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1
bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCBlY2JiNzk3Nzc2YzJiOGY5
NzE2NWMzMzllZjA0ZmZiZjQ5NGE2OGQ5Li42ODRmZDg4Nzk3NjUzZjQ4Y2IzNmM0NWRiMjA4MTdm
NGMyYWU4NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKICNp
bXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlZ3VsYXJFeHBy
ZXNzaW9uLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW0KaW5kZXggMTNiOWFkYTYxMDJjNjQxZTIyNzcxYWVlYTQ2NGQxZDBiYWQ2NDc2Mi4uMjcwM2Iy
OGIxZjM2NGMyY2IxMzFlYzEwMWRiNzAyMWRmMDJjMmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtNTYsNiArNTYs
NyBAQAogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiBjb25zdCBDRlN0cmluZ1JlZiBrTFNQbHVnSW5CdW5kbGVJZGVudGlmaWVyS2V5ID0g
Q0ZTVFIoIkxTUGx1Z0luQnVuZGxlSWRlbnRpZmllcktleSIpOwogCkBAIC0yNTYsMTIgKzI1Nyw3
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VkTlNDb25jcmV0ZVRhc2tfbGF1bmNoKE5TVGFzayAqc2Vs
ZiwgU0VMIF9jbWQpCiB7CiAgICAgU3RyaW5nIGxhdW5jaFBhdGggPSBzZWxmLmxhdW5jaFBhdGg7
CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2VsZi5hcmd1bWVudHMuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcg
KmFyZ3VtZW50IGluIHNlbGYuYXJndW1lbnRzKQotICAgICAgICBhcmd1bWVudHMudW5jaGVja2Vk
QXBwZW5kKGFyZ3VtZW50KTsKLQotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5s
YXVuY2hQcm9jZXNzKGxhdW5jaFBhdGgsIGFyZ3VtZW50cykpCisgICAgaWYgKFBsdWdpblByb2Nl
c3M6OnNpbmdsZXRvbigpLmxhdW5jaFByb2Nlc3MobGF1bmNoUGF0aCwgbWFrZVZlY3RvcjxTdHJp
bmc+KHNlbGYuYXJndW1lbnRzKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TQ29uY3JldGVU
YXNrX2xhdW5jaChzZWxmLCBfY21kKTsKQEAgLTI3MSwxNiArMjY3LDggQEAgc3RhdGljIE5TUnVu
bmluZ0FwcGxpY2F0aW9uICooKk5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0
aW9uc19jb25maWcKIAogc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29y
a3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc19jb25maWd1cmF0aW9uX2Vycm9y
KE5TV29ya3NwYWNlICpzZWxmLCBTRUwgX2NtZCwgTlNVUkwgKnVybCwgTlNXb3Jrc3BhY2VMYXVu
Y2hPcHRpb25zIG9wdGlvbnMsIE5TRGljdGlvbmFyeSAqY29uZmlndXJhdGlvbiwgTlNFcnJvciAq
KmVycm9yKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50czsKICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIGlmIChOU0FycmF5ICphcmd1bWVudHNBcnJh
eSA9IFtjb25maWd1cmF0aW9uIG9iamVjdEZvcktleTpOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3Vy
YXRpb25Bcmd1bWVudHNdKSB7Ci0gICAgICAgIGlmIChbYXJndW1lbnRzQXJyYXkgaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBhcnJheV1dKSB7Ci0gICAgICAgICAgICBmb3IgKE5TU3RyaW5nICphcmd1
bWVudCBpbiBhcmd1bWVudHNBcnJheSkgewotICAgICAgICAgICAgICAgIGlmIChbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgYXJn
dW1lbnRzLmFwcGVuZChhcmd1bWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
CisgICAgYXV0byBhcmd1bWVudHMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW2NvbmZpZ3VyYXRpb24g
b2JqZWN0Rm9yS2V5Ok5TV29ya3NwYWNlTGF1bmNoQ29uZmlndXJhdGlvbkFyZ3VtZW50c10pOwog
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKFBsdWdpblBy
b2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5n
KCksIGFyZ3VtZW50cykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCmluZGV4IGYyMzM4YjhjYzAxNzVjMmQwNmU2N2M5OGMzNTQ0NTg3NmI0NDQ5OGQuLjMxMzA4
ODY2NTI1ZjYxOGI4ZjYxOGE2ZDU3OWRiODczNjA3MDBlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzIsMTAgKzMyLDEyIEBACiAjaW1wb3J0ICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgot
I2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxX
ZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYUFkZGl0aW9ucy5t
bT4KQEAgLTEzMSwxNCArMTMzLDYgQEAgc3RhdGljIFBLTWVyY2hhbnRDYXBhYmlsaXR5IHRvUEtN
ZXJjaGFudENhcGFiaWxpdGllcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3MKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvU3VwcG9ydGVkTmV0
d29ya3MoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZE5ldHdvcmtzKQotewotICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OnN1cHBvcnRlZE5ldHdvcmtzLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgc3VwcG9ydGVk
TmV0d29yayA6IHN1cHBvcnRlZE5ldHdvcmtzKQotICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpz
dXBwb3J0ZWROZXR3b3JrXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBzdGF0aWMgUEtTaGlw
cGluZ1R5cGUgdG9QS1NoaXBwaW5nVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6U2hpcHBpbmdUeXBlIHNoaXBwaW5nVHlwZSkKIHsKICAgICBzd2l0Y2ggKHNoaXBw
aW5nVHlwZSkgewpAQCAtMjEyLDcgKzIwNiw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0
PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChjCiAg
ICAgW3Jlc3VsdCBzZXRSZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOnRvUEtDb250YWN0Rmll
bGRzKHBheW1lbnRSZXF1ZXN0LnJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMoKSkuZ2V0KCld
OwogICAgIFtyZXN1bHQgc2V0UmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHM6dG9QS0NvbnRh
Y3RGaWVsZHMocGF5bWVudFJlcXVlc3QucmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMoKSku
Z2V0KCldOwogCi0gICAgW3Jlc3VsdCBzZXRTdXBwb3J0ZWROZXR3b3Jrczp0b1N1cHBvcnRlZE5l
dHdvcmtzKHBheW1lbnRSZXF1ZXN0LnN1cHBvcnRlZE5ldHdvcmtzKCkpLmdldCgpXTsKKyAgICBb
cmVzdWx0IHNldFN1cHBvcnRlZE5ldHdvcmtzOmNyZWF0ZU5TQXJyYXkocGF5bWVudFJlcXVlc3Qu
c3VwcG9ydGVkTmV0d29ya3MoKSkuZ2V0KCldOwogICAgIFtyZXN1bHQgc2V0TWVyY2hhbnRDYXBh
YmlsaXRpZXM6dG9QS01lcmNoYW50Q2FwYWJpbGl0aWVzKHBheW1lbnRSZXF1ZXN0Lm1lcmNoYW50
Q2FwYWJpbGl0aWVzKCkpXTsKIAogICAgIFtyZXN1bHQgc2V0U2hpcHBpbmdUeXBlOnRvUEtTaGlw
cGluZ1R5cGUocGF5bWVudFJlcXVlc3Quc2hpcHBpbmdUeXBlKCkpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViRXJyb3JzQ29jb2EubW0KaW5kZXggNmY5ZmRiMDBlY2Q0YWFjMzMx
NzkyNjg4YjcyMDVjNGEwZDA2NDZiNy4uNzRlYzlhYzJhZDkxNjI1YWEwZmU3NDFlYzI3N2Q0ZmIy
YzVkM2UxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViRXJyb3Jz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViRXJyb3JzQ29jb2Eu
bW0KQEAgLTI2LDMzICsyNiwyOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJF
cnJvcnMuaCIKIAotI2ltcG9ydCAiQVBJRXJyb3IuaCIKLSNpbXBvcnQgIldLRXJyb3JSZWYuaCIK
LSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3IoTlNTdHJpbmcqIGRvbWFpbiwgaW50IGNv
ZGUsIE5TVVJMICpVUkwpCitzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3Io
TlNTdHJpbmcgKmRvbWFpbiwgaW50IGNvZGUsIE5TVVJMICpVUkwpCiB7Ci0gICAgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czoKLSAgICAgICAgVVJMLCBAIk5TRXJyb3JGYWlsaW5nVVJMS2V5IiwKLSAgICAgICAgW1VSTCBh
YnNvbHV0ZVN0cmluZ10sIEAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiLAotICAgICAgICBu
aWxdOwotCisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7CisgICAgICAgIEAiTlNFcnJv
ckZhaWxpbmdVUkxLZXkiOiBVUkwsCisgICAgICAgIEAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdL
ZXkiOiBVUkwuYWJzb2x1dGVTdHJpbmcsCisgICAgfTsKICAgICByZXR1cm4gYWRvcHROUyhbW05T
RXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmRvbWFpbiBjb2RlOmNvZGUgdXNlckluZm86dXNl
ckluZm9dKTsKIH0KIAotUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihjcmVhdGVOU0Vycm9yKE5TVVJMRXJyb3JEb21haW4sIE5TVVJMRXJyb3JD
YW5jZWxsZWQsIHJlcXVlc3QudXJsKCkpLmdldCgpKTsKKyAgICByZXR1cm4gY3JlYXRlTlNFcnJv
cihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9yQ2FuY2VsbGVkLCByZXF1ZXN0LnVybCgpKS5n
ZXQoKTsKIH0KIAotUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2Vz
Tm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihjcmVhdGVOU0Vycm9yKE5TVVJMRXJyb3JEb21h
aW4sIE5TVVJMRXJyb3JGaWxlRG9lc05vdEV4aXN0LCByZXNwb25zZS51cmwoKSkuZ2V0KCkpOwor
ICAgIHJldHVybiBjcmVhdGVOU0Vycm9yKE5TVVJMRXJyb3JEb21haW4sIE5TVVJMRXJyb3JGaWxl
RG9lc05vdEV4aXN0LCByZXNwb25zZS51cmwoKSkuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRU
eXBlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5k
ZXggNzAxMzI4MWVjMzRiYmY0YTU4ZTAyMzBmNGU4ZjQ0OWNmNDlkNDQzMS4uZGZkNGI2MGViOWU4
ZGYxZWFkYWYwMjQ3ZTliMmQyYjBkNDZjODI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvUGFzdGVib2FyZFR5cGVzLm1tCkBAIC00NiwzMiArNDYsMzIgQEAgc3RhdGljIGlubGluZSBO
U0FycmF5ICpyZXRhaW4oTlNBcnJheSAqYXJyYXkpCiAgICAgCiBOU0FycmF5KiBQYXN0ZWJvYXJk
VHlwZXM6OmZvckVkaXRpbmcoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlk
Z2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0
ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgp
LCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRG
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlUE5HLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4o
QFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFy
Y2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2FyZFR5cGUoKSwKKyAgICAgICAgV2Vi
Q29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVi
b2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBOR10pOwogICAgIHJldHVy
biB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JVUkwoKQogewotICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3Jl
OjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlw
ZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxz
V2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCks
IFdlYlVSTFBib2FyZFR5cGUsICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5
U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwog
ICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFn
ZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxz
V2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCks
IFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMg
PSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJheSog
UGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIE5T
QXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6V2ViQ29yZTo6
bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwg
V2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2Vi
VVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlw
ZSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViQ29yZTo6
bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwg
V2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2Vi
VVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlw
ZV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpm
b3JTZWxlY3Rpb24oKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5pbF0pOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBl
cyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bh
c3RlYm9hcmRUeXBlKCldKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlz
dFN0b3JlLm1tCmluZGV4IDFkMDA4M2M1N2NiZWE5N2RlYjdiOTBlZGNiMTc4ZDAzZmZlNDJkZTMu
LjE2NGY2MGVjY2NjNWQ2NzYzZjVhOTNkMDczYzI4YTI3NTIwZGJiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlz
dFN0b3JlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIK
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogc3RhdGljIFdLRXJyb3JD
b2RlIHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjplcnJvcl9jb2RlJiBlcnJvcikKIHsKQEAgLTkz
LDEwICs5NCw3IEBAIC0gKHZvaWQpbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kCiAtICh2b2lkKWdldEF2YWlsYWJs
ZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfY29udGVudFJ1bGVMaXN0U3RvcmUtPmdldEF2
YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJz
KSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICpuc0lkZW50aWZpZXJzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmlkZW50aWZpZXJzLnNpemUoKV07Ci0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKQotICAgICAg
ICAgICAgW25zSWRlbnRpZmllcnMgYWRkT2JqZWN0OmlkZW50aWZpZXJdOwotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuc0lkZW50aWZpZXJzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y3JlYXRlTlNBcnJheShpZGVudGlmaWVycykuZ2V0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4
IDAzMjU4NDU3MWNiNjNkYmU2YjQ5YTc5NTNmNmU4ZDZkN2U4M2UzNzUuLmY1ZWFjZWUwZThjZTNi
MzE0OTM0NTQxMGY5YTI2MWQ1MjdlMzkxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC01NSw2ICs1NSw3IEBACiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC02MTAsMTAgKzYxMSw3IEBAIC0gKF9XS0Rvd25sb2FkICop
X3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFT
dG9yZTooCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0
aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF9wcm9jZXNzUG9vbC0+YWN0aXZlUGFn
ZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZyhwaWQsIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8U3RyaW5nPiYmIGFjdGl2
ZVBhZ2VzT3JpZ2lucykgewotICAgICAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYXJy
YXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphY3RpdmVQYWdl
c09yaWdpbnMuc2l6ZSgpXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogYWN0aXZlUGFnZXNPcmlnaW5zKQotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpvcmln
aW5dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcnJheSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNyZWF0ZU5TQXJyYXkoYWN0aXZlUGFnZXNPcmlnaW5zKS5nZXQoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
U2NyaXB0Lm1tCmluZGV4IDU4OGE4NmI0MjBjNDAyZDE5NGI4MGU5YzY4NjA3M2Y3NzMwMWQ0NzIu
LjhlMTBlZmZlYmU3NWFmMmU2ZWFiNWE3MTlhMzZmZGNjMTBjOGJmMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiX1dL
VXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLVXNlclNjcmlwdAogCkBAIC04NCw3ICs4NSw3IEBA
IC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVj
dGlvblRpbWU6KFdLVXNlclNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFw
cGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0
aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9u
QmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3Vy
Y2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIG1ha2VWZWN0b3I8U3Ry
aW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0
KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwg
Zm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmpl
Y3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtOTQsNyArOTUsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihX
S1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKnVzZXJD
b250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpV
c2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtl
VmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2Fj
eUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0
aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9u
QmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTExMCw3ICsxMTEsNyBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmpl
Y3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3Jh
cHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0
cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdh
Y3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVj
dGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlv
bkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cisg
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYs
IFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3Jp
cHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxp
c3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMjAs
NyArMTIxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilz
b3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBt
YWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxl
Z2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0
aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTMwLDcgKzEzMSw3IEBAIC0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNl
clNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNj
cmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVS
TChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBB
UEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNj
cmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBkZWZl
clJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbiA/IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6OlllcyA6IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBt
YWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxl
Z2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNh
dGlvbiA/IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyA6
IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhZWY2NzVk
ZWFjZGU5YzRhMmQ5YTY4YTlmYWM3MWVkN2U2MGI5NGNlLi4yM2EyYmVhMDk5NTY2OWQ0MTBiN2Fh
MzRiODlkN2NkN2E4Y2U1YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTEzNiw2ICsxMzYsNyBAQAogI2ltcG9ydCA8d3RmL09wdGlv
bmFsLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgor
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndp
bi9keWxkU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTQzNyw3
ICs0MzgsNyBAQCAtICh2b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0aW9uCiAgICAgICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6V2ViUGFnZUdyb3VwOjpjcmVhdGUoZ3JvdXBJ
ZGVudGlmaWVyKS5wdHIoKSk7CiAgICAgfQogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKFdlYkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JG
cm9tTlNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRBZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcyhtYWtlVmVjdG9yPFN0cmluZz4oW19jb25maWd1cmF0aW9uIF9hZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRTdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoISFbX2NvbmZpZ3VyYXRp
b24gc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0KaW5kZXggN2FhN2QxMWVhMDdjNmU0MjI2NTM3YjFjZjAxYTM4MzBjOWNlMWRjMC4uOWJhYjhj
OGQzNmQ2ZTgxNWYyODExNGNhMGJjZmIxNDQ5YzU2ZDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0KQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKQEAgLTg5NywyMCArODk4LDEyIEBAIC0gKFdLV2Vic2l0ZURhdGFT
dG9yZSAqKV93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMKIAogLSAoTlNBcnJheTxOU1N0cmluZyAq
PiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIHsKLSAgICBhdXRvJiB2ZWN0b3IgPSBfcGFnZUNv
bmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOwotICAgIE5TTXV0YWJsZUFycmF5
ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgp
XTsKLSAgICBmb3IgKGF1dG8mIHBhdHRlcm4gOiB2ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRP
YmplY3Q6cGF0dGVybl07Ci0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBjcmVhdGVOU0Fy
cmF5KF9wYWdlQ29uZmlndXJhdGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCkpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNBcnJheTxO
U1N0cmluZyAqPiAqKXBhdHRlcm5zCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAg
IHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhdHRlcm5zLmNvdW50KTsKLSAgICBmb3Ig
KE5TU3RyaW5nICpwYXR0ZXJuIGluIHBhdHRlcm5zKQotICAgICAgICB2ZWN0b3IudW5jaGVja2Vk
QXBwZW5kKHBhdHRlcm4pOwotICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGlu
Z1BhdHRlcm5zKFdURk1vdmUodmVjdG9yKSk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRD
T1JTRGlzYWJsaW5nUGF0dGVybnMobWFrZVZlY3RvcjxTdHJpbmc+KHBhdHRlcm5zKSk7CiB9CiAK
IC0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdvcms6KEJPT0wpbG9hZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXgg
MTlmYTRmMGUxMDY4YTRjYTg2ZWM4OTg0YzJkYmE5NTI0ZjUzNDI5OS4uOWFkMDNkNTkyYjgxZTMz
M2FkZThlZTdiOTg4MTRjMjUxZTRmYTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTY2LDcgKzY2LDcgQEAg
LSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcg
Kil1c2VySW50ZXJmYWNlSXRlbQogICAgICAgICBhdXRvKiB2YWxpZGF0aW9uQnViYmxlID0gX3Bh
Z2UtPnZhbGlkYXRpb25CdWJibGUoKTsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGF0
aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+bWVzc2FnZSgpIDogZW1wdHlTdHJpbmcoKTsK
ICAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmFsaWRhdGlvbkJ1YmJsZSA/IHZhbGlkYXRpb25C
dWJibGUtPmZvbnRTaXplKCkgOiAwOwotICAgICAgICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0
ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9udFNpemUiOiBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTpmb250U2l6ZV0gfSB9OworICAgICAgICByZXR1cm4gQHsg
dXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAi
Zm9udFNpemUiOiBAKGZvbnRTaXplKSB9IH07CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tD
b250ZW50UnVsZUxpc3RBY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLm1tCmluZGV4IDI0ZDQ2NzhjOWU2ZGUzOGE4YzFj
ZGNmOWIwOTVjNWQxYTliNDZiZTcuLjI3YTEzNWIyZGZjMzFkZDBiMzk4MGY0YTdkNTg4MGMyNjZm
NTMzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tD
b250ZW50UnVsZUxpc3RBY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQpAQCAtMjYsNiArMjYsOCBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5h
bC5oIgogCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KKwogQGltcGxlbWVudGF0
aW9uIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbgogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTUyLDE0
ICs1NCwxMCBAQCAtIChCT09MKW1hZGVIVFRQUwogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICop
bm90aWZpY2F0aW9ucwogewotICAgIGNvbnN0IGF1dG8mIHZlY3RvciA9IF9hY3Rpb24tPm5vdGlm
aWNhdGlvbnMoKTsKKyAgICBhdXRvJiB2ZWN0b3IgPSBfYWN0aW9uLT5ub3RpZmljYXRpb25zKCk7
CiAgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBO
U011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYXJyYXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXSBhdXRvcmVsZWFzZV07Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBub3RpZmljYXRpb24gOiB2ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRP
YmplY3Q6bm90aWZpY2F0aW9uXTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0
ZU5TQXJyYXkodmVjdG9yKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChBUEk6Ok9iamVjdCYpX2Fw
aU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0N1c3RvbUhlYWRlckZpZWxkcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0KaW5kZXggZGRlZjcxZjhlNDQzNTBlMjBiZjFiZDc2
NGI4YTlhZTZmZGM2ZDIxYy4uNTBlZTg0NWJiZDU4ZDFkMGU4MjEzZDRiYTkzZjVjZWU4NzhmOWU5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3Rv
bUhlYWRlckZpZWxkcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIl9X
S0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dL
Q3VzdG9tSGVhZGVyRmllbGRzCiAKQEAgLTY4LDIwICs2OSwxMiBAQCAtICh2b2lkKXNldEZpZWxk
czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZmllbGRzCiAKIC0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKil0aGlyZFBhcnR5RG9tYWlucwogewotICAgIGF1dG8mIGRvbWFp
bnMgPSBfZmllbGRzLT50aGlyZFBhcnR5RG9tYWlucygpOwotICAgIE5TTXV0YWJsZUFycmF5ICph
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpkb21haW5zLnNpemUoKV07
Ci0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OmRvbWFpbl07Ci0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KF9maWVsZHMtPnRoaXJkUGFydHlEb21haW5zKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZv
aWQpc2V0VGhpcmRQYXJ0eURvbWFpbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0aGlyZFBhcnR5
RG9tYWlucwogewotICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Ci0gICAgZG9tYWlucy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHRoaXJkUGFydHlEb21haW5zLmNvdW50KTsKLSAgICBmb3IgKE5T
U3RyaW5nICpkb21haW4gaW4gdGhpcmRQYXJ0eURvbWFpbnMpCi0gICAgICAgIGRvbWFpbnMudW5j
aGVja2VkQXBwZW5kKGRvbWFpbik7Ci0gICAgX2ZpZWxkcy0+c2V0VGhpcmRQYXJ0eURvbWFpbnMo
V1RGTW92ZShkb21haW5zKSk7CisgICAgX2ZpZWxkcy0+c2V0VGhpcmRQYXJ0eURvbWFpbnMobWFr
ZVZlY3RvcjxTdHJpbmc+KHRoaXJkUGFydHlEb21haW5zKSk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQppbmRleCAxOGRhZTFj
NTA1YTJkMDY4NzQwZDU1OWNmMGFkMzFlYTE3MmM3YzA3Li5hZDM2NWJjYjFmNTFhZGIwNmU3NjI2
MTYzM2UxODVkOGMxNWNhZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAg
LTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uCiAKQEAgLTE3Niw1MSArMTc3LDIyIEBAIC0gKHZvaWQpc2V0V2lyZWxlc3ND
b250ZXh0SWRlbnRpZmllcjooTlNVSW50ZWdlcilpZGVudGlmaWVyCiAKIC0gKE5TQXJyYXkgKilj
YWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcwogewotICAgIGF1dG8gc2NoZW1lcyA9IF9wcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24tPmNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCk7Ci0gICAgaWYg
KHNjaGVtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQFtdOwotCi0gICAgTlNNdXRhYmxl
QXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNjaGVtZXMu
c2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IHNjaGVtZXMpCi0gICAgICAg
IFthcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nICopc2NoZW1lXTsKLQotICAgIHJldHVybiBhcnJh
eTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5j
YWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lk
KXNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOihOU0FycmF5ICopY2FjaGVQYXJ0aXRpb25l
ZFVSTFNjaGVtZXMKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBzY2hlbWVzOwotICAgIGZvciAoaWQg
dXJsU2NoZW1lIGluIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7Ci0gICAgICAgIGlmIChb
dXJsU2NoZW1lIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBz
Y2hlbWVzLmFwcGVuZChTdHJpbmcoKE5TU3RyaW5nICopdXJsU2NoZW1lKSk7Ci0gICAgfQotICAg
IAotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24t
PnNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKG1ha2VWZWN0b3I8U3RyaW5nPihjYWNoZVBh
cnRpdGlvbmVkVVJMU2NoZW1lcykpOwogfQogCiAtIChOU0FycmF5ICopYWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzCiB7Ci0gICAgYXV0byYgc2NoZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcygpOwotICAgIGlmIChzY2hlbWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEBbXTsKLQotICAgIE5TTXV0YWJsZUFycmF5ICphcnJh
eSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzY2hlbWVzLnNpemUoKV07Ci0g
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBzY2hlbWVzKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OihOU1N0cmluZyAqKXNjaGVtZV07Ci0KLSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+YWx3YXlzUmV2YWxpZGF0ZWRV
UkxTY2hlbWVzKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0QWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOihOU0FycmF5ICopYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzCiB7
Ci0gICAgVmVjdG9yPFN0cmluZz4gc2NoZW1lczsKLSAgICBzY2hlbWVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLmNvdW50KTsKLSAgICBmb3IgKGlk
IHNjaGVtZSBpbiBhbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMpIHsKLSAgICAgICAgaWYgKFtz
Y2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgIHNjaGVt
ZXMuYXBwZW5kKChOU1N0cmluZyAqKXNjaGVtZSk7Ci0gICAgfQotCi0gICAgX3Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi0+c2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKFdURk1vdmUoc2No
ZW1lcykpOworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEFsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lcyhtYWtlVmVjdG9yPFN0cmluZz4oYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hl
bWVzKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRXb3JsZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgKaW5kZXggNzU5MWJlY2VlMTRmMDM0ODY2
YjE3MTc0YjllNzMyNTM2OGYwYjQ0OS4uMjg2ZDJiMzI0NjFjZGE4MjM1MmU5YmZiYWQyNTQ1YjY0
ZTMyYzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaApAQCAtMjcsMjYgKzI3LDYg
QEAKIAogQGNsYXNzIFdLQ29udGVudFdvcmxkOwogCi1uYW1lc3BhY2UgQVBJIHsKLQotaW5saW5l
IFZlY3RvcjxXVEY6OlN0cmluZz4gdG9TdHJpbmdWZWN0b3IoTlNBcnJheSAqaW5wdXQpCi17Ci0g
ICAgVmVjdG9yPFdURjo6U3RyaW5nPiB2ZWN0b3I7Ci0KLSAgICBOU1VJbnRlZ2VyIHNpemUgPSBp
bnB1dC5jb3VudDsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiB2ZWN0b3I7Ci0KLSAg
ICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICBmb3IgKGlkIHN0cmlu
ZyA6IGlucHV0KSB7Ci0gICAgICAgIGlmIChbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pCi0gICAgICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7Ci0g
ICAgfQotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0KLX0KLQogQGludGVyZmFjZSBfV0tVc2VyQ29u
dGVudFdvcmxkICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBSZXRhaW5QdHI8V0tDb250
ZW50V29ybGQ+IF9jb250ZW50V29ybGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KaW5kZXggNjQyM2JjYjk1Yzc2M2Y0
MGY3NTRiMjllMDEzMWVhODRmYzBlMTNiOC4uNDZhZjhhZDJiYzQ5MjZmYWU4MTI5NGFlNmJhMjg5
MzE3YTg0NzBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiX1dL
VXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1VzZXJTdHlsZVNoZWV0CiAKQEAgLTcxLDcgKzcy
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBm
b3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0
ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpP
YmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFs
bHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVs
aXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZy
YW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5f
Y29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVV
bmlxdWVVUkwoKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0
b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5f
Y29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODUsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5G
cmFtZU9ubHk6KEJPT0wpZm9yTWFpbgogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdl
IGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBj
b25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8K
ICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFti
YXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVj
dG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNl
ckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6
OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgbWFrZVZl
Y3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lC
bGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVs
IH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCA3NmRmZmZlNzNjY2QwNzM0YWMwZjkyMzcwMGFhZWY3NzcwNWJlYTk0
Li40NmFmNzNiNDM3OWZjNzc2MWYwNGQzMjRiYzZiYmFkN2RmZjE0ODhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTI2LDYgKzEyNiw3IEBA
CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5o
PgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNp
ZiBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VS
KQpAQCAtMzY2OCw3ICszNjY5LDcgQEAgaWQgV2ViVmlld0ltcGw6OmFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlLCBpZCBwYXJhbWV0ZXIpCiAKICAgICAgICAg
ICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpjaGlsZF07CisgICAgICAgIHJldHVybiBAW2No
aWxkXTsKICAgICB9CiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVJvbGVBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlOwpAQCAtNDA0MywxMSArNDA0NCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1E
cmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmls
ZU5hbWVzOwotCi0gICAgICAgIGZvciAoTlNTdHJpbmcgKmZpbGUgaW4gZmlsZXMpCi0gICAgICAg
ICAgICBmaWxlTmFtZXMuYXBwZW5kKGZpbGUpOwotICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRi
b3hFeHRlbnNpb25zSWZOZWVkZWQoZmlsZU5hbWVzLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBz
YW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94
RXh0ZW5zaW9uc0lmTmVlZGVkKG1ha2VWZWN0b3I8U3RyaW5nPihmaWxlcyksIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogICAgIH0KIAogICAgIFN0
cmluZyBkcmFnZ2luZ1Bhc3RlYm9hcmROYW1lID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVi
b2FyZC5uYW1lOwpAQCAtNDMzNSw3ICs0MzMyLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5h
bWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4K
ICAgICBpZiAoIW1fcHJvbWlzZWRVUkwuaXNFbXB0eSgpKQogICAgICAgICBGaWxlU3lzdGVtOjpz
ZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOwogCi0gICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOworICAg
IHJldHVybiBAW1twYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CiAKIHZvaWQgV2ViVmlld0lt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiYmIGNvbXBsZXRpb24pCkBAIC00NzQ5LDcgKzQ3NDYs
NyBAQCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBXZWJWaWV3SW1wbDo6Y29sbGVj
dEtleWJvYXJkTGF5b3V0Q29tbWFuZHNGb3JFdgogICAgIGlmIChOU1RleHRJbnB1dENvbnRleHQg
KmNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKICAgICAgICAgW2NvbnRleHQgaGFuZGxlRXZlbnRC
eUtleWJvYXJkTGF5b3V0OmV2ZW50XTsKICAgICBlbHNlCi0gICAgICAgIFttX3ZpZXcgaW50ZXJw
cmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpldmVudF1dOworICAgICAgICBb
bV92aWV3IGludGVycHJldEtleUV2ZW50czpAW2V2ZW50XV07CiAKICAgICBtX2NvbGxlY3RlZEtl
eXByZXNzQ29tbWFuZHMgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXgg
YThhN2I2NWY0NmYwOTBlNzMwZmFjMjlkOWIxYTNkMTFlMzQzNDdiZi4uNTZmN2VkMjQ4MjZmNDk3
NDY3NjM5ZjAxY2YwOTgyMWU1ZWY2MmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAt
NDAsNiArNDAsNyBAQAogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Q
cm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGludGVy
ZmFjZSBXS1BsYWNlaG9sZGVyTW9kYWxXaW5kb3cgOiBOU1dpbmRvdyAKQEAgLTI1MSwxMSArMjUy
LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgU3RyaW5n
JiBsYXVuY2hQYXRoLCBjb25zdCBWZWN0b3I8U3QKICAgICBpZiAoIXNob3VsZExhdW5jaFByb2Nl
c3MobV9wbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywgbGF1bmNoUGF0aCwgYXJndW1lbnRzKSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIAotICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gYXJndW1lbnRzQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YXJndW1lbnRzLnNpemUoKV0pOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQotICAgICAgICBbYXJndW1lbnRz
QXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKWFyZ3VtZW50c1tpXV07Ci0KLSAgICBbTlNUYXNr
IGxhdW5jaGVkVGFza1dpdGhMYXVuY2hQYXRoOmxhdW5jaFBhdGggYXJndW1lbnRzOmFyZ3VtZW50
c0FycmF5LmdldCgpXTsKKyAgICBbTlNUYXNrIGxhdW5jaGVkVGFza1dpdGhMYXVuY2hQYXRoOmxh
dW5jaFBhdGggYXJndW1lbnRzOmNyZWF0ZU5TQXJyYXkoYXJndW1lbnRzKS5nZXQoKV07CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKQEAgLTI2NSwxMCArMjYyLDEwIEBAIHN0YXRp
YyBib29sIGlzSmF2YVVwZGF0ZXJVUkwoY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBs
dWdpblByb2Nlc3NBdHRyaWJ1CiAgICAgaWYgKCFbdXJsIGlzRmlsZVVSTF0pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIE5TQXJyYXkgKmphdmFVcGRhdGVyQXBwTmFtZXMgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOkAiSmF2YSBVcGRhdGVyLmFwcCIsIEAiSmF2YVVwZGF0ZXIuYXBw
IiwgbmlsXTsKKyAgICBOU0FycmF5ICpqYXZhVXBkYXRlckFwcE5hbWVzID0gQFtAIkphdmEgVXBk
YXRlci5hcHAiLCBAIkphdmFVcGRhdGVyLmFwcCJdOwogCiAgICAgZm9yIChOU1N0cmluZyAqamF2
YVVwZGF0ZXJBcHBOYW1lIGluIGphdmFVcGRhdGVyQXBwTmFtZXMpIHsKLSAgICAgICAgTlNTdHJp
bmcgKmphdmFVcGRhdGVyUGF0aCA9IFtOU1N0cmluZyBwYXRoV2l0aENvbXBvbmVudHM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czooTlNTdHJpbmcgKilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5t
b2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVzb3VyY2VzIiwgamF2YVVwZGF0ZXJBcHBOYW1l
LCBuaWxdXTsKKyAgICAgICAgTlNTdHJpbmcgKmphdmFVcGRhdGVyUGF0aCA9IFtOU1N0cmluZyBw
YXRoV2l0aENvbXBvbmVudHM6QFsoTlNTdHJpbmcgKilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5t
b2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVzb3VyY2VzIiwgamF2YVVwZGF0ZXJBcHBOYW1l
XV07CiAgICAgICAgIGlmIChbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOmphdmFVcGRhdGVyUGF0
aF0pCiAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgIH0KQEAgLTI4OSwyMCArMjg2LDE2IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpsYXVuY2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWCiAgICAgaWYgKCFzaG91bGRMYXVuY2hBcHBsaWNhdGlv
bkF0VVJMKG1fcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMsIHVybFN0cmluZykpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGFyZ3VtZW50c0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5OmFyZ3VtZW50cy5zaXplKCldKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgW2FyZ3VtZW50c0FycmF5IGFk
ZE9iamVjdDooTlNTdHJpbmcgKilhcmd1bWVudHNbaV1dOwotCi0gICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBOU0RpY3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24gPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmFyZ3VtZW50c0FycmF5LmdldCgpIGZv
cktleTpOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25Bcmd1bWVudHNdOworQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBAeyBO
U1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25Bcmd1bWVudHM6IGNyZWF0ZU5TQXJyYXkoYXJn
dW1lbnRzKS5nZXQoKSB9OwogICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybFN0cmluZ10gb3B0aW9u
czpOU1dvcmtzcGFjZUxhdW5jaEFzeW5jIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBlcnJv
cjpudWxscHRyXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKK0FMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OwogfQogCiBzdGF0aWMgYm9vbCBpc1NpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwoY29uc3QgUGx1
Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKIHsKLSAgICBOU1VSTCAqc2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTCA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGhDb21wb25lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6KE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBA
IkNvbnRlbnRzL1Jlc291cmNlcy9TaWx2ZXJsaWdodCBQcmVmZXJlbmNlcy5hcHAiLCBuaWxdXTsK
KyAgICBOU1VSTCAqc2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGhDb21wb25lbnRzOkBbKE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9k
dWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291cmNlcy9TaWx2ZXJsaWdodCBQcmVmZXJlbmNl
cy5hcHAiXV07CiAKICAgICByZXR1cm4gW1tOU1VSTCBVUkxXaXRoU3RyaW5nOnVybFN0cmluZ10g
aXNFcXVhbDpzaWx2ZXJsaWdodFByZWZlcmVuY2VzVVJMXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLm1tCmluZGV4IGRiMGFiYjgyMTZkNmNlNDE3ZGI1OGNhNmVhOWQwZWVmNGE1YjMzYzkuLjJi
ODhjOWZjNzIyZTYwZGZhNTViMTdkOTgxMWZiZjkyYmZjMTk4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlk
U2VydmljZS5tbQpAQCAtNTMsOCArNTMsOCBAQCBIaWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKE9ic2Vy
dmVyJiBvYnNlcnZlcikKIHsKICAgICBtX21hbmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBO
U0RpY3Rpb25hcnkgKm1hdGNoaW5nRGljdGlvbmFyeSA9IEB7Ci0gICAgICAgIEBrSU9ISURQcmlt
YXJ5VXNhZ2VQYWdlS2V5OiBhZG9wdE5TKFtOU051bWJlciBudW1iZXJXaXRoSW50OmtDdGFwSGlk
VXNhZ2VQYWdlXSkuZ2V0KCksCi0gICAgICAgIEBrSU9ISURQcmltYXJ5VXNhZ2VLZXk6IGFkb3B0
TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6a0N0YXBIaWRVc2FnZV0pLmdldCgpCisgICAgICAg
IEBrSU9ISURQcmltYXJ5VXNhZ2VQYWdlS2V5OiBAKGtDdGFwSGlkVXNhZ2VQYWdlKSwKKyAgICAg
ICAgQGtJT0hJRFByaW1hcnlVc2FnZUtleTogQChrQ3RhcEhpZFVzYWdlKSwKICAgICB9OwogICAg
IElPSElETWFuYWdlclNldERldmljZU1hdGNoaW5nKG1fbWFuYWdlci5nZXQoKSwgKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZiltYXRjaGluZ0RpY3Rpb25hcnkpOwogICAgIElPSElETWFuYWdlclJl
Z2lzdGVyRGV2aWNlTWF0Y2hpbmdDYWxsYmFjayhtX21hbmFnZXIuZ2V0KCksIGRldmljZUFkZGVk
Q2FsbGJhY2ssIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
CmluZGV4IGZlNDkzZjk1MWU1YTM4YTcwNTVkODdkNDg3MzEwOWMxZDg5ODk4YzUuLjU2NzEyNTU0
YjZmNjJiODYwMTMwYjY3Mzc3ZTNmNDMzNmFiYzgyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE1vY2tMb2NhbENv
bm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICosIE5TRGF0YSAqLCBB
dHRlc3RhdAogCiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZSA9IGFkb3B0Q0Yo
U2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpjb25maWd1
cmF0aW9uLmxvY2FsLT51c2VyQ2VydGlmaWNhdGVCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjRE
ZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCkpKTsKICAgICAgICAgYXV0byBh
dHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNy
ZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFSZWYpYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvbmZpZ3VyYXRpb24ubG9jYWwtPmlu
dGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGlu
Z0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCkpKTsKLSAgICAgICAgY2FsbGJhY2soW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czogKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNh
dGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdl
dCgpLCBuaWxdLCBOVUxMKTsKKyAgICAgICAgY2FsbGJhY2soQFsgKF9fYnJpZGdlIGlkKWF0dGVz
dGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdD
QUNlcnRpZmljYXRlLmdldCgpXSwgTlVMTCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDUyOWFjNDM0NjdiMWI2ZThjZmZiMTE0ZWMxYTA3ODg1MDM3MjZhYjAuLmFmZmFhYzU2MDI2
YmIxMjdkYmExZmVkZjZlNTNmY2ZkMGQyNzdmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTE5LDgg
KzExOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5o
PgotI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6IFdLMiBzaG91
bGQgbm90IGluY2x1ZGUgV2ViS2l0IGhlYWRlcnMhCi0jaW1wb3J0IDxwYWwvaW9zL01hbmFnZWRD
b25maWd1cmF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJTZWxlY3Rpb25SZWN0
Lmg+IC8vIEZJWE1FOiBXZWJLaXQgc2hvdWxkIG5vdCBpbmNsdWRlIFdlYktpdExlZ2FjeSBoZWFk
ZXJzIQogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTGF1bmNoU2VydmljZXNTUEkuaD4KQEAgLTEzNSw2ICsxMzQsNyBAQAogI2ltcG9ydCA8d3Rm
L1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQpAQCAtMTY4LDYgKzE2OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oPgogI2VuZGlmCiAKKyNpbXBvcnQgPHBhbC9pb3MvTWFuYWdlZENvbmZpZ3Vy
YXRpb25Tb2Z0TGluay5oPgorCiAjaWYgSEFWRShMSU5LX1BSRVZJRVcpICYmIFVTRShVSUNPTlRF
WFRNRU5VKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgd2Via2l0U2hvd0xpbmtQcmV2aWV3c1By
ZWZlcmVuY2VLZXkgPSBAIldlYktpdFNob3dMaW5rUHJldmlld3MiOwogI2VuZGlmCkBAIC0zMTg1
LDcgKzMxODcsNyBAQCAtIChOU0RpY3Rpb25hcnkgKil0ZXh0U3R5bGluZ0F0UG9zaXRpb246KFVJ
VGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJlY3Rpb246KAogICAgICAgICBbcmVzdWx0IHNl
dE9iamVjdDooaWQpZm9udC5nZXQoKSBmb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV07CiAgICAg
CiAgICAgaWYgKHR5cGluZ0F0dHJpYnV0ZXMgJiBXZWJLaXQ6OkF0dHJpYnV0ZVVuZGVybGluZSkK
LSAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRl
cmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsK
KyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JL
ZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTM5ODQsMTAgKzM5ODYsNyBAQCAtICh2b2lkKXJlcXVlc3RSZWN0c1RvRXZhZGVGb3JT
ZWxlY3Rpb25Db21tYW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOUwogICAgICAg
ICB9CiAKICAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92
ZVNlbGVjdGlvbihbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChhdXRvJiByZWN0
cykgewotICAgICAgICAgICAgYXV0byByZWN0c0FzVmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnJlY3RzLnNpemUoKV0pOwotICAgICAgICAg
ICAgZm9yIChhdXRvJiBmbG9hdFJlY3QgOiByZWN0cykKLSAgICAgICAgICAgICAgICBbcmVjdHNB
c1ZhbHVlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OmZsb2F0UmVjdF1dOwot
ICAgICAgICAgICAgY29tcGxldGlvbihyZWN0c0FzVmFsdWVzLmdldCgpKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0cykuZ2V0KCkpOwogICAgICAgICB9KTsKICAg
ICB9KTsKIH0KQEAgLTc0MDAsNyArNzM5OSw3IEBAIC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAq
KV9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5nVG9TZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpCiAg
ICAgZm9yIChOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIGFkanVzdGVkSXRlbVByb3Zp
ZGVycykgewogICAgICAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbVUlEcmFnSXRlbSBhbGxvY10g
aW5pdFdpdGhJdGVtUHJvdmlkZXI6aXRlbVByb3ZpZGVyXSk7CiAgICAgICAgIFtpdGVtIF9zZXRQ
cml2YXRlTG9jYWxDb250ZXh0OkAoc3RhZ2VkRHJhZ1NvdXJjZS5pdGVtSWRlbnRpZmllcildOwot
ICAgICAgICBbZHJhZ0l0ZW1zIGFkZE9iamVjdDppdGVtLmF1dG9yZWxlYXNlKCldOworICAgICAg
ICBbZHJhZ0l0ZW1zIGFkZE9iamVjdDppdGVtLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4g
ZHJhZ0l0ZW1zOwpAQCAtODQzMCw3ICs4NDI5LDYgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRl
bnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcgKil1c2VySW50ZXJmYWNlSXRlbQogICAg
ICAgICAgICAgICAgIEAiaXNJbWFnZSI6IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpfcG9zaXRp
b25JbmZvcm1hdGlvbi5pc0ltYWdlXSwKICAgICAgICAgICAgICAgICBAImltYWdlVVJMIjogX3Bv
c2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkwuaXNWYWxpZCgpID8gV1RGOjp1c2VyVmlzaWJsZVN0
cmluZyhfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZVVSTCkgOiBAIiIKICAgICAgICAgICAgIH0g
fTsKLQogICAgICAgICBOU1N0cmluZyAqdXJsID0gW19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgcHJl
dmlld0RhdGFdW1VJUHJldmlld0RhdGFMaW5rXTsKICAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRl
cmZhY2VJdGVtOiBAewogICAgICAgICAgICAgQCJ1cmwiOiB1cmwsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXgg
MmY5MmJiNmU0YWMwYWU3NjM4MWRjZDkxNjExZDU2Y2U5ZjI5YTZiMy4uZDhiMzAwNmI1ZDAxOTJi
MDA5YzNkYWYxZTFmYjA1ZmU1YWRmODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtNjY2LDEyICs2NjYs
MTIgQEAgLSAodm9pZClpbWFnZVBpY2tlckNvbnRyb2xsZXI6KFVJSW1hZ2VQaWNrZXJDb250cm9s
bGVyICopaW1hZ2VQaWNrZXIgZGlkRmluaXNoUGkKIAogICAgIFtzZWxmIF9kaXNtaXNzRGlzcGxh
eUFuaW1hdGVkOllFU107CiAKLSAgICBbc2VsZiBfcHJvY2Vzc01lZGlhSW5mb0RpY3Rpb25hcmll
czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6aW5mb10KKyAgICBbc2VsZiBfcHJvY2Vzc01lZGlh
SW5mb0RpY3Rpb25hcmllczpAW2luZm9dCiAgICAgICAgIHN1Y2Nlc3NCbG9jazpeKE5TQXJyYXkg
KnByb2Nlc3NlZFJlc3VsdHMsIE5TU3RyaW5nICpkaXNwbGF5U3RyaW5nKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoW3Byb2Nlc3NlZFJlc3VsdHMgY291bnRdID09IDEpOwogICAgICAgICAgICAgX1dL
RmlsZVVwbG9hZEl0ZW0gKnJlc3VsdCA9IFtwcm9jZXNzZWRSZXN1bHRzIG9iamVjdEF0SW5kZXg6
MF07CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewotICAgICAgICAgICAgICAgIFtzZWxmIF9jaG9vc2VGaWxlczpbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6cmVzdWx0LmZpbGVVUkxdIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29u
SW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZV07CisgICAgICAgICAgICAgICAgW3NlbGYgX2Nob29z
ZUZpbGVzOkBbcmVzdWx0LmZpbGVVUkxdIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29u
SW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZV07CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgICAgICBmYWlsdXJlQmxvY2s6XnsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQppbmRleCBmZTM5ZjgzN2JmNDQ0ZWVk
M2E5ODBhYjk3ZmFmNDQ2M2I3MDg3MGRkLi5jZTY3ODQyYzdmZTAzYjUxYzY2MGExODk2NTIyMzcy
OWUxNTVmZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtQ29sb3JQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybUNvbG9yUGlja2VyLm1tCkBAIC0xMTIsOCArMTEyLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb2xvck1hdHJpeDooTlNBcnJheTxOU0Fy
cmF5PFVJQ29sb3IKICAgICAgICAgICAgIFtidXR0b25zIGFkZE9iamVjdDpidXR0b25dOwogICAg
ICAgICAgICAgW3NlbGYgYWRkU3VidmlldzpidXR0b25dOwogICAgICAgICB9Ci0gICAgICAgIFJl
dGFpblB0cjxOU0FycmF5PiBjb2xvckJ1dHRvbnNSb3cgPSBidXR0b25zOwotICAgICAgICBbY29s
b3JCdXR0b25zIGFkZE9iamVjdDpjb2xvckJ1dHRvbnNSb3cuZ2V0KCldOworICAgICAgICBbY29s
b3JCdXR0b25zIGFkZE9iamVjdDpidXR0b25zXTsKICAgICB9CiAgICAgX2NvbG9yQnV0dG9ucyA9
IGNvbG9yQnV0dG9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Db3JyZWN0
aW9uUGFuZWwubW0KaW5kZXggZmU0ZTg0NjY5ODBiNzM1OGEwOWNhMTE5ZDJjMjM3MGNmNWQ5MTVm
ZC4uNzIzYjMyNmY0ZjRmMjg4ZGVmNGIwMzdjNjQ3MjY1ZDVkOWI5OGUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIK
KyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBzdGF0aWMgaW5saW5lIE5TQ29y
cmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlKQogewpAQCAtNjUsMjggKzY2LDI1
IEBAIENvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCgpCiB2b2lkIENvcnJlY3Rpb25Q
YW5lbDo6c2hvdyhOU1ZpZXcgKnZpZXcsIFdlYlZpZXdJbXBsJiB3ZWJWaWV3SW1wbCwgQWx0ZXJu
YXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1l
bnRTdHJpbmdzKQogewogICAgIGRpc21pc3NJbnRlcm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0SWdub3JlZCwgZmFsc2UpOwotICAgIAorCiAgICAgaWYgKCF2aWV3KQogICAg
ICAgICByZXR1cm47CiAKICAgICBOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSB3
ZWJWaWV3SW1wbC5zcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwogCi0gICAgTlNTdHJpbmcqIHJl
cGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOwotICAgIE5TU3RyaW5nKiBy
ZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKKyAgICBOU1N0
cmluZyAqcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNT
dHJpbmcgKnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOwor
CiAgICAgbV92aWV3ID0gdmlldzsKICAgICBtX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gc3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWc7CiAgICAgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBpbmRp
Y2F0b3JUeXBlID0gY29ycmVjdGlvbkluZGljYXRvclR5cGUodHlwZSk7CiAgICAgCi0gICAgTlNN
dXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5ncyA9IDA7Ci0gICAgaWYgKCFhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5zaXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZl
U3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJu
YXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzW2ldXTsKLSAgICB9CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFsdGVybmF0aXZlU3Ry
aW5nczsKKyAgICBpZiAoIWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkK
KyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0gY3JlYXRlTlNBcnJheShhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncyk7CiAKICAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0g
W05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Ci0gICAgW3NwZWxsQ2hlY2tlciBz
aG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTppbmRpY2F0b3JUeXBlIHByaW1hcnlTdHJpbmc6
cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2
ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3
Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmlu
ZykgeworICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6aW5k
aWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRl
cm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzLmdldCgpIGZvclN0cmluZ0luUmVjdDpi
b3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAgICAgaGFuZGxlQWNjZXB0
ZWRSZXBsYWNlbWVudCh3ZWJWaWV3SW1wbCwgYWNjZXB0ZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5n
QXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nLCBpbmRpY2F0b3JUeXBlKTsK
ICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0
Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1h
Yy5tbQppbmRleCBkNzg2ZjExZDM5M2M3ZTRiNzg4YmNlYzM2N2VhZTA5NmY3Zjc1MmUxLi4wMTYx
OWE1ODNhOWU2ODZkMDQ2NmEyNTAyZWI1MmE3YzlmNTBlOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogQGlu
dGVyZmFjZSBOU1NwZWxsQ2hlY2tlciAoV2ViTlNTcGVsbENoZWNrZXJEZXRhaWxzKQpAQCAtNDM1
LDEzICs0MzYsMTAgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNz
cGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKIAogdm9pZCBUZXh0Q2hlY2tl
cjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcsIGNv
bnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1h
ckRldGFpbCkKIHsKLSAgICBhdXRvIGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwu
Z3Vlc3NlcykKLSAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107CiAgICAgTlNE
aWN0aW9uYXJ5ICpkZXRhaWwgPSBAewogICAgICAgICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVl
IHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAogICAgICAgICBOU0dyYW1tYXJV
c2VyRGVzY3JpcHRpb24gOiBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiwKLSAgICAgICAg
TlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucy5nZXQoKSwKKyAgICAgICAgTlNHcmFt
bWFyQ29ycmVjdGlvbnMgOiBjcmVhdGVOU0FycmF5KGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykuZ2V0
KCksCiAgICAgfTsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBk
YXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWls
OmRldGFpbF07CiB9CkBAIC00NTksMTAgKzQ1Nyw3IEBAIHZvaWQgVGV4dENoZWNrZXI6OmdldEd1
ZXNzZXNGb3JXb3JkKFNwZWxsRG9jdW1lbnRUYWcgc3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3Ry
CiAgICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5nOmNvbnRleHQgcmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgY29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkg
b3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZyBv
cnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29yZENvdW50OjBdOwogICAgICAgICBsYW5ndWFnZSA9
IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRleHQubGVu
Z3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0aG9ncmFwaHk6b3J0aG9ncmFwaHldOwogICAgIH0K
LSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkgPSBbY2hlY2tlciBndWVzc2VzRm9yV29yZFJhbmdl
Ok5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6bGFu
Z3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbERvY3VtZW50VGFnXTsKLQotICAgIGZv
ciAoTlNTdHJpbmcgKmd1ZXNzIGluIHN0cmluZ3NBcnJheSkKLSAgICAgICAgZ3Vlc3Nlcy5hcHBl
bmQoZ3Vlc3MpOworICAgIGd1ZXNzZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW2NoZWNrZXIgZ3Vl
c3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCB3b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3
b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVu
dFRhZ10pOwogfQogCiB2b2lkIFRleHRDaGVja2VyOjpsZWFybldvcmQoU3BlbGxEb2N1bWVudFRh
ZywgY29uc3QgU3RyaW5nJiB3b3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
UHJpbnRpbmdWaWV3Lm1tCmluZGV4IDAxZTQzMjE2MGRmMjljMTNiMjRlMzBhZGFmZTFkM2ZmNWE0
OTFjNjEuLjU5MDRjNDI3OWY4MWY5YmMzOWVmZmJkZWEwZjY2ODg4NjE2ZGQ4ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KQEAgLTE0NSw4ICsx
NDUsOCBAQCAtICh2b2lkKV9hZGp1c3RQcmludGluZ01hcmdpbnNGb3JIZWFkZXJBbmRGb290ZXIK
ICAgICAgICAgQVNTRVJUKCFbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYktpdE9yaWdp
bmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldKTsKICAgICAgICAgb3JpZ2luYWxUb3BNYXJnaW4g
PSBbaW5mbyB0b3BNYXJnaW5dOwogICAgICAgICBvcmlnaW5hbEJvdHRvbU1hcmdpbiA9IFtpbmZv
IGJvdHRvbU1hcmdpbl07Ci0gICAgICAgIFtpbmZvRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6b3JpZ2luYWxUb3BNYXJnaW5dIGZvcktleTpXZWJLaXRPcmln
aW5hbFRvcFByaW50aW5nTWFyZ2luS2V5XTsKLSAgICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpvcmlnaW5hbEJvdHRvbU1hcmdpbl0gZm9y
S2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldOworICAgICAgICBbaW5m
b0RpY3Rpb25hcnkgc2V0T2JqZWN0OkAob3JpZ2luYWxUb3BNYXJnaW4pIGZvcktleTpXZWJLaXRP
cmlnaW5hbFRvcFByaW50aW5nTWFyZ2luS2V5XTsKKyAgICAgICAgW2luZm9EaWN0aW9uYXJ5IHNl
dE9iamVjdDpAKG9yaWdpbmFsQm90dG9tTWFyZ2luKSBmb3JLZXk6V2ViS2l0T3JpZ2luYWxCb3R0
b21QcmludGluZ01hcmdpbktleV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKFtvcmln
aW5hbFRvcE1hcmdpbk51bWJlciBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKICAg
ICAgICAgQVNTRVJUKFtbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYktpdE9yaWdpbmFs
Qm90dG9tUHJpbnRpbmdNYXJnaW5LZXldIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQu
bW0KaW5kZXggMzk2OGVkYTYzZGVkZTI5MDVlYzJmNzBlNTU5YzFiOGRhOTQ0MDI4ZS4uMzZhYmRm
ZDI0NjVlNGRmZDUxMDI0M2RmN2Y5YTc4YzEwYjkxYTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9y
dCA8d3RmL05ha2VkUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
Ly8gRklYTUU6IEltcGxlbWVudCBzY3JvbGxGaW5kTWF0Y2hUb1Zpc2libGUuCiAvLyBGSVhNRTog
VGhlIE5TVGV4dEZpbmRlciBvdmVybGF5IGRvZXNuJ3QgbW92ZSB3aXRoIHNjcm9sbGluZzsgd2Ug
c2hvdWxkIGhhdmUgYSBtb2RlIHdoZXJlIHdlIG1hbmFnZSB0aGUgb3ZlcmxheS4KQEAgLTI3MCwz
MSArMjcxLDIxIEBAIC0gKHZvaWQpc2Nyb2xsRmluZE1hdGNoVG9WaXNpYmxlOihpZCA8TlNUZXh0
RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kTWF0Y2g+CiAKICNwcmFnbWEgbWFyayAtIEZp
bmRNYXRjaGVzQ2xpZW50CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gYXJyYXlGcm9tUmVj
dHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBtYXRjaFJlY3RzKQotewotICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gbnNNYXRjaFJlY3RzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om1hdGNoUmVjdHMuc2l6ZSgpXSk7Ci0gICAg
Zm9yIChhdXRvJiByZWN0IDogbWF0Y2hSZWN0cykKLSAgICAgICAgW25zTWF0Y2hSZWN0cyBhZGRP
YmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XV07Ci0gICAgcmV0dXJuIG5zTWF0Y2hS
ZWN0czsKLX0KLQogLSAodm9pZClkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3Qg
VmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mKXJlY3RzRm9yTWF0Y2hlcyBkaWRXcmFw
QXJvdW5kOihCT09MKWRpZFdyYXBBcm91bmQKIHsKICAgICBpZiAoX2ZpbmRSZXBseUNhbGxiYWNr
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVwbHlDYWxsYmFjayA9
IF9maW5kUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgdW5zaWduZWQgbWF0Y2hDb3Vu
dCA9IHJlY3RzRm9yTWF0Y2hlcy5zaXplKCk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBtYXRjaE9iamVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6bWF0Y2hDb3VudF0pOworICAgIGF1dG8gbWF0Y2hDb3VudCA9IHJlY3RzRm9yTWF0
Y2hlcy5zaXplKCk7CisgICAgYXV0byBtYXRjaE9iamVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWF0Y2hDb3VudF0pOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtYXRjaENvdW50OyBpKyspIHsKICAgICAgICAgUmV0YWluUHRyPE5T
QXJyYXk+IG5zTWF0Y2hSZWN0czsKLQogICAgICAgICBpZiAoX3VzZVBsYXRmb3JtRmluZFVJKQot
ICAgICAgICAgICAgbnNNYXRjaFJlY3RzID0gYXJyYXlGcm9tUmVjdHMocmVjdHNGb3JNYXRjaGVz
W2ldKTsKKyAgICAgICAgICAgIG5zTWF0Y2hSZWN0cyA9IGNyZWF0ZU5TQXJyYXkocmVjdHNGb3JN
YXRjaGVzW2ldKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbnNNYXRjaFJlY3RzID0gQFtd
OwotICAgICAgICBSZXRhaW5QdHI8V0tUZXh0RmluZGVyTWF0Y2g+IG1hdGNoID0gYWRvcHROUyhb
W1dLVGV4dEZpbmRlck1hdGNoIGFsbG9jXSBpbml0V2l0aENsaWVudDpzZWxmIHZpZXc6X3ZpZXcg
aW5kZXg6aSByZWN0czpuc01hdGNoUmVjdHMuZ2V0KCldKTsKLSAgICAgICAgW21hdGNoT2JqZWN0
cyBhZGRPYmplY3Q6bWF0Y2guZ2V0KCldOworICAgICAgICBbbWF0Y2hPYmplY3RzIGFkZE9iamVj
dDphZG9wdE5TKFtbV0tUZXh0RmluZGVyTWF0Y2ggYWxsb2NdIGluaXRXaXRoQ2xpZW50OnNlbGYg
dmlldzpfdmlldyBpbmRleDppIHJlY3RzOm5zTWF0Y2hSZWN0cy5nZXQoKV0pLmdldCgpXTsKICAg
ICB9CiAKICAgICByZXBseUNhbGxiYWNrKG1hdGNoT2JqZWN0cy5nZXQoKSwgZGlkV3JhcEFyb3Vu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRleCAzYmQ5NDFjNzI4OTcxNzBl
Y2MxNTdiOWZlYjU3ZGE1MzcyOGU4MTMzLi43ZDIwMjQ0MzBlNjVmMTJmNzMyOTc3MTY3NzFkNmE2
NmIxYTk2ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KQEAgLTM3OSwxMCAr
Mzc5LDEwIEBAIC0gKHZvaWQpdXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0CiAKIC0gKHZvaWQpbm90aWZ5QWNjZXNz
aWJpbGl0eUNsaWVudHM6KE5TU3RyaW5nICopaW5mbwogewotICAgIE5TRGljdGlvbmFyeTxOU0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25Vc2VySW5mb0tleSwgaWQ+ICp1c2VySW5mbyA9IFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5UHJpb3JpdHlLZXksIEAoTlNBY2Nlc3NpYmlsaXR5UHJpb3JpdHlIaWdoKSwKLSAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5QW5ub3VuY2VtZW50S2V5LCBpbmZvLCBuaWxdOwotICAgIE5TQWNj
ZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8oTlNBcHAsIE5TQWNjZXNzaWJp
bGl0eUFubm91bmNlbWVudFJlcXVlc3RlZE5vdGlmaWNhdGlvbiwgdXNlckluZm8pOworICAgIE5T
QWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8oTlNBcHAsIE5TQWNjZXNz
aWJpbGl0eUFubm91bmNlbWVudFJlcXVlc3RlZE5vdGlmaWNhdGlvbiwgQHsKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5UHJpb3JpdHlLZXk6IEAoTlNBY2Nlc3NpYmlsaXR5UHJpb3JpdHlIaWdoKSwK
KyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QW5ub3VuY2VtZW50S2V5OiBpbmZvLAorICAgIH0pOwog
fQogCiAtICh2b2lkKW1vdmVTZWxlY3Rpb25CeURpcmVjdGlvbjooY29uc3QgU3RyaW5nJilkaXJl
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IGQyZDkwZTMzZjIyMWNkZjY0MDYxMWU2NDlhNWFhMTRmYzE4MTJkYTkuLjgzNDMwN2M2
OTVlODViYmUzMjUwNWY4NTQ5YmE2MThlN2YyMjNkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWFyY2hXaXRoU3BvdGxpZ2h0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
dm9pZCBXZWJQYWdlUHJveHk6OnNlYXJjaFRoZVdlYihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRX
aXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOwor
ICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW2xlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBl
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgIAogICAgIE5TUGVyZm9ybVNlcnZp
Y2UoQCJTZWFyY2ggV2l0aCAlV2ViU2VhcmNoUHJvdmlkZXJAIiwgcGFzdGVib2FyZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTUludGVybmFscy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaAppbmRleCAxNTFiOWJjZTA4NjU4NzdhYjNiNjhiN2Ex
MWEwYWNjMGVlMDJlMWQ1Li43YTNkZTgzYjJiYWIyZmI0NjkxMDc3MWE0NmRlOTJiZjY0NjM2ZTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTUludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLmgKQEAgLTEwOSw4ICsxMDksNCBAQCBX
S0RPTVRleHQgKnRvV0tET01UZXh0KFdlYkNvcmU6OlRleHQqKTsKIFdlYkNvcmU6OlJhbmdlKiB0
b1dlYkNvcmVSYW5nZShXS0RPTVJhbmdlICopOwogV0tET01SYW5nZSAqdG9XS0RPTVJhbmdlKFdl
YkNvcmU6OlJhbmdlKik7CiAKLS8vIC0tIEhlbHBlcnMgLS0KLQotTlNBcnJheSAqdG9OU0FycmF5
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KaW5kZXggZjQxZTk0YzJkYTVmZmRh
Yzk2OWUxMjY1NjY4YTJhM2I4N2EzMDA2My4uNjNjZGQyYmMyYmM0Yjc5OGI1ODc3MGI0MzFmM2Ex
NjRkOWMwZGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KQEAgLTE2MSwx
MyArMTYxLDQgQEAgc3RhdGljIFdLRE9NVHlwZSB0b1dLRE9NVHlwZShXZWJDb3JlVHlwZSBpbXBs
LCBET01DYWNoZTxXZWJDb3JlVHlwZSwgV0tET01UeXBlPiYKICAgICByZXR1cm4gW3dyYXBwZXIg
YXV0b3JlbGVhc2VdOwogfQogCi1OU0FycmF5ICp0b05TQXJyYXkoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiByZWN0cykKLXsKLSAgICBzaXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsK
LSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6c2l6ZV07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0c1tpXV1dOwot
ICAgIHJldHVybiBhcnJheTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5v
ZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTU5vZGUubW0KaW5kZXggZjljNTcxZGVlYjkzNWNlODhiNDM3YWZhNjVkN2ZmZTc2NTNiYjE5
Mi4uY2Q4MDYxZWMxYjIwM2YwMzM0NjdmNTQwYjkzN2QwYzFiNzFiODQ2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2Rl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NTm9kZS5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV0tCdW5kbGVBUElDYXN0
LmgiCiAjaW1wb3J0ICJXS0RPTUludGVybmFscy5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlv
biBXS0RPTU5vZGUKIApAQCAtMTEyLDcgKzExMyw3IEBAIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7
CiAgICAgX2ltcGwtPnRleHRSZWN0cyhyZWN0cyk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9OU0Fy
cmF5KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogQGVuZApAQCAtMTIxLDggKzEyMiw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTU5v
ZGUgKFdLUHJpdmF0ZSkKIAogLSAoV0tCdW5kbGVOb2RlSGFuZGxlUmVmKV9jb3B5QnVuZGxlTm9k
ZUhhbmRsZVJlZgogewotICAgIGF1dG8gbm9kZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJ
KG5vZGVIYW5kbGUubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKS5sZWFrUmVmKCkpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCAyMmJlNDYyNmRhMzJjNjM1
NTlkMTBhMDI4ZmFlYWYyZDJhNjVjNzZmLi5hYzZmZmIxZTk3OGM4Mzg4MTJhOGIxMWIzNzIyNDkx
OGVlZTI4ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbXBvcnQgIldLRE9NSW50ZXJuYWxzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0RPTVJhbmdlCiAKQEAgLTEzMCw3ICsx
MzEsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAgICAgX2ltcGwtPm93bmVyRG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgX2ltcGwtPmFic29sdXRlVGV4dFJlY3RzKHJlY3Rz
KTsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b05TQXJyYXkocmVjdHMpOworICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXS0RPTVJhbmdlICopcmFu
Z2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJh
Y3RlcnMgaW5EaXJlY3Rpb246KFdLRE9NUmFuZ2VEaXJlY3Rpb24pZGlyZWN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVk
QnVuZGxlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21h
Yy9JbmplY3RlZEJ1bmRsZU1hYy5tbQppbmRleCAwZTg5NGZjNDczMWM0Nzg5OGRkZDQ2YTAxMjk1
NzdlZGE4NTc0NGVkLi5hNmRhOTE5YTIyZjc1ZDk3M2E1OTdhYzk4MTEzNzhhYzIyY2RmNzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0lu
amVjdGVkQnVuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0KQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IElQQzo6RGF0YVJlZmVyZQogICAgIH0KIAogICAgIGlmICghbV9idW5kbGVQYXJhbWV0ZXJz
ICYmIHBhcmFtZXRlcikKLSAgICAgICAgbV9idW5kbGVQYXJhbWV0ZXJzID0gYWRvcHROUyhbW1dL
V2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoRGljdGlvbmFyeTpbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnldXSk7CisgICAgICAgIG1fYnVuZGxlUGFyYW1ldGVycyA9IGFk
b3B0TlMoW1tXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aERpY3Rp
b25hcnk6QHsgfV0pOwogCiAgICAgW21fYnVuZGxlUGFyYW1ldGVycyBzZXRQYXJhbWV0ZXI6cGFy
YW1ldGVyIGZvcktleTprZXldOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1tCmluZGV4
IDU2NjFlZjk2ZmExZmU0NDhlZDI1YTY1ZjNmNGVhYWUwMTU2M2JkOTIuLjM1MTNiMDM4NDRlYzAw
MDAxY2Q4ZjQ3NWM2NDZiMDZlOTAwNGUzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMu
bW0KQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgbWFrZVJlbmRlckxheWVyKENBTGF5ZXIg
KnBsdWdpbkxheWVyLCB1aW50MzJfdCBsYXllckhvc3RpbmdDb250ZXh0SUQKICAgICBDQUxheWVy
ICpyZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmxh
eWVySG9zdGluZ0NvbnRleHRJRF07CiAgICAgW3JlbmRlckxheWVyIHNldEZyYW1lOltwbHVnaW5M
YXllciBib3VuZHNdXTsKICAgICBbcmVuZGVyTGF5ZXIgc2V0QXV0b3Jlc2l6aW5nTWFzazprQ0FM
YXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVpZ2h0U2l6YWJsZV07Ci0gICAgW3BsdWdpbkxh
eWVyIHNldFN1YmxheWVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cmVuZGVyTGF5ZXJdXTsK
KyAgICBbcGx1Z2luTGF5ZXIgc2V0U3VibGF5ZXJzOkBbcmVuZGVyTGF5ZXJdXTsKIH0KIAogUGxh
dGZvcm1MYXllciogUGx1Z2luUHJveHk6OnBsdWdpbkxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDEwMTk1ZmFjYjE3
MzM4MmFmOWNlMzhiNDdlYmFkMjBjNzllZDE1NzAuLjUyNWZmMmY2MzY0NDBkN2E5NGUwZWUxN2Zh
NzNkMGU2NjQxM2IwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTMsNiArOTMsNyBAQAogI2ltcG9ydCA8d3RmL1VVSUQu
aD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKQEAgLTIzMzYs
MTAgKzIzMzcsNyBAQCB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigp
CiAKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0
ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKQogewotICAgIFZlY3Rv
cjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlczsKLQotICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4g
dHlwZXMpCi0gICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7CisgICAgYXV0byBw
YXN0ZWJvYXJkVHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4odHlwZXMpOwogCiAgICAgaW50NjRf
dCBuZXdDaGFuZ2VDb3VudDsKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IDcwZTUyODU2NDZmZjhkZjU2YTlkMjUyMTc0OGJmZDVhZjhjYzRj
NTEuLjQyN2Q0NDJhNjMyOTViYmZhOTRkMjk1OWZmYjQ3ZjRkZWU4MjgxOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0z
NzEwLDcgKzM3MTAsNyBAQCB2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSgpCiAKIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBp
c1N1c3BlbmRlZFVuZGVyTG9jaykKIHsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbCB1c2VySW5mbzpAe0AiaXNTdXNwZW5kZWRV
bmRlckxvY2siOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aXNTdXNwZW5kZWRVbmRlckxvY2td
fV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9u
IG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3VzcGVuZGVkVW5kZXJMb2NrIjogQChpc1N1c3Bl
bmRlZFVuZGVyTG9jayl9XTsKIAogICAgIG1faXNTdXNwZW5kZWRVbmRlckxvY2sgPSBpc1N1c3Bl
bmRlZFVuZGVyTG9jazsKICAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29u
OjpCYWNrZ3JvdW5kQXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCmluZGV4IDljMDg4N2U2OTNlMjg4ZWM0ZTdhM2UwMzA3ZDZkYzcxOTk5MmQ4ZDQu
LjAyOGE4OGMxNjc0OTA3OTBmNGFhZjY0ZTY1YWM3YTA1MDZiNjNlODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQogCiAgICAgLy8g
VGhpcyBpcyBhIHNpZ25hbCB0byBtZWRpYSBmcmFtZXdvcmtzOyBpdCBkb2VzIG5vdCBhY3RpdmVs
eSBwYXVzZSBhbnl0aGluZy4KICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0VmFsdWU6QFlFUyBmb3JL
ZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBh
dXNlTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07Cisg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9u
TmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUGF1c2VOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNl
ckluZm86QHsgQCJsYXllciI6IG1faG9zdGluZ0xheWVyLmdldCgpIH1dOwogfQogCiB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZygpCkBAIC01MzksNyAr
NTM5LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRp
bmcoKQogICAgIG1faXNQYWludGluZ1N1c3BlbmRlZCA9IGZhbHNlOwogCiAgICAgW21faG9zdGlu
Z0xheWVyIHNldFZhbHVlOkBOTyBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5h
bWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2Vy
SW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdl
dCgpIGZvcktleTpAImxheWVyIl1dOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5v
dGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpAeyBAImxheWVyIjogbV9ob3N0aW5nTGF5
ZXIuZ2V0KCkgfV07CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
dFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCAwOGZlN2Zk
MTRhZjIxNDIzNjIzNjc4OTk0Mjk2NmVkOWM0ZWFjYTg2Li5hMWQ2ZTMwZjQ1MTM1NDNhNWEzODZl
ODY1NmJmNThkZDA1Y2RkYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLm1tCkBAIC00MSw3ICs0MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxi
YXIuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRp
b24gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQppbmRleCBmMGNlY2EyMDY4MGM5YmFjODQxNzIzNWY3
NTRhNDRlZWMyOWM2Y2FmLi5hMDlmZjYxMzdhOThiNDAzYTUwNjY5OTUzODY2ZDczYzBmNjYyMTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQpAQCAtNDcs
NyArNDcsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKIApAQCAtMTQy
LDE2ICsxNDEsMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXMKIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgcmV0
dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlDaGlsZHJlbgogewogICAg
IGlkIHdyYXBwZXIgPSBbc2VsZiBhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXJdOwogICAg
IGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAg
cmV0dXJuIEBbXTsKICAgICAKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ondy
YXBwZXJdOworICAgIHJldHVybiBAW3dyYXBwZXJdOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMjA0ZDQ1YWIzNGY4ZWI0ZmY2NmUxNTlmZmMyYzEw
MWM4ODkzMWIzNy4uNGI0NTg0NzA4ODIwZWQ1NTFjMzVlODk1NzcyNjhiZjNlMjc1YTMxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CkBAIC04OCw2ICs4OCw3IEBACiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CkBAIC02NjQsMTIgKzY2NSw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoY29uc3QgU3RyaW5nJiBvdmVycmlkZURpc3BsYXlOYW1l
KQogdm9pZCBXZWJQcm9jZXNzOjpnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8gYWN0aXZlT3JpZ2luc0FzTlNTdHJpbmdz
ID0gYWN0aXZlUGFnZXNPcmlnaW5zKG1fcGFnZU1hcCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWN0
aXZlT3JpZ2luczsKLSAgICBhY3RpdmVPcmlnaW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW2Fj
dGl2ZU9yaWdpbnNBc05TU3RyaW5ncyBjb3VudF0pOwotICAgIGZvciAoTlNTdHJpbmcqIGFjdGl2
ZU9yaWdpbiBpbiBhY3RpdmVPcmlnaW5zQXNOU1N0cmluZ3MuZ2V0KCkpCi0gICAgICAgIGFjdGl2
ZU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKGFjdGl2ZU9yaWdpbik7Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShhY3RpdmVPcmlnaW5zKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVZlY3RvcjxTdHJpbmc+KGFjdGl2ZVBhZ2VzT3JpZ2lucyhtX3BhZ2VNYXApLmdldCgpKSk7CiAj
ZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5tbQppbmRleCAzM2U1ZWY1MWNhMjM0MGFlMTY0MDRkY2M0YWYyZjQwOTU3OGJiMWU4Li44
NzU0M2IwMDQ0NDdlM2Q4YzU0OWFkMTg3OGRjNGIzODRhYjQ2NTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50SU9TLm1tCkBAIC02Myw2ICs2Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJl
YWRNZXNzYWdlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIE5TU3RyaW5nICogY29u
c3QgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFsbG93TXVsdGlwbGVGaWxlc0tleSA9IEAiV2Vi
T3BlblBhbmVsQ29uZmlndXJhdGlvbkFsbG93TXVsdGlwbGVGaWxlc0tleSI7CiBOU1N0cmluZyAq
IGNvbnN0IFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25NZWRpYUNhcHR1cmVUeXBlS2V5ID0gQCJX
ZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVkaWFDYXB0dXJlVHlwZUtleSI7CkBAIC0xMzQsMTcg
KzEzNSwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6cnVuT3BlblBhbmVsKEZyYW1lJiwg
RmlsZUNob29zZXImIGNob29zZXIpCiAgICAgQk9PTCBhbGxvd011bHRpcGxlRmlsZXMgPSBzZXR0
aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOwogICAgIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
ICpsaXN0ZW5lciA9IFtbV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
Q2hvb3NlcjpjaG9vc2VyXTsKIAotICAgIE5TTXV0YWJsZUFycmF5ICptaW1lVHlwZXMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzLnNp
emUoKV07Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzKQot
ICAgICAgICBbbWltZVR5cGVzIGFkZE9iamVjdDp0eXBlXTsKLQogICAgIFdlYk1lZGlhQ2FwdHVy
ZVR5cGUgY2FwdHVyZVR5cGUgPSBXZWJNZWRpYUNhcHR1cmVUeXBlTm9uZTsKICNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKICAgICBjYXB0dXJlVHlwZSA9IHdlYk1lZGlhQ2FwdHVyZVR5cGUoc2V0
dGluZ3MubWVkaWFDYXB0dXJlVHlwZSk7CiAjZW5kaWYKICAgICBOU0RpY3Rpb25hcnkgKmNvbmZp
Z3VyYXRpb24gPSBAewogICAgICAgICBXZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uQWxsb3dNdWx0
aXBsZUZpbGVzS2V5OiBAKGFsbG93TXVsdGlwbGVGaWxlcyksCi0gICAgICAgIFdlYk9wZW5QYW5l
bENvbmZpZ3VyYXRpb25NaW1lVHlwZXNLZXk6IG1pbWVUeXBlcywKKyAgICAgICAgV2ViT3BlblBh
bmVsQ29uZmlndXJhdGlvbk1pbWVUeXBlc0tleTogY3JlYXRlTlNBcnJheShzZXR0aW5ncy5hY2Nl
cHRNSU1FVHlwZXMpLmdldCgpLAogICAgICAgICBXZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVk
aWFDYXB0dXJlVHlwZUtleTogQChjYXB0dXJlVHlwZSkKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9z
aXRpb24ubW0KaW5kZXggNjkxZjg1MTkzOGY4MzU3ZDc3MGQ4YzRmODRlNWQyZTZjM2VmOThlZC4u
NTQzMjVhZDgwYzNhM2E0ODdmOTBjMmYxOTE2Nzg2YWY4ZGI5ZjZlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQ
b3NpdGlvbi5tbQpAQCAtMjMsMTEgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgIldl
YlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwu
aCIKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5oPgpAQCAtNDEsMTIgKzQyLDggQEAKICNpbXBv
cnQgPFdlYkNvcmUvVGV4dEZsYWdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRHcmFudWxhcml0
eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VmlzaWJsZVBvc2l0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgotCi0K
LSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5o
IgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC00MTgsMTEgKzQxNSw3IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFu
Z2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOihOU0FycmF5ICoqKWFsdGVybmF0CiAg
ICAgYXV0byYgZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOwogICAgIGZvciAoYXV0byBtYXJr
ZXIgOiBkb2N1bWVudC5tYXJrZXJzKCkubWFya2Vyc0Zvcigqbm9kZSwgRG9jdW1lbnRNYXJrZXI6
OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMpKSB7CiAgICAgICAgIGlmIChtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0
KSB7Ci0gICAgICAgICAgICBhdXRvJiBtYXJrZXJBbHRlcm5hdGl2ZXMgPSBXVEY6OmdldDxWZWN0
b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpOwotICAgICAgICAgICAgYXV0byBhcnJheSA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTptYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgp
XTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgYWx0ZXJuYXRpdmUgOiBtYXJrZXJBbHRlcm5hdGl2
ZXMpCi0gICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDphbHRlcm5hdGl2ZV07Ci0gICAg
ICAgICAgICAqYWx0ZXJuYXRpdmVzID0gYXJyYXk7CisgICAgICAgICAgICAqYWx0ZXJuYXRpdmVz
ID0gY3JlYXRlTlNBcnJheShXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkp
KS5hdXRvcmVsZWFzZSgpOwogICAgICAgICAgICAgcmV0dXJuIGtpdChSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zm
c2V0KCkpLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b25JbnRlcm5hbC5oCmluZGV4IGQyOWYxNDEzNDI4NDkzYTVmMzZiNGIwMDEyODdiNDhjZmQyNjk3
NjQuLjc2NWM1OWQ0MzRmOGE1Zjc0Y2YwMTI5MGUwM2U4MWYyZDIyYmI0ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlv
bkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaApAQCAtMjMsOCArMjMsOSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIldlYlZpc2libGVQb3Np
dGlvbi5oIgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIldlYlZpc2libGVQ
b3NpdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlUG9zaXRpb24uaD4KIAogQGludGVy
ZmFjZSBXZWJWaXNpYmxlUG9zaXRpb24gKEludGVybmFsKQpAQCAtMzMsMyArMzQsNSBAQAogLSAo
V2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uKV92aXNpYmxlUG9zaXRpb247CiAKIEBlbmQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1Mu
bW0KaW5kZXggZjk4MmJkMTBhYzhlNWJkOGVmYTk1MjQ1NDE2YmYxYTFhODVlMjkyNi4uYmU1ZDY0
N2ZkZGJiMGJjY2VjNTMxN2MyNzc5MTU4NjcxMjYzOGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtNzUsMTAgKzc1LDEwIEBA
IEBpbXBsZW1lbnRhdGlvbiBXZWJQREZWaWV3IHsKIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1J
TUVUeXBlcwogewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJl
dHVybiBAWwogICAgICAgICBAInRleHQvcGRmIiwKICAgICAgICAgQCJhcHBsaWNhdGlvbi9wZGYi
LAotICAgICAgICBuaWxdOworICAgIF07CiB9CiAKICsgKENHQ29sb3JSZWYpc2hhZG93Q29sb3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDhiN2JhNWNhYmM4MWQ3OGI2OGFhMjRi
ZDVlZmYyNWFkMjc4YjJiYTUuLjllMTI4OTZkNzdmZTA4YmU3ZjBiNjA2ZGMxMWE3ZmExNmU0NzZm
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTgsMTAgKzU4LDEyIEBACiAj
aW1wb3J0IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZp
ZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RvdWNoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJD
b3JlL1dBS0FwcEtpdFN0dWJzLmg+CkBAIC0xNzksMTUgKzE4MSw2IEBAIHN0YXRpYyBDbGFzcyBl
bGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDbGFzcyBkZWZhdWx0Q2xhc3Mp
CiAgICAgcmV0dXJuIG9iamNDbGFzczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmtpdChjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzKQotewotICAgIHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgp
OwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhD
YXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnJlY3RzW2ldXV07
Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3Rh
dGljIFdLUXVhZCB3a1F1YWRGcm9tRmxvYXRRdWFkKGNvbnN0IEZsb2F0UXVhZCYgaW5RdWFkKQpA
QCAtNTE0LDcgKzUwNyw3IEBAIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgbm9kZS50ZXh0
UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBraXQocmVjdHMpOworICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCkBAIC02MzEsMTIgKzYyNCwx
MSBAQCAtIChDR0ltYWdlUmVmKXJlbmRlcmVkSW1hZ2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZv
cmNlQmxhY2tUZXh0CiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKIHsKLSAgICAvLyBGSVhNRTog
VGhlIGNhbGwgdG8gdXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzIHNob3VsZCBi
ZSBtb3ZlZCBpbnRvIFdlYkNvcmU6OlJhbmdlLgogICAgIGF1dG8mIHJhbmdlID0gKmNvcmUoc2Vs
Zik7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwogICAgIHJhbmdlLm93bmVy
RG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBy
YW5nZS5hYnNvbHV0ZVRleHRSZWN0cyhyZWN0cyk7Ci0gICAgcmV0dXJuIGtpdChyZWN0cyk7Cisg
ICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5T
QXJyYXkgKilsaW5lQm94UmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9F
eGNlcHRpb25IYW5kbGVycy5tbQppbmRleCBiNTAzMGQwZWU0Njk2MjVkOTMwMWY1MTcxYTA0ZDdi
ZWUxYzZmN2M2Li5jOGJlNTUxYjg1MGJjZTE3MjNhMmYxMTRlMmRlZTZjZTZkZDI5NWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCkBA
IC00OCw3ICs0OCw3IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCByYWlzZURPTUVycm9yRXhjZXB0
aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMpCiAgICAgZWxzZQogICAgICAgICByZWFzb24g
PSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlQCAlZCIsIERPTUV4Y2Vw
dGlvbiwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZV07CiAKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6ZGVzY3JpcHRpb24ubGVnYWN5Q29kZV0sIERPTUV4Y2VwdGlvbiwg
bmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6QChkZXNjcmlwdGlvbi5sZWdhY3lDb2RlKSwgRE9NRXhj
ZXB0aW9uLCBuaWxdOwogCiAgICAgTlNFeGNlcHRpb24gKmV4Y2VwdGlvbiA9IFtOU0V4Y2VwdGlv
biBleGNlcHRpb25XaXRoTmFtZTpET01FeGNlcHRpb24gcmVhc29uOnJlYXNvbiB1c2VySW5mbzp1
c2VySW5mb107CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggMThmMDEzYTBhODc1YmQzNmU4OTU1ODY2MzRhYjdk
OGIwYThiMDJiNy4uOGI5OTRlZDJkMDA3MDZkZDhlNGVkNmIyMmI2YjNiN2U5ODQ1ZjYzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExp
c3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2Fy
ZExpc3QubW0KQEAgLTE1OCwyMSArMTU4LDIxIEBAIC0gKHZvaWQpcmVtb3ZlSXRlbTooV2ViSGlz
dG9yeUl0ZW0gKilpdGVtCiAtIChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRp
b24KIHsKICAgICBCYWNrRm9yd2FyZExpc3QgKmNvcmVCRkxpc3QgPSBjb3JlKHNlbGYpOwotICAg
IAorCiAgICAgYXV0byYgaGlzdG9yeUl0ZW1zID0gY29yZUJGTGlzdC0+ZW50cmllcygpOwogICAg
IHVuc2lnbmVkIHNpemUgPSBoaXN0b3J5SXRlbXMuc2l6ZSgpOwogICAgIE5TTXV0YWJsZUFycmF5
ICplbnRyaWVzQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OnNpemVdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAg
IFtlbnRyaWVzQXJyYXkgYWRkT2JqZWN0OltraXQoY29uc3RfY2FzdDxXZWJDb3JlOjpIaXN0b3J5
SXRlbSo+KGhpc3RvcnlJdGVtc1tpXS5wdHIoKSkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbklu
Y2x1ZGluZ0NoaWxkcmVuOk5PXV07Ci0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBl
bnRyaWVzQXJyYXksIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5LAotICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvcmVCRkxpc3QtPmN1cnJlbnQo
KV0sIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlDdXJyZW50S2V5LAotICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpjb3JlQkZMaXN0LT5jYXBhY2l0eSgpXSwgV2ViQmFja0Zvcndh
cmRMaXN0RGljdGlvbmFyeUNhcGFjaXR5S2V5LAotICAgICAgICBuaWxdOwotICAgICAgICAKKwor
ICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7CisgICAgICAgIFdlYkJhY2tGb3J3YXJk
TGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5OiBlbnRyaWVzQXJyYXksCisgICAgICAgIFdlYkJhY2tG
b3J3YXJkTGlzdERpY3Rpb25hcnlDdXJyZW50S2V5OiBAKGNvcmVCRkxpc3QtPmN1cnJlbnQoKSks
CisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlDYXBhY2l0eUtleTogQChjb3Jl
QkZMaXN0LT5jYXBhY2l0eSgpKSwKKyAgICB9OworCiAgICAgW2VudHJpZXNBcnJheSByZWxlYXNl
XTsKLSAgICAKKwogICAgIHJldHVybiBkaWN0aW9uYXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggYjhiYzE0NzlhMThhODQ1NDJi
MGYzNjQzYWZiOGExMjJhNTE0M2NlYS4uZjI3NDcwZGJjMzAwY2FhMGU1Y2MwMjlhMjdiMmRhMTM5
ZmFmMjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eS5tbQpAQCAtMTE5LDExICsxMTksMTAgQEAgQGltcGxlbWVudGF0aW9uIFdlYkhpc3RvcnlQcml2
YXRlCiAKICsgKHZvaWQpaW5pdGlhbGl6ZQogewotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgIEAiMTAwMCIsIEAiV2Vi
S2l0SGlzdG9yeUl0ZW1MaW1pdCIsCi0gICAgICAgICAgICBAIjciLCBAIldlYktpdEhpc3RvcnlB
Z2VJbkRheXNMaW1pdCIsCi0gICAgICAgICAgICBuaWxdXTsgICAgCisgICAgW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpAeworICAgICAgICBA
IldlYktpdEhpc3RvcnlJdGVtTGltaXQiOiBAIjEwMDAiLAorICAgICAgICBAIldlYktpdEhpc3Rv
cnlBZ2VJbkRheXNMaW1pdCI6IEAiNyIsCisgICAgfV07CiB9CiAKIC0gKGlkKWluaXQKQEAgLTcy
NywxMiArNzI2LDExIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtICh2b2lkKV9zZW5kTm90aWZpY2F0
aW9uOihOU1N0cmluZyAqKW5hbWUgZW50cmllczooTlNBcnJheSAqKWVudHJpZXMKIHsKLSAgICBO
U0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHNBbmRLZXlzOmVudHJpZXMsIFdlYkhpc3RvcnlJdGVtc0tleSwgbmlsXTsKKyAgICBOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvID0gQHsgV2ViSGlzdG9yeUl0ZW1zS2V5OiBlbnRyaWVzIH07CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKG5hbWUs
IHNlbGYsIHVzZXJJbmZvKTsKICNlbHNlICAgIAotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0KLSAgICAgICAgcG9zdE5vdGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6
c2VsZiB1c2VySW5mbzp1c2VySW5mb107CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpuYW1lIG9iamVjdDpzZWxmIHVzZXJJbmZv
OnVzZXJJbmZvXTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBhOGQzYmMyMDY4ZjJjNzYzZjk1NTdkODFj
N2Y1ZGRmMGY1YjdlMDQ5Li5kZmFjYjM3ZDEwOTM4NWNkYTYyNTcxYjNkMDNmMzViOWI5NGU2NTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM0NiwxOSArMzQ3LDggQEAgLSAoaWQpaW5pdEZy
b21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAo
W2RpY3QgX3dlYmtpdF9ib29sRm9yS2V5Omxhc3RWaXNpdFdhc0ZhaWx1cmVLZXldKQogICAgICAg
ICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKLSAg
ICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpy
ZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKLSAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRpcmVjdFVSTHMgY291bnRdKTsKLQotICAgICAgICBm
b3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0VVJMcykgewotICAgICAgICAgICAgaWYgKCFb
cmVkaXJlY3RVUkwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT51bmNoZWNr
ZWRBcHBlbmQoKE5TU3RyaW5nICopcmVkaXJlY3RVUkwpOwotICAgICAgICB9Ci0KLSAgICAgICAg
X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBXVEZNb3ZlKHJlZGlyZWN0VVJMc1ZlY3Rvcik7Ci0g
ICAgfQorICAgIGlmIChOU0FycmF5ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5
Rm9yS2V5OnJlZGlyZWN0VVJMc0tleV0pCisgICAgICAgIF9wcml2YXRlLT5fcmVkaXJlY3RVUkxz
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4obWFrZVZlY3RvcjxTdHJpbmc+KHJlZGlyZWN0
VVJMcykpOwogCiAgICAgTlNBcnJheSAqY2hpbGREaWN0cyA9IFtkaWN0IG9iamVjdEZvcktleTpj
aGlsZHJlbktleV07CiAgICAgaWYgKGNoaWxkRGljdHMpIHsKQEAgLTQzNiwxNiArNDI2LDkgQEAg
LSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uCiAgICAgfQogICAgIGlm
IChjb3JlSXRlbS0+bGFzdFZpc2l0V2FzRmFpbHVyZSgpKQogICAgICAgICBbZGljdCBzZXRPYmpl
Y3Q6QFlFUyBmb3JLZXk6bGFzdFZpc2l0V2FzRmFpbHVyZUtleV07Ci0gICAgaWYgKFZlY3RvcjxT
dHJpbmc+KiByZWRpcmVjdFVSTHMgPSBfcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcy5nZXQoKSkgewot
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlZGlyZWN0VVJMcy0+c2l6ZSgpOwotICAgICAgICBBU1NF
UlQoc2l6ZSk7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OihOU1N0
cmluZyAqKXJlZGlyZWN0VVJMcy0+YXQoaSldOwotICAgICAgICBbZGljdCBzZXRPYmplY3Q6cmVz
dWx0IGZvcktleTpyZWRpcmVjdFVSTHNLZXldOwotICAgICAgICBbcmVzdWx0IHJlbGVhc2VdOwot
ICAgIH0KLSAgICAKKyAgICBpZiAoYXV0byByZWRpcmVjdFVSTHMgPSBfcHJpdmF0ZS0+X3JlZGly
ZWN0VVJMcy5nZXQoKSkKKyAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OmNyZWF0ZU5TQXJyYXkoKnJl
ZGlyZWN0VVJMcykuZ2V0KCkgZm9yS2V5OnJlZGlyZWN0VVJMc0tleV07CisKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChpbmNsdWRlc0NoaWxkcmVuICYmIGNvcmVJdGVtLT5jaGls
ZHJlbigpLnNpemUoKSkgewogI2Vsc2UKQEAgLTQ2OCw4ICs0NTEsOCBAQCAtIChOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OnZp
ZXdwb3J0QXJndW1lbnRzIGZvcktleTpAIldlYlZpZXdwb3J0QXJndW1lbnRzIl07CiAKICAgICBJ
bnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGNvcmUoX3ByaXZhdGUpLT5zY3JvbGxQb3NpdGlvbigp
OwotICAgIFtkaWN0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzY3JvbGxQb3Np
dGlvbi54KCldIGZvcktleTpzY3JvbGxQb2ludFhLZXldOwotICAgIFtkaWN0IHNldE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpzY3JvbGxQb3NpdGlvbi55KCldIGZvcktleTpzY3JvbGxQ
b2ludFlLZXldOworICAgIFtkaWN0IHNldE9iamVjdDpAKHNjcm9sbFBvc2l0aW9uLngoKSkgZm9y
S2V5OnNjcm9sbFBvaW50WEtleV07CisgICAgW2RpY3Qgc2V0T2JqZWN0OkAoc2Nyb2xsUG9zaXRp
b24ueSgpKSBmb3JLZXk6c2Nyb2xsUG9pbnRZS2V5XTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGRp
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNX
aXRoVGl0bGVzLm0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRo
VGl0bGVzLm0KaW5kZXggMTdiOThiODc0ODg0YTY4M2NmNmY3MDkwY2QxOTQwNzQ2OWE2MTc0Yi4u
YzFmYmQzZWM2OTYyODM2ZTE2ZDZkMDcyZDE3ZDk3ZGJjNTlmMzM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubQpAQCAtNDEs
NyArNDEsNyBAQCArIChOU0FycmF5ICopYXJyYXlXaXRoSUZVUkxzV2l0aFRpdGxlc1Bib2FyZFR5
cGUKICAgICBzdGF0aWMgTlNBcnJheSAqY2FubmVkQXJyYXkgPSBuaWw7CiAKICAgICBpZiAoY2Fu
bmVkQXJyYXkgPT0gbmlsKSB7Ci0gICAgICAgIGNhbm5lZEFycmF5ID0gW1tOU0FycmF5IGFycmF5
V2l0aE9iamVjdDpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVdIHJldGFpbl07CisgICAgICAg
IGNhbm5lZEFycmF5ID0gW0BbV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlXSByZXRhaW5dOwog
ICAgIH0KIAogICAgIHJldHVybiBjYW5uZWRBcnJheTsKQEAgLTczLDcgKzczLDcgQEAgKyh2b2lk
KXdyaXRlVVJMczooTlNBcnJheSAqKVVSTHMgYW5kVGl0bGVzOihOU0FycmF5ICopdGl0bGVzIHRv
UGFzdGVib2FyZDooTlNQYXMKICAgICAgICAgW3RpdGxlc09yRW1wdHlTdHJpbmdzIGFkZE9iamVj
dDoodGl0bGVzID09IG5pbCkgPyBAIiIgOiBbW3RpdGxlcyBvYmplY3RBdEluZGV4OmluZGV4XSBf
d2Via2l0X3N0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlXV07CiAgICAgfQogCi0gICAgW3Bhc3Rl
Ym9hcmQgc2V0UHJvcGVydHlMaXN0OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6VVJMU3RyaW5n
cywgdGl0bGVzT3JFbXB0eVN0cmluZ3MsIG5pbF0KKyAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0
eUxpc3Q6QFtVUkxTdHJpbmdzLCB0aXRsZXNPckVtcHR5U3RyaW5nc10KICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvclR5cGU6V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlXTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggNTEzN2U0MWMyNDJmY2E1
NWM0YTA5NGI2NDMzNzNlOWUwYTZmZWMyYi4uMTUxM2Y0ZTc5YjBjNDU3YzE5N2I3ZjY4MTJjYTU4
YzRkODY5MDA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJD
YWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBA
IC03MSw1MCArNzEsNDkgQEAgKyAodm9pZClpbml0aWFsaXplCiAKICsgKE5TQXJyYXkgKilzdGF0
aXN0aWNzCiB7Ci0gICAgV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgcyA9IFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5nZXRTdGF0aXN0aWNzKCk7Ci0KLSAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6cy5pbWFnZXMuY291bnRdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRzLmNvdW50XSwgQCJDU1MiLAorICAgIGF1dG8g
cyA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5nZXRTdGF0aXN0aWNzKCk7Cisg
ICAgcmV0dXJuIEBbCisgICAgICAgIEB7CisgICAgICAgICAgICBAIkltYWdlcyI6IEAocy5pbWFn
ZXMuY291bnQpLAorICAgICAgICAgICAgQCJDU1MiOiBAKHMuY3NzU3R5bGVTaGVldHMuY291bnQp
LAogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
cy54c2xTdHlsZVNoZWV0cy5jb3VudF0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQChz
LnhzbFN0eWxlU2hlZXRzLmNvdW50KSwKICNlbHNlCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDowXSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKDApLAogI2VuZGlm
Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnNjcmlwdHMuY291bnRdLCBA
IkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6cy5pbWFnZXMuc2l6ZV0sIEAiSW1hZ2VzIiwKLSAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OnMuY3NzU3R5bGVTaGVldHMuc2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAg
ICAgIEAiSmF2YVNjcmlwdCI6IEAocy5zY3JpcHRzLmNvdW50KSwKKyAgICAgICAgfSwKKyAgICAg
ICAgQHsKKyAgICAgICAgICAgIEAiSW1hZ2VzIjogQChzLmltYWdlcy5zaXplKSwKKyAgICAgICAg
ICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRzLnNpemUpLAogI2lmIEVOQUJMRShYU0xUKQot
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5zaXpl
XSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKHMueHNsU3R5bGVTaGVldHMuc2l6ZSks
CiAjZWxzZQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwK
KyAgICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRpZgotICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLnNpemVdLCBAIkphdmFTY3JpcHQiLAotICAgICAgICAg
ICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5pbWFnZXMubGl2ZVNp
emVdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNz
c1N0eWxlU2hlZXRzLmxpdmVTaXplXSAsQCJDU1MiLAorICAgICAgICAgICAgQCJKYXZhU2NyaXB0
IjogQChzLnNjcmlwdHMuc2l6ZSksCisgICAgICAgIH0sCisgICAgICAgIEB7CisgICAgICAgICAg
ICBAIkltYWdlcyI6IEAocy5pbWFnZXMubGl2ZVNpemUpLAorICAgICAgICAgICAgQCJDU1MiOiBA
KHMuY3NzU3R5bGVTaGVldHMubGl2ZVNpemUpLAogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5saXZlU2l6ZV0sIEAi
WFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQChzLnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplKSwK
ICNlbHNlCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAor
ICAgICAgICAgICAgQCJYU0wiOiBAKDApLAogI2VuZGlmCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpzLnNjcmlwdHMubGl2ZVNpemVdLCBAIkphdmFTY3JpcHQiLAotICAgICAg
ICAgICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuZGVj
b2RlZFNpemVdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpzLmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplXSAsQCJDU1MiLAorICAgICAgICAgICAgQCJK
YXZhU2NyaXB0IjogQChzLnNjcmlwdHMubGl2ZVNpemUpLAorICAgICAgICB9LAorICAgICAgICBA
eworICAgICAgICAgICAgQCJJbWFnZXMiOiBAKHMuaW1hZ2VzLmRlY29kZWRTaXplKSwKKyAgICAg
ICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplKSwKICNpZiBFTkFC
TEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVT
aGVldHMuZGVjb2RlZFNpemVdLCBAIlhTTCIsCisgICAgICAgICAgICBAIlhTTCI6IEAocy54c2xT
dHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSksCiAjZWxzZQotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRp
ZgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLmRlY29kZWRT
aXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAgICAgIG5pbF0sCi0gICAgICAgIG5pbF07Cisg
ICAgICAgICAgICBAIkphdmFTY3JpcHQiOiBAKHMuc2NyaXB0cy5kZWNvZGVkU2l6ZSksCisgICAg
ICAgIH0sCisgICAgXTsKIH0KIAogKyAodm9pZCllbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggNDY2NjY1MzQyYTFlYTM5
Zjc3MGI3NjA4NGI0YmIyY2MzOGU1M2JlMC4uNGM0ZmVjNzhmM2FiOTVhMWRjMDc0YWU3YTQ4Zjk5
MGYyYzE1Mzc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNv
cmVTdGF0aXN0aWNzLm1tCkBAIC0xOTksMjIgKzE5OSwyMCBAQCArICh2b2lkKXN0b3BJZ25vcmlu
Z1dlYkNvcmVOb2RlTGVha3MKIAogKyAoTlNEaWN0aW9uYXJ5ICopbWVtb3J5U3RhdGlzdGljcwog
ewotICAgIFdURjo6RmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBX
VEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7Ci0gICAgCisgICAgYXV0byBmYXN0TWFsbG9jU3Rh
dGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhjb21tb25WTSgpKTsKICAgICBzaXplX3QgaGVhcFNpemUgPSBjb21tb25WTSgpLmhlYXAu
c2l6ZSgpOwogICAgIHNpemVfdCBoZWFwRnJlZSA9IGNvbW1vblZNKCkuaGVhcC5jYXBhY2l0eSgp
IC0gaGVhcFNpemU7Ci0gICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0
cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKLSAgICAKLSAgICByZXR1cm4gW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OmZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlc10s
IEAiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6ZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlc10sIEAi
RmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiLAotICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXNdLCBAIkZhc3RN
YWxsb2NGcmVlTGlzdEJ5dGVzIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpoZWFwU2l6ZV0sIEAiSmF2YVNjcmlwdEhlYXBTaXplIiwKLSAgICAgICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWFwRnJlZV0sIEAiSmF2YVNjcmlwdEZyZWVTaXplIiwK
LSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Oih1bnNpZ25l
ZCBpbnQpZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlc10sIEAiSmF2YVNjcmlwdFN0YWNrU2l6
ZSIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDoodW5z
aWduZWQgaW50KWdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzXSwgQCJKYXZhU2NyaXB0SklUU2l6
ZSIsCi0gICAgICAgICAgICBuaWxdOworICAgIGF1dG8gZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9i
YWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAgcmV0dXJuIEB7CisgICAgICAgIEAiRmFzdE1hbGxv
Y1Jlc2VydmVkVk1CeXRlcyI6IEAoZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVz
KSwKKyAgICAgICAgQCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyI6IEAoZmFzdE1hbGxvY1N0
YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyksCisgICAgICAgIEAiRmFzdE1hbGxvY0ZyZWVMaXN0
Qnl0ZXMiOiBAKGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpLAorICAgICAgICBA
IkphdmFTY3JpcHRIZWFwU2l6ZSI6IEAoaGVhcFNpemUpLAorICAgICAgICBAIkphdmFTY3JpcHRG
cmVlU2l6ZSI6IEAoaGVhcEZyZWUpLAorICAgICAgICBAIkphdmFTY3JpcHRTdGFja1NpemUiOiBA
KGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpLAorICAgICAgICBAIkphdmFTY3JpcHRKSVRT
aXplIjogQChnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcyksCisgICAgfTsKIH0KIAogKyAodm9p
ZClyZXR1cm5GcmVlTWVtb3J5VG9TeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYktpdEVycm9ycy5tCmluZGV4IGM1Mjc4Mzc0ZTk0ZTIwMTZjOTYwODhhMDFmNWQ4NWE1ZGMz
OGU2YTMuLjhiM2JiMjNlZDMxYmFlYjQzOThmMjRlYzUxZjI0M2YxMTVhNzhmMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJvcnMubQpAQCAtNzEsMTIgKzcxLDEy
IEBAIC0gKGluc3RhbmNldHlwZSlfd2Via2l0X2luaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKWRv
bWFpbiBjb2RlOihpbnQpY29kZSBVUkw6KE5TCiB7CiAgICAgLy8gSW5zZXJ0IGEgbG9jYWxpemVk
IHN0cmluZyBoZXJlIGZvciB0aG9zZSBmb2xrcyBub3Qgc2F2dnkgdG8gb3VyIGNhdGVnb3J5IG1l
dGhvZHMuCiAgICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnNEaWN0ID0gW2Rlc2NyaXB0aW9u
cyBvYmplY3RGb3JLZXk6ZG9tYWluXTsKLSAgICBOU1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRp
b24gPSBkZXNjcmlwdGlvbnNEaWN0ID8gW2Rlc2NyaXB0aW9uc0RpY3Qgb2JqZWN0Rm9yS2V5OltO
U051bWJlciBudW1iZXJXaXRoSW50OmNvZGVdXSA6IG5pbDsKLSAgICBOU0RpY3Rpb25hcnkgKmRp
Y3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
IFVSTCwgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCi0gICAgICAgIFtVUkwgYWJzb2x1dGVTdHJp
bmddLCBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5LAotICAgICAgICBsb2NhbGl6
ZWREZXNjcmlwdGlvbiwgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwKLSAgICAgICAgbmlsXTsK
KyAgICBOU1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbnNEaWN0ID8g
W2Rlc2NyaXB0aW9uc0RpY3Qgb2JqZWN0Rm9yS2V5OkAoY29kZSldIDogbmlsOworICAgIE5TRGlj
dGlvbmFyeSAqZGljdCA9IEB7CisgICAgICAgIEAiTlNFcnJvckZhaWxpbmdVUkxLZXkiOiBVUkws
CisgICAgICAgIE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk6IFtVUkwgYWJzb2x1
dGVTdHJpbmddLAorICAgICAgICBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbiwKKyAgICB9OwogICAgIHJldHVybiBbc2VsZiBpbml0V2l0aERvbWFpbjpkb21h
aW4gY29kZTpjb2RlIHVzZXJJbmZvOmRpY3RdOwogfQogCkBAIC05MSwyMSArOTEsMjEgQEAgKyAo
dm9pZClfcmVnaXN0ZXJXZWJLaXRFcnJvcnMKICAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAg
ICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgLy8gUG9saWN5IGVycm9ycwotICAg
ICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RTaG93TUlNRVR5cGUsICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5v
dFNob3dNSU1FVHlwZV0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNh
bm5vdFNob3dVUkwsICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6IFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTF0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsICAgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZV0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFVz
ZVJlc3RyaWN0ZWRQb3J0LCAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdl
YktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnRdLAotICAgICAgICAgICAgICAgIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyLCAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckZyYW1lTG9hZEJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJdLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RT
aG93TUlNRVR5cGUsICAgICAgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlN
RVR5cGUpLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RTaG93
VVJMLCAgICAgICAgICAgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKSwK
KyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uRnJhbWVMb2FkSW50ZXJydXB0
ZWRCeVBvbGljeUNoYW5nZSwgICBAKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSksCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5v
dFVzZVJlc3RyaWN0ZWRQb3J0LCAgICAgICAgICAgICAgQChXZWJLaXRFcnJvckNhbm5vdFVzZVJl
c3RyaWN0ZWRQb3J0KSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uRnJh
bWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAgICBAKFdlYktpdEVycm9yRnJhbWVMb2Fk
QmxvY2tlZEJ5Q29udGVudEZpbHRlciksCiAKICAgICAgICAgICAgICAgICAvLyBQbHVnLWluIGFu
ZCBqYXZhIGVycm9ycwotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5u
b3RGaW5kUGx1Z2luLCAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OiBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnSW5dLAotICAgICAgICAgICAgICAgIFdlYktpdEVy
cm9yRGVzY3JpcHRpb25DYW5ub3RMb2FkUGx1Z2luLCAgICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW5dLAotICAgICAg
ICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25KYXZhVW5hdmFpbGFibGUsICAgICAgICAg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckphdmFVbmF2
YWlsYWJsZV0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbkNh
bmNlbGxlZENvbm5lY3Rpb24sICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdl
YktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbl0sCi0gICAgICAgICAgICAgICAgV2Vi
S2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbldpbGxIYW5kbGVMb2FkLCAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWRd
LAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RGaW5kUGx1Z2lu
LCAgICAgICAgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luKSwKKyAg
ICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90TG9hZFBsdWdpbiwgICAg
ICAgICAgICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbiksCisgICAgICAg
ICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkphdmFVbmF2YWlsYWJsZSwgICAgICAgICAg
ICAgICAgICAgICAgQChXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSksCisgICAgICAgICAgICAg
ICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24sICAgICAg
ICAgICAgQChXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24pLAorICAgICAgICAg
ICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5XaWxsSGFuZGxlTG9hZCwgICAgICAg
ICAgICAgICAgIEAoV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCksCiAKICAgICAgICAg
ICAgICAgICAvLyBHZW9sb2NhdGlvbiBlcnJvcnMKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd24sICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93bl0s
CisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkdlb2xvY2F0aW9uTG9jYXRp
b25Vbmtub3duLCAgICAgICAgICAgQChXZWJLaXRFcnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtu
b3duKSwKICAgICAgICAgICAgICAgICBuaWxdOwogCiAgICAgICAgICAgICBbTlNFcnJvciBfd2Vi
a2l0X2FkZEVycm9yc1dpdGhDb2Rlc0FuZERlc2NyaXB0aW9uczpkaWN0IGluRG9tYWluOldlYktp
dEVycm9yRG9tYWluXTsKQEAgLTEzOSw3ICsxMzksNyBAQCAtIChpZClfaW5pdFdpdGhQbHVnaW5F
cnJvckNvZGU6KGludCljb2RlCiAgICAgCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdXNlcklu
Zm8gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgIE5TRGljdGlvbmFy
eSAqZGVzY3JpcHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gPSBbZGVzY3JpcHRpb25zIG9iamVj
dEZvcktleTpXZWJLaXRFcnJvckRvbWFpbl07Ci0gICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2Ny
aXB0aW9uID0gW2Rlc2NyaXB0aW9uc0ZvcldlYktpdEVycm9yRG9tYWluIG9iamVjdEZvcktleTpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpjb2RlXV07CisgICAgTlNTdHJpbmcgKmxvY2FsaXplZERl
c2NyaXB0aW9uID0gW2Rlc2NyaXB0aW9uc0ZvcldlYktpdEVycm9yRG9tYWluIG9iamVjdEZvcktl
eTpAKGNvZGUpXTsKICAgICBpZiAobG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIFt1c2Vy
SW5mbyBzZXRPYmplY3Q6bG9jYWxpemVkRGVzY3JpcHRpb24gZm9yS2V5Ok5TTG9jYWxpemVkRGVz
Y3JpcHRpb25LZXldOwogICAgIGlmIChjb250ZW50VVJMKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQppbmRleCA2YjBlODk2
NzVhMGQxMjA4ZDljYTk1ODI5YTU2MDUxYTY3YmFjMjE1Li43MzkyZjEwNTliY2I0NWU5NTIwYWY4
Yjk2MmNmNDAzNWJhYjgyZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KQEAgLTk5LDcgKzk5LDcgQEAgLSAodm9pZClf
d2ViX2RyYXdBdFBvaW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENv
bG9yOihOU0NvbG9yICoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9pbnQueSArPSBbZm9u
dCBkZXNjZW5kZXJdOwogCi0gICAgICAgIFtzZWxmIGRyYXdBdFBvaW50OnBvaW50IHdpdGhBdHRy
aWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpmb250LCBO
U0ZvbnRBdHRyaWJ1dGVOYW1lLCB0ZXh0Q29sb3IsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRl
TmFtZSwgbmlsXV07CisgICAgICAgIFtzZWxmIGRyYXdBdFBvaW50OnBvaW50IHdpdGhBdHRyaWJ1
dGVzOkB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IGZvbnQsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmli
dXRlTmFtZTogdGV4dENvbG9yIH1dOwogICAgIH0KIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIC0g
KGZsb2F0KV93ZWJfd2lkdGhXaXRoRm9udDooTlNGb250ICopZm9udAogICAgICAgICByZXR1cm4g
d2ViQ29yZUZvbnQud2lkdGgocnVuKTsKICAgICB9CiAKLSAgICByZXR1cm4gW3NlbGYgc2l6ZVdp
dGhBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpm
b250LCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBuaWxdXS53aWR0aDsKKyAgICByZXR1cm4gW3NlbGYg
c2l6ZVdpdGhBdHRyaWJ1dGVzOkB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IGZvbnQgfV0ud2lkdGg7
CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXggYzU0MTNlODFj
NmEzZWNiMmVjOTc4MWY2YjhiZmQ2YzJiMmEwNWRmMS4uYmJmZmFkZTY1YmQxNzhlMmEzZjZhMmM0
MGRjNjA2ZTBhNDgwYWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpAQCAtMzQsNyArMzQsNiBAQAogI2ltcG9y
dCA8c3lzL3N0YXQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAKIEBpbXBs
ZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJh
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCmluZGV4IGJiYjYyY2JhZmRiYmUwOTg3NWEyY2U0NTU4OGM4OGExNzhhZmZjZWQuLmUxYzVl
ZWIzMjgzZjA2NmQ4MTJjY2IwNTZjNDcwN2YzNTJiMDg3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC0xMDYs
NyArMTA2LDcgQEAgKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVk
aW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlCiAKICsgKE5TQXJyYXkgKilfd2ViX2RyYWdUeXBl
c0ZvclVSTAogewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJl
dHVybiBAWwogICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsCiAgICAgICAgIGxl
Z2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksCiAgICAgICAgIFdlYlVSTFBib2FyZFR5cGUsCkBAIC0x
MTQsNyArMTE0LDcgQEAgKyAoTlNBcnJheSAqKV93ZWJfZHJhZ1R5cGVzRm9yVVJMCiAgICAgICAg
IGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksCiAgICAgICAgIGxlZ2FjeUZpbGVuYW1lc1Bh
c3RlYm9hcmRUeXBlKCksCiAgICAgICAgIGxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBl
KCksCi0gICAgICAgIG5pbF07CisgICAgXTsKIH0KIAogLSAoTlNVUkwgKilfd2ViX2Jlc3RVUkwK
QEAgLTE3Nyw3ICsxNzcsNyBAQCAtICh2b2lkKV93ZWJfd3JpdGVVUkw6KE5TVVJMICopVVJMIGFu
ZFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHR5cGVzOihOU0FycmF5ICopdAogICAgIGlmIChbdHlw
ZXMgY29udGFpbnNPYmplY3Q6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAg
IFtzZWxmIHNldFN0cmluZzpbVVJMIF93ZWJfdXNlclZpc2libGVTdHJpbmddIGZvclR5cGU6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVj
dDpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVdKQotICAgICAgICBbV2ViVVJMc1dpdGhUaXRs
ZXMgd3JpdGVVUkxzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpVUkxdIGFuZFRpdGxlczpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6dGl0bGVdIHRvUGFzdGVib2FyZDpzZWxmXTsKKyAgICAgICAg
W1dlYlVSTHNXaXRoVGl0bGVzIHdyaXRlVVJMczpAW1VSTF0gYW5kVGl0bGVzOkBbdGl0bGVdIHRv
UGFzdGVib2FyZDpzZWxmXTsKIH0KIAogKyAoaW50KV93ZWJfc2V0RmluZFBhc3RlYm9hcmRTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhPd25lcjooaWQpb3duZXIKQEAgLTE4NSw3ICsxODUs
NyBAQCArIChpbnQpX3dlYl9zZXRGaW5kUGFzdGVib2FyZFN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgd2l0aE93bmVyOihpZClvd25lcgogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgTlNQYXN0ZWJvYXJkICpmaW5kUGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQg
cGFzdGVib2FyZFdpdGhOYW1lOk5TRmluZFBib2FyZF07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECi0gICAgW2ZpbmRQYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6b3du
ZXJdOworICAgIFtmaW5kUGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSBvd25lcjpvd25lcl07CiAgICAgW2ZpbmRQYXN0ZWJvYXJkIHNldFN0cmlu
ZzpzdHJpbmcgZm9yVHlwZTpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICByZXR1
cm4gW2ZpbmRQYXN0ZWJvYXJkIGNoYW5nZUNvdW50XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4IGMwZTdmYTkzMWE0ZjRhYzUzNTcy
NDY0ZmEwNmIwYjAwMTM3YTVjNzMuLjdlOTg5MmZjM2QyMmRiNTI5MWJlNGE2NjEyOTQ0NWRmYWFm
ODNjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJh
cy5tbQpAQCAtMzksNyArMzksNiBAQAogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9y
dCA8dW5pY29kZS91c2NyaXB0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1h
bmFnZXIubW0KaW5kZXggYTA0YmM1NTdiZmRkYzk3NmZkMTgwNWFmZWI3ODY1YjRkMTI3YWU2ZC4u
OTU2MWQyMmViYmZiOWVhNDlkNGY4ODM2YjJmMGZkNTk1Y2E2OGQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCkBAIC0xNDEsMTcgKzE0MSwxNCBAQCBib29sIE5ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXI6OnNwYXduUGx1Z2luSG9zdChjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIGNwdV90eQogICAgIE5TU3RyaW5nICpwbHVnaW5Ib3N0QXBwUGF0aCA9IFtbTlNCdW5k
bGUgYnVuZGxlRm9yQ2xhc3M6W1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBjbGFzc11dIHBhdGhG
b3JBdXhpbGlhcnlFeGVjdXRhYmxlOnBsdWdpbkhvc3RBcHBOYW1lXTsKICAgICBOU1N0cmluZyAq
cGx1Z2luSG9zdEFwcEV4ZWN1dGFibGVQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoUGF0aDpw
bHVnaW5Ib3N0QXBwUGF0aF0gZXhlY3V0YWJsZVBhdGhdOwogCi0gICAgTlNEaWN0aW9uYXJ5ICps
YXVuY2hQcm9wZXJ0aWVzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0Fu
ZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbkhvc3RB
cHBFeGVjdXRhYmxlUGF0aCwgQCJwbHVnaW5Ib3N0UGF0aCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnBsdWdpbkFyY2hpdGVj
dHVyZV0sIEAiY3B1VHlwZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUoKSwgQCJsb2NhbGl6YXRpb24iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotCisgICAgTlNEaWN0aW9u
YXJ5ICpsYXVuY2hQcm9wZXJ0aWVzID0gQHsKKyAgICAgICAgQCJwbHVnaW5Ib3N0UGF0aCI6IHBs
dWdpbkhvc3RBcHBFeGVjdXRhYmxlUGF0aCwKKyAgICAgICAgQCJjcHVUeXBlIjogQChwbHVnaW5B
cmNoaXRlY3R1cmUpLAorICAgICAgICBAImxvY2FsaXphdGlvbiI6IHByZWZlcnJlZEJ1bmRsZUxv
Y2FsaXphdGlvbk5hbWUoKSwKKyAgICB9OwogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5
TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6bGF1bmNoUHJvcGVydGllcyBm
b3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6bnVs
bHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwogCi0gICAgW2xhdW5jaFByb3BlcnRpZXMgcmVsZWFz
ZV07Ci0KICAgICBrZXJuX3JldHVybl90IGtyID0gX1dLUEFTcGF3blBsdWdpbkhvc3QobV9wbHVn
aW5WZW5kb3JQb3J0LCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0PHZvaWQq
PihbZGF0YSBieXRlc10pKSwgW2RhdGEgbGVuZ3RoXSwgJnBsdWdpbkhvc3RQb3J0KTsKIAogICAg
IGlmIChrciA9PSBNQUNIX1NFTkRfSU5WQUxJRF9ERVNUKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdFByb3h5Lm1tCmluZGV4IDNiMjk2NjZmN2RmNmE3ZGNjYTc5ZDEwMzkzMzgwYjYzOGI0ODE0
NGEuLmM2NDc3NGRjNDdlM2VlNTk1M2QyZDQ5ZWRlYjdlMGJjNzhkY2IwYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC05NDcsNyArOTQ3LDcgQEAga2Vybl9yZXR1cm5f
dCBXS1BDSWRlbnRpZmllckluZm8obWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDY0X3Qgc2Vy
dmVySWRlbnRpZmkKICAgICAgICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5n
KCk7CiAgICAgICAgIGluZm8gPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKXN0
ciBsZW5ndGg6c3RybGVuKHN0cikgZnJlZVdoZW5Eb25lOk5PXTsKICAgICB9IGVsc2UgCi0gICAg
ICAgIGluZm8gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDppZGVudGlmaWVyLT5udW1iZXIoKV07
CisgICAgICAgIGluZm8gPSBAKGlkZW50aWZpZXItPm51bWJlcigpKTsKIAogICAgIE5TRGF0YSAq
ZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6
aW5mbyBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJy
b3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCmluZGV4IGRjNjJkNTU0MTQyYTMxYzhhODA1NjZiZDZkZDNhZTdlZTk0
YjM1MjUuLmE2MTQ1ZTAyZDNkNjM1ZjNhZDQxNDI5ZDU3MzlkMDMzOWRjNDI0NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTEzMjIsMjggKzEzMjIsMjgg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheShOU011
dGFibGVBcnJheSAqYXJyYXksIEpTR2xvYmEKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAK
ICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoSW50OlN0cmluZ1ZhbHVlVHlwZV1dOworICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAoU3RyaW5nVmFsdWVUeXBlKV07CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6
YXNTdHJpbmcodmFsdWUpLT52YWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0KV07CiAgICAgfSBlbHNl
IGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6RG91YmxlVmFsdWVUeXBlXV07Ci0gICAgICAgIFthcnJheSBhZGRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUudG9OdW1iZXIobGV4aWNhbEds
b2JhbE9iamVjdCldXTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKERvdWJsZVZhbHVlVHlw
ZSldOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAodmFsdWUudG9OdW1iZXIobGV4aWNhbEds
b2JhbE9iamVjdCkpXTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Qm9vbFZhbHVlVHlw
ZV1dOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoQm9vbFZhbHVlVHlwZSldOwogICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDp2YWx1ZS50b0Jvb2xl
YW4obGV4aWNhbEdsb2JhbE9iamVjdCldXTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzTnVsbCgp
KQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Ok51bGxW
YWx1ZVR5cGVdXTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKE51bGxWYWx1ZVR5cGUpXTsK
ICAgICBlbHNlIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgICAgIHVpbnQ2NF90IG9iamVjdElEOwogICAgICAg
ICBpZiAoZ2V0T2JqZWN0SUQodGhpcywgb2JqZWN0LCBvYmplY3RJRCkpIHsKLSAgICAgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TlBPYmplY3RWYWx1ZVR5
cGVdXTsKLSAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6b2JqZWN0SURdXTsKKyAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChOUE9iamVjdFZh
bHVlVHlwZSldOworICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKG9iamVjdElEKV07CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoSW50OkpTT2JqZWN0VmFsdWVUeXBlXV07Ci0gICAgICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0
KHZtLCBvYmplY3QpXV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoSlNPYmplY3RW
YWx1ZVR5cGUpXTsKKyAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChtX2xvY2FsT2JqZWN0
cy5pZEZvck9iamVjdCh2bSwgb2JqZWN0KSldOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Vm9pZFZhbHVlVHlw
ZV1dOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoVm9pZFZhbHVlVHlwZSldOwogfQogCiB2
b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bWFyc2hhbFZhbHVlKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBkYXRhX3QmIHJlc3VsdERh
dGEsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QmIHJlc3VsdExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA2MzgwMWUxY2FiYWNiYWFmMTAxYTAzOGFj
ZTUwNTI2ZjAzZjFhZmM5Li4wYWMxNzZjZWExY2Q0ZmJjNjZjMWFhMzYxNzUyZTZmMDc3ZjJlZGM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJI
b3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC01MSw3ICs1
MSw2IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgotI2ltcG9ydCA8
d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4IDcxZTQzNjU0NmE5Y2Q0ODJh
OTU1YTBhODBiNTBjOTllZWRhZjE5NTkuLmY2YTc0NzdjZDFkZmMyYjQ1ZWNhMDJjZDJkZDgxZmY1
NzY2M2MwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
QmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCA8bWFj
aC1vL2xvYWRlci5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQppbmRleCAyOTEzOTNiZmNjMDYyOGVmZDIx
ZWE1MWI1NzU5NmE3OGVlYzczZjc2Li43NDA4ODhmZDk2ODIxYTM0MjljNDc5NDExNzVhMzcwMGQ1
MDc3ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBs
dWdpbkNvbnRhaW5lckNoZWNrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KQEAgLTEwNywxMSArMTA3LDExIEBAIC0gKEJP
T0wpX2lzRm9yYmlkZGVuRmlsZUxvYWQKIAogLSAoTlNEaWN0aW9uYXJ5ICopX2FjdGlvbkluZm9y
bWF0aW9uV2l0aFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICByZXR1cm4gW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6V2ViTmF2aWdhdGlvblR5cGVQbHVnSW5SZXF1ZXN0XSwgV2ViQWN0aW9uTmF2
aWdhdGlvblR5cGVLZXksCi0gICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDow
XSwgV2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleSwKLSAgICAgICAgICAgICAgIFVSTCwgV2ViQWN0
aW9uT3JpZ2luYWxVUkxLZXksCi0gICAgICAgICAgICAgICBuaWxdOworICAgIHJldHVybiBAewor
ICAgICAgICBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleTogQChXZWJOYXZpZ2F0aW9uVHlwZVBs
dWdJblJlcXVlc3QpLAorICAgICAgICBXZWJBY3Rpb25Nb2RpZmllckZsYWdzS2V5OiBAKDApLAor
ICAgICAgICBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleTogVVJMLAorICAgIH07CiB9CiAKIC0gKHZv
aWQpX2Fza1BvbGljeURlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQppbmRleCA0OWRlNDVkNGJmMjY3YzEwMjdlYzcz
MjM3NmQ4YWM4NTdkOTc3ZTExLi4wOTNlNjk3NWQ0MWVjODI4YWI1MmNmMzhkNGI5NjZkOGYzZjk1
ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdp
bkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1
Z2luRGF0YWJhc2UubW0KQEAgLTM5MCwxMSArMzkwLDExIEBAICsgKE5TQXJyYXkgKilfZGVmYXVs
dFBsdWdJblBhdGhzCiAgICAgLy8gRm9yIGV4YW1wbGUsIGlmIHRoZXJlIGlzIGEgUXVpY2tUaW1l
LnBsdWdpbiBpbiB0aGUgdXNlcnMncyBob21lIGRpcmVjdG9yeQogICAgIC8vIHRoYXQgaXMgdXNl
ZCBpbnN0ZWFkIG9mIHRoZSAvTGlicmFyeS9JbnRlcm5ldCBQbHVnLWlucyB2ZXJzaW9uLgogICAg
IC8vIFRoZSBwdXJwb3NlIGlzIHRvIGFsbG93IG5vbi1hZG1pbiB1c2VycyB0byB1cGRhdGUgdGhl
aXIgcGx1Zy1pbnMuCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAg
cmV0dXJuIEBbCiAgICAgICAgIFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJMaWJyYXJ5L0ludGVybmV0IFBsdWctSW5zIl0sCiAgICAgICAgIEAiL0xp
YnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMiLAogICAgICAgICBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1aWx0SW5QbHVnSW5zUGF0aF0sCi0gICAgICAgIG5pbF07CisgICAgXTsKICNlbHNlCiAgICAg
Ly8gaU9TIHBsdWctaW5zIGFyZSBhbGwgbG9jYXRlZCBpbiAvU3lzdGVtL0xpYnJhcnkvSW50ZXJu
ZXQgUGx1Zy1JbnMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCkBAIC00MDYs
NyArNDA2LDcgQEAgKyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0aHMKICAgICBOU1N0cmlu
ZyogcGxhdGZvcm1Sb290RGlyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOldlYktp
dFBsYXRmb3JtU3lzdGVtUm9vdERpcmVjdG9yeSgpXTsKICAgICBOU1N0cmluZyAqc3lzdGVtRGly
ID0gW3BsYXRmb3JtUm9vdERpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTeXN0
ZW0vTGlicmFyeSJdOwogI2VuZGlmCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dDpbc3lzdGVtRGlyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkludGVybmV0IFBs
dWctSW5zIl1dOworICAgIHJldHVybiBAW1tzeXN0ZW1EaXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiSW50ZXJuZXQgUGx1Zy1JbnMiXV07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQpp
bmRleCA3M2UyMzMxZWJiNmNmYWVkZWVhNGMxZDJmMTJhZDBiYWQ1MjI2NTNjLi5lNzI3NWM3NGRk
ZDc2NzFiNDUyY2I3ZDdkZGQzMWEzZWIzNDQzYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQpAQCAtMzEsMTAgKzMx
LDEwIEBACiAjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbXBvcnQgIldl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5h
bC5oIgotCiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAjaW1wb3J0ICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCkBAIC0xMDYsMTEg
KzEwNiw3IEBAIC0gKE5TQXJyYXkgKilkYXRhYmFzZXNXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbgogewogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3IgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLmRhdGFiYXNlTmFtZXMoW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7Ci0gICAgTlNNdXRhYmxl
QXJyYXkgKm5hbWVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpu
YW1lVmVjdG9yLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZVZlY3RvcikKLSAg
ICAgICAgW25hbWVzIGFkZE9iamVjdDooTlNTdHJpbmcgKiluYW1lXTsKLSAgICByZXR1cm4gW25h
bWVzIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMoW29yaWdpbiBfY29yZV0tPmRhdGEoKSkpLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKWRldGFpbHNGb3JEYXRhYmFzZToo
TlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCA4OTVjNGIyZDQ5ZGMxYzhmYjMwOGJi
MzgwMGIwYjkxOTQ2NTViZmQzLi4wOGQ2NGEyOTI1OWU0ZWMyMTYyN2QyOWRmNDc0ZmE3YTYxNzc5
MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9D
b3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0yMiwxMSArMjIsMTQgQEAKICAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCiAjaW1wb3J0
ICJDb3JyZWN0aW9uUGFuZWwuaCIKIAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9Q
QU5FTCkKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBpbmxpbmUgTlNDb3Jy
ZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2ZVRl
eHRUeXBlIGFsdGVybmF0aXZlVGV4dFR5cGUpCkBAIC02OSwxNSArNzIsMTEgQEAgdm9pZCBDb3Jy
ZWN0aW9uUGFuZWw6OnNob3coV2ViVmlldyogdmlldywgQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBl
LCBjb25zdCBGbG9hdFIKICAgICBtX3ZpZXcgPSB2aWV3OwogICAgIE5TQ29ycmVjdGlvbkluZGlj
YXRvclR5cGUgaW5kaWNhdG9yVHlwZSA9IGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKHR5cGUpOwog
ICAgIAotICAgIE5TTXV0YWJsZUFycmF5KiBhbHRlcm5hdGl2ZVN0cmluZ3MgPSAwOwotICAgIGlm
ICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNp
emVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgpOwotICAgICAg
ICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07Ci0gICAgfQorICAgIFJldGFpblB0cjxOU0FycmF5PiBh
bHRlcm5hdGl2ZVN0cmluZ3M7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cy5pc0VtcHR5KCkpCisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IGNyZWF0ZU5TQXJyYXko
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOmluZGljYXRv
clR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRp
dmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6W3ZpZXcgX2NvbnZl
cnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZ10gdmlldzptX3Zp
ZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsK
KyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25J
bmRpY2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3Ry
aW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzLmdldCgp
IGZvclN0cmluZ0luUmVjdDpbdmlldyBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nXSB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgewogICAgICAgICBoYW5kbGVBY2NlcHRlZFJlcGxh
Y2VtZW50KGFjY2VwdGVkU3RyaW5nLCByZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcsIHJlcGxhY2Vt
ZW50U3RyaW5nQXNOU1N0cmluZywgaW5kaWNhdG9yVHlwZSk7CiAgICAgfV07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KaW5kZXggNjZmMWI0MTJjMmVjNjZiMzJlNDRhZThhZTIxZDA5MGM3NTcyZmExZS4u
NmQ2OGRmN2M3MjdlNzExYWU2ZjI2ODUzZGRkZTkyYjM1ZTRkODRiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQpAQCAtNDYwLDggKzQ2MCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdl
VG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2CiAgICAgTlNT
dHJpbmcgKm1lc3NhZ2VTb3VyY2UgPSBzdHJpbmdGb3JNZXNzYWdlU291cmNlKHNvdXJjZSk7CiAg
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgIChOU1N0cmluZyAqKW1lc3NhZ2UsIEAibWVzc2Fn
ZSIsCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6bGluZU51bWJlcl0s
IEAibGluZU51bWJlciIsCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
Y29sdW1uTnVtYmVyXSwgQCJjb2x1bW5OdW1iZXIiLAorICAgICAgICBAKGxpbmVOdW1iZXIpLCBA
ImxpbmVOdW1iZXIiLAorICAgICAgICBAKGNvbHVtbk51bWJlciksIEAiY29sdW1uTnVtYmVyIiwK
ICAgICAgICAgKE5TU3RyaW5nICopc291cmNlVVJMLCBAInNvdXJjZVVSTCIsCiAgICAgICAgIG1l
c3NhZ2VTb3VyY2UsIEAiTWVzc2FnZVNvdXJjZSIsCiAgICAgICAgIHN0cmluZ0Zvck1lc3NhZ2VM
ZXZlbChsZXZlbCksIEAiTWVzc2FnZUxldmVsIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA5YWQ0
NmM2MDQ3MDEyZWIzZTQyMzgwNGQ0MDcyMDcwMjU3ZGM1ZTQ2Li44YTc1M2M1OTAxNzIyYWNhY2I0
YzMwNTBhMzFlMWJmNzA4Y2I1NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC04Myw2ICs4Myw3
IEBACiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgog
I2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5o
PgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtNDU3LDcgKzQ1OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNG
b3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiAgICAgc3RhdGljIE5TU3RyaW5nICogY29u
c3QgTlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGUgPSBAIkV4Y2x1ZGVkRWxlbWVu
dHMiOwogI2VuZGlmCiAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmV4Y2x1ZGVkRWxlbWVudHMgZm9yS2V5Ok5TRXhjbHVk
ZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25h
cnkgPSBAeyBOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZTogZXhjbHVkZWRFbGVt
ZW50cyB9OwogCiAgICAgW2V4Y2x1ZGVkRWxlbWVudHMgcmVsZWFzZV07CiAKQEAgLTEwNzksMTUg
KzEwODAsOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleAogICAgICAgICBbY2hlY2tlciBjaGVj
a1N0cmluZzpjb250ZXh0IHJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRleHQubGVuZ3RoKCkpIHR5
cGVzOk5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IG9wdGlvbnM6b3B0aW9ucyBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6Jm9y
dGhvZ3JhcGh5IHdvcmRDb3VudDowXTsKICAgICAgICAgbGFuZ3VhZ2UgPSBbY2hlY2tlciBsYW5n
dWFnZUZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0aCgpKSBpblN0cmlu
Zzpjb250ZXh0IG9ydGhvZ3JhcGh5Om9ydGhvZ3JhcGh5XTsKICAgICB9Ci0gICAgTlNBcnJheSog
c3RyaW5nc0FycmF5ID0gW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgw
LCB3b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07Ci0gICAgdW5zaWduZWQg
Y291bnQgPSBbc3RyaW5nc0FycmF5IGNvdW50XTsKLQotICAgIGlmIChjb3VudCA+IDApIHsKLSAg
ICAgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gW3N0cmluZ3NBcnJheSBvYmplY3RFbnVt
ZXJhdG9yXTsKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZzsKLSAgICAgICAgd2hpbGUgKChzdHJp
bmcgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKQotICAgICAgICAgICAgZ3Vlc3Nl
cy5hcHBlbmQoc3RyaW5nKTsKLSAgICB9CisgICAgTlNBcnJheSAqc3RyaW5nc0FycmF5ID0gW2No
ZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCB3b3JkLmxlbmd0aCgpKSBp
blN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWcoKV07CisgICAgaWYgKHN0cmluZ3NBcnJheS5jb3VudCkKKyAg
ICAgICAgZ3Vlc3NlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihzdHJpbmdzQXJyYXkpOwogfQogCiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IGIwNWMzZjlmNGU0ZDQ1ZTZkZTg2MWQyZTVlMmFlMTdkZTg5MDYxZTUuLmI2YTAyNjM3
OWNlM2U0OTAwYWJiMjk5NWJmZmU4ZGVmOTA1ZWU3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCkBAIC0xMzEsNiArMTMxLDcgQEAKICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogI2lt
cG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpAQCAtMTU3Miw4ICsxNTczLDggQEAgTlNEaWN0aW9u
YXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWMKICAgICBOU1VSTCAqb3JpZ2luYWxVUkwgPSBhY3Rpb24udXJsKCk7CiAK
ICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpyZXN1bHQgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpzdGF0aWNfY2FzdDxpbnQ+KGFjdGlvbi50eXBlKCkpXSwgV2ViQWN0aW9uTmF2aWdhdGlv
blR5cGVLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1vZGlmaWVyRmxhZ3Nd
LCBXZWJBY3Rpb25Nb2RpZmllckZsYWdzS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PGludD4o
YWN0aW9uLnR5cGUoKSkpLCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKKyAgICAgICAgQCht
b2RpZmllckZsYWdzKSwgV2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleSwKICAgICAgICAgb3JpZ2lu
YWxVUkwsIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5LAogICAgICAgICBuaWxdOwogCkBAIC0xNTg1
LDkgKzE1ODYsOSBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25E
aWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BYwogICAgICAgICBbZWxlbWVudCBy
ZWxlYXNlXTsKIAogICAgICAgICBpZiAobW91c2VFdmVudERhdGEtPmlzVHJ1c3RlZCkKLSAgICAg
ICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om1vdXNlRXZl
bnREYXRhLT5idXR0b25dIGZvcktleTpXZWJBY3Rpb25CdXR0b25LZXldOworICAgICAgICAgICAg
W3Jlc3VsdCBzZXRPYmplY3Q6QChtb3VzZUV2ZW50RGF0YS0+YnV0dG9uKSBmb3JLZXk6V2ViQWN0
aW9uQnV0dG9uS2V5XTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViQ29yZTo6Tm9CdXR0b25dIGZvcktleTpXZWJB
Y3Rpb25CdXR0b25LZXldOworICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChXZWJDb3Jl
OjpOb0J1dHRvbikgZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CiAgICAgfQogCiAgICAgaWYg
KGZvcm1TdGF0ZSkKQEAgLTE2OTQsMTUgKzE2OTUsNiBAQCBXZWJDb3JlOjpPYmplY3RDb250ZW50
VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1
cgogICAgIHJldHVybiBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZTo6Tm9uZTsKIH0KIAotc3Rh
dGljIE5TTXV0YWJsZUFycmF5KiBraXQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3RvcikKLXsK
LSAgICB1bnNpZ25lZCBsZW4gPSB2ZWN0b3Iuc2l6ZSgpOwotICAgIE5TTXV0YWJsZUFycmF5KiBh
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsZW5dOwotICAgIGZvciAo
dW5zaWduZWQgeCA9IDA7IHggPCBsZW47IHgrKykKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDp2
ZWN0b3JbeF1dOwotICAgIHJldHVybiBhcnJheTsKLX0KLQogc3RhdGljIFN0cmluZyBwYXJhbWV0
ZXJWYWx1ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHNpemVfdCBzaXpl
ID0gcGFyYW1OYW1lcy5zaXplKCk7CkBAIC0xNzIwLDM3ICsxNzEyLDM5IEBAIHN0YXRpYyBOU1Zp
ZXcgKnBsdWdpblZpZXcoV2ViRnJhbWUgKmZyYW1lLCBXZWJQbHVnaW5QYWNrYWdlICpwbHVnaW5Q
YWNrYWdlLAogewogICAgIFdlYkhUTUxWaWV3ICpkb2NWaWV3ID0gKFdlYkhUTUxWaWV3ICopW1tm
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgQVNTRVJUKFtkb2NWaWV3IGlzS2lu
ZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pOwotICAgICAgICAKKwogICAgIFdlYlBsdWdp
bkNvbnRyb2xsZXIgKnBsdWdpbkNvbnRyb2xsZXIgPSBbZG9jVmlldyBfcGx1Z2luQ29udHJvbGxl
cl07Ci0gICAgCisKICAgICAvLyBTdG9yZSBhdHRyaWJ1dGVzIGluIGEgZGljdGlvbmFyeSBzbyB0
aGV5IGNhbiBiZSBwYXNzZWQgdG8gV2ViUGx1Z2lucy4KICAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICphdHRyaWJ1dGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVj
dHM6YXR0cmlidXRlVmFsdWVzIGZvcktleXM6YXR0cmlidXRlTmFtZXNdOwotICAgIAorCiAgICAg
W3BsdWdpblBhY2thZ2UgbG9hZF07CiAgICAgQ2xhc3Mgdmlld0ZhY3RvcnkgPSBbcGx1Z2luUGFj
a2FnZSB2aWV3RmFjdG9yeV07CiAgICAgCiAgICAgTlNWaWV3ICp2aWV3ID0gbmlsOwogICAgIE5T
RGljdGlvbmFyeSAqYXJndW1lbnRzID0gbmlsOwotICAgIAotICAgIGlmIChbdmlld0ZhY3Rvcnkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopXSkg
ewotICAgICAgICBhcmd1bWVudHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
c0FuZEtleXM6Ci0gICAgICAgICAgICBiYXNlVVJMLCBXZWJQbHVnSW5CYXNlVVJMS2V5LAotICAg
ICAgICAgICAgYXR0cmlidXRlcywgV2ViUGx1Z0luQXR0cmlidXRlc0tleSwKLSAgICAgICAgICAg
IHBsdWdpbkNvbnRyb2xsZXIsIFdlYlBsdWdJbkNvbnRhaW5lcktleSwKLSAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OmxvYWRNYW51YWxseSA/IFdlYlBsdWdJbk1vZGVGdWxsIDog
V2ViUGx1Z0luTW9kZUVtYmVkXSwgV2ViUGx1Z0luTW9kZUtleSwKLSAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDohbG9hZE1hbnVhbGx5XSwgV2ViUGx1Z0luU2hvdWxkTG9hZE1h
aW5SZXNvdXJjZUtleSwKLSAgICAgICAgICAgIGVsZW1lbnQsIFdlYlBsdWdJbkNvbnRhaW5pbmdF
bGVtZW50S2V5LAotICAgICAgICAgICAgbmlsXTsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJhcmd1
bWVudHM6XG4lQCIsIGFyZ3VtZW50cyk7CisKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5kZWNs
YXJlZC1zZWxlY3RvciIpCi0gICAgfSBlbHNlIGlmIChbdmlld0ZhY3RvcnkgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwbHVnaW5WaWV3V2l0aEFyZ3VtZW50czopXSkgeworICAgIGF1dG8g
b2xkU2VsZWN0b3IgPSBAc2VsZWN0b3IocGx1Z2luVmlld1dpdGhBcmd1bWVudHM6KTsKIElHTk9S
RV9XQVJOSU5HU19FTkQKLSAgICAgICAgYXJndW1lbnRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgYmFzZVVSTCwgV2ViUGx1Z2luQmFz
ZVVSTEtleSwKLSAgICAgICAgICAgIGF0dHJpYnV0ZXMsIFdlYlBsdWdpbkF0dHJpYnV0ZXNLZXks
Ci0gICAgICAgICAgICBwbHVnaW5Db250cm9sbGVyLCBXZWJQbHVnaW5Db250YWluZXJLZXksCi0g
ICAgICAgICAgICBlbGVtZW50LCBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVudEtleSwKLSAgICAg
ICAgICAgIG5pbF07CisKKyAgICBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsKKyAgICAgICAgYXJndW1lbnRz
ID0gQHsKKyAgICAgICAgICAgIFdlYlBsdWdJbkJhc2VVUkxLZXk6IGJhc2VVUkwsCisgICAgICAg
ICAgICBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5OiBhdHRyaWJ1dGVzLAorICAgICAgICAgICAgV2Vi
UGx1Z0luQ29udGFpbmVyS2V5OiBwbHVnaW5Db250cm9sbGVyLAorICAgICAgICAgICAgV2ViUGx1
Z0luTW9kZUtleTogQChsb2FkTWFudWFsbHkgPyBXZWJQbHVnSW5Nb2RlRnVsbCA6IFdlYlBsdWdJ
bk1vZGVFbWJlZCksCisgICAgICAgICAgICBXZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNl
S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sCisgICAgICAgICAg
ICBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVudEtleTogZWxlbWVudCwKKyAgICAgICAgfTsKKyAg
ICAgICAgTE9HKFBsdWdpbnMsICJhcmd1bWVudHM6XG4lQCIsIGFyZ3VtZW50cyk7CisgICAgfSBl
bHNlIGlmIChbdmlld0ZhY3RvcnkgcmVzcG9uZHNUb1NlbGVjdG9yOm9sZFNlbGVjdG9yXSkgewor
ICAgICAgICBhcmd1bWVudHMgPSBAeworICAgICAgICAgICAgV2ViUGx1Z2luQmFzZVVSTEtleTog
YmFzZVVSTCwKKyAgICAgICAgICAgIFdlYlBsdWdpbkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0ZXMs
CisgICAgICAgICAgICBXZWJQbHVnaW5Db250YWluZXJLZXk6IHBsdWdpbkNvbnRyb2xsZXIsCisg
ICAgICAgICAgICBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVudEtleTogZWxlbWVudCwKKyAgICAg
ICAgfTsKICAgICAgICAgTE9HKFBsdWdpbnMsICJhcmd1bWVudHM6XG4lQCIsIGFyZ3VtZW50cyk7
CiAgICAgfQogCkBAIC0xOTE5LDE1ICsxOTEzLDE1IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5kb2N1bWVudCgp
OwogICAgIE5TVVJMICpiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKTsKICAgICBOU1VSTCAq
cGx1Z2luVVJMID0gdXJsOwotICAgIE5TTXV0YWJsZUFycmF5ICphdHRyaWJ1dGVLZXlzID0ga2l0
KHBhcmFtTmFtZXMpOworICAgIGF1dG8gYXR0cmlidXRlS2V5cyA9IGNyZWF0ZU5TQXJyYXkocGFy
YW1OYW1lcyk7CiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6cGx1Z0luVmlld1dpdGhBcmd1
bWVudHM6KTsKICAgICBpZiAoW1t3ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3Rv
cjpzZWxlY3Rvcl0pIHsKLSAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmtpdChwYXJhbVZh
bHVlcykgZm9yS2V5czphdHRyaWJ1dGVLZXlzXTsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
aWJ1dGVzID0gQHsgYXR0cmlidXRlS2V5cy5nZXQoKTogY3JlYXRlTlNBcnJheShwYXJhbVZhbHVl
cykuZ2V0KCkgfTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgIGF0dHJpYnV0
ZXMsIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXksCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpsb2FkTWFudWFsbHkgPyBXZWJQbHVnSW5Nb2RlRnVsbCA6IFdlYlBsdWdJbk1vZGVF
bWJlZF0sIFdlYlBsdWdJbk1vZGVLZXksCisgICAgICAgICAgICBAKGxvYWRNYW51YWxseSA/IFdl
YlBsdWdJbk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkKSwgV2ViUGx1Z0luTW9kZUtleSwK
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDohbG9hZE1hbnVhbGx5XSwgV2Vi
UGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleSwKICAgICAgICAgICAgIGtpdCgmZWxlbWVu
dCksIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5LAogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBwYXNzaW5nIGJhc2UgVVJMLCBzZWUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTIxNT4uCkBAIC0xOTM2LDExICsxOTMwLDEwIEBAIFJlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6CiAKICAgICAgICAgTlNWaWV3ICp2aWV3ID0gQ2FsbFVJRGVsZWdh
dGUod2ViVmlldywgc2VsZWN0b3IsIGFyZ3VtZW50cyk7CiAKLSAgICAgICAgW2F0dHJpYnV0ZXMg
cmVsZWFzZV07CiAgICAgICAgIFthcmd1bWVudHMgcmVsZWFzZV07CiAKICAgICAgICAgaWYgKHZp
ZXcpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbldpZGdldCh2aWV3KSk7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbHVnaW5XaWRnZXQodmlldykpOwog
ICAgIH0KICNlbmRpZgogCkBAIC0xOTUzLDcgKzE5NDYsNyBAQCBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6Oklu
dFNpegogICAgICAgICBNSU1FVHlwZSA9IG1pbWVUeXBlOwogICAgICAgICBwbHVnaW5QYWNrYWdl
ID0gW3dlYlZpZXcgX3BsdWdpbkZvck1JTUVUeXBlOm1pbWVUeXBlXTsKICAgICB9Ci0gICAgCisK
ICAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0gW1twbHVnaW5VUkwgcGF0aF0gcGF0aEV4dGVuc2lv
bl07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTk3OSw3ICsxOTcyLDcgQEAgUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihj
b25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICAgICAgICAgICAgICBkb3duY2FzdDxXZWJDb3JlOjpS
ZW5kZXJFbWJlZGRlZE9iamVjdD4oKmVsZW1lbnQucmVuZGVyZXIoKSkuc2V0UGx1Z2luVW5hdmFp
bGFiaWxpdHlSZWFzb24oV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6Okluc2VjdXJlUGx1
Z2luVmVyc2lvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoW3BsdWdpblBh
Y2thZ2UgaXNLaW5kT2ZDbGFzczpbV2ViUGx1Z2luUGFja2FnZSBjbGFzc11dKQotICAgICAgICAg
ICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3KG1fd2ViRnJhbWUuZ2V0KCksIChXZWJQbHVnaW5QYWNr
YWdlICopcGx1Z2luUGFja2FnZSwgYXR0cmlidXRlS2V5cywga2l0KHBhcmFtVmFsdWVzKSwgYmFz
ZVVSTCwga2l0KCZlbGVtZW50KSwgbG9hZE1hbnVhbGx5KTsKKyAgICAgICAgICAgICAgICB2aWV3
ID0gcGx1Z2luVmlldyhtX3dlYkZyYW1lLmdldCgpLCAoV2ViUGx1Z2luUGFja2FnZSAqKXBsdWdp
blBhY2thZ2UsIGF0dHJpYnV0ZUtleXMuZ2V0KCksIGNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMp
LmdldCgpLCBiYXNlVVJMLCBraXQoJmVsZW1lbnQpLCBsb2FkTWFudWFsbHkpOwogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgICAgICAgZWxzZSBpZiAoW3BsdWdpblBhY2th
Z2UgaXNLaW5kT2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlIGNsYXNzXV0pIHsKICAg
ICAgICAgICAgICAgICBXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3ID0gW1tb
TkVUU0NBUEVfUExVR0lOX1ZJRVcgYWxsb2NdCkBAIC0xOTg4LDggKzE5ODEsOCBAQCBSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0
IFdlYkNvcmU6OkludFNpegogICAgICAgICAgICAgICAgICAgICBVUkw6cGx1Z2luVVJMCiAgICAg
ICAgICAgICAgICAgICAgIGJhc2VVUkw6YmFzZVVSTAogICAgICAgICAgICAgICAgICAgICBNSU1F
VHlwZTpNSU1FVHlwZQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmF0dHJpYnV0
ZUtleXMKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmtpdChwYXJhbVZhbHVl
cykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlS2V5czphdHRyaWJ1dGVLZXlzLmdldCgp
CisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlczpjcmVhdGVOU0FycmF5KHBhcmFt
VmFsdWVzKS5nZXQoKQogICAgICAgICAgICAgICAgICAgICBsb2FkTWFudWFsbHk6bG9hZE1hbnVh
bGx5CiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6JmVsZW1lbnRdIGF1dG9yZWxlYXNlXTsK
IApAQCAtMjA4Myw4ICsyMDc2LDggQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ28KICAgICAgICAg
ICAgICAgICAgICAgVVJMOm5pbAogICAgICAgICAgICAgICAgICAgICBiYXNlVVJMOmJhc2VVUkwK
ICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6TUlNRVR5cGUKLSAgICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlS2V5czpraXQocGFyYW1OYW1lcykKLSAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlVmFsdWVzOmtpdChwYXJhbVZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlS2V5czpjcmVhdGVOU0FycmF5KHBhcmFtTmFtZXMpLmdldCgpCisgICAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZVZhbHVlczpjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKQogICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFudWFsbHk6Tk8KICAgICAgICAgICAgICAgICAgICAgZWxl
bWVudDomZWxlbWVudF0gYXV0b3JlbGVhc2VdOwogICAgICAgICAgICAgICAgIGlmICh2aWV3KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbQppbmRleCA1NWZiMmJkZmFkMWE1
Zjc3NGM4MjEyMjNjYTc4NjI4MTlmYzE0ZGYwLi5hYWE0YWZiNWZjYzZhZWM4Y2Y0YjNiMWYyMWM4
MzIxMGMyN2Q0MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbQpA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL0ljb24uaD4KQEAgLTY0
LDExICs2NSw3IEBAIC0gKHZvaWQpY2hvb3NlRmlsZW5hbWVzOihOU0FycmF5ICopZmlsZW5hbWVz
CiAgICAgQVNTRVJUKF9jaG9vc2VyKTsKICAgICBpZiAoIV9jaG9vc2VyKQogICAgICAgICByZXR1
cm47Ci0gICAgTlNVSW50ZWdlciBjb3VudCA9IFtmaWxlbmFtZXMgY291bnRdOwotICAgIFZlY3Rv
cjxTdHJpbmc+IG5hbWVzKGNvdW50KTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQotICAgICAgICBuYW1lc1tpXSA9IFtmaWxlbmFtZXMgb2JqZWN0QXRJbmRleDpp
XTsKLSAgICBfY2hvb3Nlci0+Y2hvb3NlRmlsZXMobmFtZXMpOworICAgIF9jaG9vc2VyLT5jaG9v
c2VGaWxlcyhtYWtlVmVjdG9yPFN0cmluZz4oZmlsZW5hbWVzKSk7CiAgICAgX2Nob29zZXIgPSBu
dWxscHRyOwogfQogCkBAIC03Niw3ICs3Myw3IEBAIC0gKHZvaWQpY2hvb3NlRmlsZW5hbWVzOihO
U0FycmF5ICopZmlsZW5hbWVzCiAKIC0gKHZvaWQpY2hvb3NlRmlsZW5hbWU6KE5TU3RyaW5nICop
ZmlsZW5hbWUgZGlzcGxheVN0cmluZzooTlNTdHJpbmcgKilkaXNwbGF5U3RyaW5nIGljb25JbWFn
ZTooQ0dJbWFnZVJlZilpbWFnZVJlZgogewotICAgIFtzZWxmIGNob29zZUZpbGVuYW1lczpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6ZmlsZW5hbWVdIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmlu
ZyBpY29uSW1hZ2U6aW1hZ2VSZWZdOworICAgIFtzZWxmIGNob29zZUZpbGVuYW1lczpAW2ZpbGVu
YW1lXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOmltYWdlUmVmXTsKIH0K
IAogLSAodm9pZCljaG9vc2VGaWxlbmFtZXM6KE5TQXJyYXkgKilmaWxlbmFtZXMgZGlzcGxheVN0
cmluZzooTlNTdHJpbmcgKilkaXNwbGF5U3RyaW5nIGljb25JbWFnZTooQ0dJbWFnZVJlZilpbWFn
ZVJlZgpAQCAtODUsMTEgKzgyLDcgQEAgLSAodm9pZCljaG9vc2VGaWxlbmFtZXM6KE5TQXJyYXkg
KilmaWxlbmFtZXMgZGlzcGxheVN0cmluZzooTlNTdHJpbmcgKilkaXNwbGF5U3QKICAgICBpZiAo
IV9jaG9vc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsK
LSAgICBuYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtmaWxlbmFtZXMgY291bnRdKTsKLSAg
ICBmb3IgKE5TU3RyaW5nICpmaWxlbmFtZSBpbiBmaWxlbmFtZXMpCi0gICAgICAgIG5hbWVzLnVu
Y2hlY2tlZEFwcGVuZChmaWxlbmFtZSk7Ci0gICAgX2Nob29zZXItPmNob29zZU1lZGlhRmlsZXMo
bmFtZXMsIGRpc3BsYXlTdHJpbmcsIEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShpbWFnZVJlZiku
Z2V0KCkpOworICAgIF9jaG9vc2VyLT5jaG9vc2VNZWRpYUZpbGVzKG1ha2VWZWN0b3I8U3RyaW5n
PihmaWxlbmFtZXMpLCBkaXNwbGF5U3RyaW5nLCBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoaW1h
Z2VSZWYpLmdldCgpKTsKICAgICBfY2hvb3NlciA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0KaW5kZXggOTM0Mzc1N2FhNWRjYzBjYjIx
ZjgxMTAyMWY0NDRjMjIzZDBlNTBlNy4uOTNiZWQ2OWExNDczOGY4MzYxYjFmODY3NjAzZmY4MTFk
YjA1OWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0K
QEAgLTQwLDcgKzQwLDcgQEAgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OldlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcgKndlYlZpZXcpCiB7CiB9CiAKLXZvaWQgV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dGVsZXBob25lTnVtYmVycywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQordm9pZCBX
ZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNr
KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiAvKnRlbGVwaG9uZU51bWJlcnMqLywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQog
ewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3IHBhZ2VdOwogICAgIGlmICghcGFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGJkOWE2Nzgx
YmJlYTA2MTFlMmU0ZDcwNDk2MDg2Y2VmZDU4YjExNGIuLjJhYmJkOTI0YjdlYTAwZGEzMDM5ODJl
MTBkNDYwYzUxYWJjODIzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtMTA4LDYgKzEwOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVV
bml0cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJNYWlsRGVsZWdhdGUuaCIKQEAg
LTEwOTEsNiArMTA5Miw3IEBAIC0gKFdlYkZyYW1lTG9hZFR5cGUpX2xvYWRUeXBlCiB9CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorCiAtIChCT09MKW5lZWRzTGF5b3V0CiB7CiAgICAgLy8g
TmVlZGVkIGZvciBNYWlsIDxyZGFyOi8vcHJvYmxlbS82MjI4MDM4PgpAQCAtMTEwNywzOSArMTEw
OSwyNiBAQCAtIChCT09MKV9sb2Fkc1N5bmNocm9ub3VzbHkKICAgICByZXR1cm4gX3ByaXZhdGUt
PmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZHNTeW5jaHJvbm91c2x5KCk7CiB9CiAKLS8vIEZJWE1F
OiBzZWxlY3Rpb24KLQogLSAoTlNBcnJheSAqKV9yZWN0c0ZvclJhbmdlOihET01SYW5nZSAqKWRv
bVJhbmdlCiB7CiAgICAgYXV0byogcmFuZ2UgPSBjb3JlKGRvbVJhbmdlKTsKLSAgICAKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gQFtdOwogICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiBpbnRSZWN0czsKICAgICByYW5nZS0+YWJzb2x1dGVUZXh0UmVjdHMoaW50UmVjdHMsIE5P
KTsKLSAgICB1bnNpZ25lZCBzaXplID0gaW50UmVjdHMuc2l6ZSgpOwotICAgIAotICAgIE5TTXV0
YWJsZUFycmF5ICpyZWN0QXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
c2l6ZV07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAg
ICBbcmVjdEFycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OihDR1JlY3QgKWlu
dFJlY3RzW2ldXV07Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZWN0QXJyYXk7CisgICAgcmV0
dXJuIGNyZWF0ZU5TQXJyYXkoaW50UmVjdHMpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKERPTVJh
bmdlICopX3NlbGVjdGlvblJhbmdlRm9yRmlyc3RQb2ludDooQ0dQb2ludClmaXJzdCBzZWNvbmRQ
b2ludDooQ0dQb2ludClzZWNvbmQKIHsKLSAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gZmly
c3RQb3MgPSBbc2VsZiBfdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6Zmlyc3RdOwotICAgIFdlYkNv
cmU6OlZpc2libGVQb3NpdGlvbiBzZWNvbmRQb3MgPSBbc2VsZiBfdmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQ6c2Vjb25kXTsKLSAgICBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihm
aXJzdFBvcywgc2Vjb25kUG9zKTsKLSAgICBET01SYW5nZSAqcmFuZ2UgPSBraXQoc2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwotICAgIHJldHVybiByYW5nZTsgICAgCisgICAg
YXV0byBmaXJzdFBvc2l0aW9uID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBvaW50OmZpcnN0
XTsKKyAgICBhdXRvIHNlY29uZFBvc2l0aW9uID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBv
aW50OnNlY29uZF07CisgICAgcmV0dXJuIGtpdChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKGZp
cnN0UG9zaXRpb24sIHNlY29uZFBvc2l0aW9uKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsK
IH0KIAogLSAoRE9NUmFuZ2UgKilfc2VsZWN0aW9uUmFuZ2VGb3JQb2ludDooQ0dQb2ludClwb2lu
dAogewotICAgIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBwb3MgPSBbc2VsZiBfdmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQ6cG9pbnRdOwotICAgIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0aW9uKHBvcyk7Ci0gICAgRE9NUmFuZ2UgKnJhbmdlID0ga2l0KHNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpKTsKLSAgICByZXR1cm4gcmFuZ2U7CisgICAgcmV0dXJuIGtpdChX
ZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpw
b2ludF0pLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTIyNzEsMjEgKzIyNjAsMjEgQEAgLSAoTlNBcnJheSAqKV9jb21w
dXRlUGFnZVJlY3RzV2l0aFByaW50U2NhbGVGYWN0b3I6KGZsb2F0KXByaW50U2NhbGVGYWN0b3Ig
cGFnZVMKIHsKICAgICBpZiAocHJpbnRTY2FsZUZhY3RvciA8PSAwKSB7CiAgICAgICAgIExPR19F
UlJPUigicHJpbnRTY2FsZUZhY3RvciBoYXMgYmFkIHZhbHVlICUuMmYiLCBwcmludFNjYWxlRmFj
dG9yKTsKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBb
XTsKICAgICB9CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCi0gICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgaWYgKCFfcHJpdmF0
ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgICAgICByZXR1cm4gQFtdOwogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZS0+dmll
dygpKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtd
OwogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZS0+dmlldygpLT5kb2N1bWVudFZpZXcoKSkK
LSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKIAog
ICAgIGF1dG8qIHJvb3QgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJW
aWV3KCk7CiAgICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOwor
ICAgICAgICByZXR1cm4gQFtdOwogCiAgICAgY29uc3QgYXV0byYgZG9jdW1lbnRSZWN0ID0gcm9v
dC0+ZG9jdW1lbnRSZWN0KCk7CiAgICAgZmxvYXQgcHJpbnRXaWR0aCA9IHJvb3QtPnN0eWxlKCku
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHN0YXRpY19jYXN0PGZsb2F0Pihkb2N1bWVudFJl
Y3Qud2lkdGgoKSkgLyBwcmludFNjYWxlRmFjdG9yIDogcGFnZVNpemUud2lkdGg7CkBAIC0yMjkz
LDEzICsyMjgyLDcgQEAgLSAoTlNBcnJheSAqKV9jb21wdXRlUGFnZVJlY3RzV2l0aFByaW50U2Nh
bGVGYWN0b3I6KGZsb2F0KXByaW50U2NhbGVGYWN0b3IgcGFnZVMKIAogICAgIFdlYkNvcmU6OlBy
aW50Q29udGV4dCBwcmludENvbnRleHQoX3ByaXZhdGUtPmNvcmVGcmFtZSk7CiAgICAgcHJpbnRD
b250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoV2ViQ29yZTo6RmxvYXRTaXplKHBy
aW50V2lkdGgsIHByaW50SGVpZ2h0KSwgdHJ1ZSk7Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiBwYWdlUmVjdHMgPSBwcmludENvbnRleHQucGFnZVJlY3RzKCk7Ci0KLSAgICBz
aXplX3Qgc2l6ZSA9IHBhZ2VSZWN0cy5zaXplKCk7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnBhZ2Vz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcGFnZXMgYWRkT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aFJlY3Q6TlNSZWN0KHBhZ2VSZWN0c1tpXSldXTsKLSAgICByZXR1cm4gcGFn
ZXM7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocHJpbnRDb250ZXh0LnBhZ2VSZWN0cygpKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTI2MjMsNyAr
MjYwNiw3IEBAIC0gKE5TQXJyYXkgKiljaGlsZEZyYW1lcwogewogICAgIGF1dG8gY29yZUZyYW1l
ID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICBOU011dGFibGVB
cnJheSAqY2hpbGRyZW4gPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUZy
YW1lLT50cmVlKCkuY2hpbGRDb3VudCgpXTsKICAgICBmb3IgKFdlYkNvcmU6OkZyYW1lKiBjaGls
ZCA9IGNvcmVGcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
PnRyZWUoKS5uZXh0U2libGluZygpKQogICAgICAgICBbY2hpbGRyZW4gYWRkT2JqZWN0OmtpdChj
aGlsZCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggNWJhMmU3ODA0NmY0NjgwN2QxOGViNDE4NzczYWU4YjIxNDIxZmZlMi4uYzkxNTVi
MTZjZGYwN2ViMWM5YWQwYzRhYmEwZTkyODM0NzQzYzU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xNDksNiArMTQ5LDcgQEAKICNp
bXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2Eu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIldlYk5TRXZlbnRFeHRyYXMuaCIKQEAg
LTE5OTUsNyArMTk5Niw3IEBAICsgKE5TQXJyYXkgKilfaW5zZXJ0YWJsZVBhc3RlYm9hcmRUeXBl
cwogKyAoTlNBcnJheSAqKV9zZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXMKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHB1dCBkYXRhIGZvciBOU0hUTUxQYm9hcmRUeXBlIG9uIHRoZSBwYXN0ZWJv
YXJkIGJ1dCBNaWNyb3NvZnQgRXhjZWwgZG9lc24ndCBsaWtlIG91ciBmb3JtYXQgb2YgSFRNTCAo
MzY0MDQyMykuCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6V2ViQXJjaGl2
ZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3Jl
OjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpLCBuaWxdOworICAgIHJldHVybiBAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCBXZWJD
b3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiB9CiAK
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCkBAIC00NDA0LDcgKzQ0MDUs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoZHJhZ2dp
bmdFbGVtZW50VVJMKQogICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIF93
ZWJraXRfc2V0TWV0YWRhdGFVUkw6W2RyYWdnaW5nRWxlbWVudFVSTCBhYnNvbHV0ZVN0cmluZ10g
cmVmZXJyZXI6bmlsIGF0UGF0aDpwYXRoXTsKICAgICAKLSAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CisgICAgcmV0dXJuIEBbW3Bh
dGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KIAogLy8gTUFSSzogTlNEcmFnZ2luZ1NvdXJjZQpA
QCAtNDg4MSw3ICs0ODgyLDcgQEAgLSAoQk9PTClrbm93c1BhZ2VSYW5nZTooTlNSYW5nZVBvaW50
ZXIpcmFuZ2UKICAgICAvLyBhIGJsYW5rIHBhZ2UgKHdpdGggY29ycmVjdC1sb29raW5nIGhlYWRl
ciBhbmQgZm9vdGVyIGlmIHRoYXQgb3B0aW9uIGlzIG9uKSwgd2hpY2ggbWF0Y2hlcwogICAgIC8v
IHRoZSBiZWhhdmlvciBvZiBJRSBhbmQgQ2FtaW5vIGF0IGxlYXN0LgogICAgIGlmIChbbmV3UGFn
ZVJlY3RzIGNvdW50XSA9PSAwKQotICAgICAgICBuZXdQYWdlUmVjdHMgPSBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01ha2VSZWN0KDAsIDAsIDEsIDEp
XV07CisgICAgICAgIG5ld1BhZ2VSZWN0cyA9IEBbW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01h
a2VSZWN0KDAsIDAsIDEsIDEpXV07CiAKICAgICBfcHJpdmF0ZS0+cGFnZVJlY3RzID0gbmV3UGFn
ZVJlY3RzOwogCkBAIC01MDE5LDcgKzUwMjAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWQgYWNjVHJlZSA9IFtb
c2VsZiBfZnJhbWVdIGFjY2Vzc2liaWxpdHlSb290XTsKICAgICAgICAgaWYgKGFjY1RyZWUpCi0g
ICAgICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmFjY1RyZWVdOworICAg
ICAgICAgICAgcmV0dXJuIEBbYWNjVHJlZV07CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQog
ICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZU5h
bWVdOwpAQCAtNTI5Miw3ICs1MjkzLDcgQEAgLSAodm9pZCljb3B5Rm9udDooaWQpc2VuZGVyCiAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNQYXN0ZWJv
YXJkICpmb250UGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOk5T
Rm9udFBib2FyZF07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAg
W2ZvbnRQYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6V2Vi
Q29yZTo6bGVnYWN5Rm9udFBhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CisgICAgW2ZvbnRQ
YXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW1dlYkNvcmU6OmxlZ2FjeUZvbnRQYXN0ZWJvYXJkVHlw
ZSgpXSBvd25lcjpuaWxdOwogICAgIFtmb250UGFzdGVib2FyZCBzZXREYXRhOltzZWxmIF9zZWxl
Y3Rpb25TdGFydEZvbnRBdHRyaWJ1dGVzQXNSVEZdIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5Rm9u
dFBhc3RlYm9hcmRUeXBlKCldOwogfQogCkBAIC02MDIzLDcgKzYwMjQsNyBAQCAtIChCT09MKV9p
bnRlcnByZXRLZXlFdmVudDooTmFrZWRQdHI8V2ViQ29yZTo6S2V5Ym9hcmRFdmVudD4pZXZlbnQg
c2F2aW5nQ29tbWFuZAogICAgICAgICAvLyBleGVjdXRlIHRoZSBjYWxscyBpbW1lZGlhdGVseS4g
RE9NIGV2ZW50cyBsaWtlIGtleWRvd24gYXJlIHR3ZWFrZWQgdG8gaGF2ZSBrZXlDb2RlIG9mIDIy
OSwgYW5kIGNhbmNlbGluZyB0aGVtIGhhcyBubyBlZmZlY3QuCiAgICAgICAgIC8vIFVuZm9ydHVu
YXRlbHksIHRoZXJlIGlzIG5vIHJlYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHBsYWluIHRleHQgaW5w
dXQgYW5kIElNIHByb2Nlc3NpbmcgLSBmb3IgZXhhbXBsZSwgQXBwS2l0IHF1ZXJpZXMgaGFzTWFy
a2VkVGV4dAogICAgICAgICAvLyB3aGVuIHR5cGluZyB3aXRoIFUuUy4ga2V5Ym9hcmQsIGFuZCBp
bnNlcnRzIG1hcmtlZCB0ZXh0IGZvciBkZWFkIGtleXMuCi0gICAgICAgIFtzZWxmIGludGVycHJl
dEtleUV2ZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6bWFjRXZlbnRdXTsKKyAgICAgICAg
W3NlbGYgaW50ZXJwcmV0S2V5RXZlbnRzOkBbbWFjRXZlbnRdXTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBBcmUgdGhlcmUgY29tbWFuZHMgdGhhdCBjb3VsZCBqdXN0IGNhdXNlIHRleHQgaW5z
ZXJ0aW9uIGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3I/CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0
IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyB0aGV5IHNo
b3VsZCBiZSB0cmVhdGVkLCBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUKQEAgLTY4MzQsMTgg
KzY4MzUsMTAgQEAgLSAoTlNBcnJheSAqKXNlbGVjdGlvblRleHRSZWN0cwogICAgIGlmICghW3Nl
bGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0PiBsaXN0OworICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJl
Y3RzOwogICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAg
ICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3Rhbmds
ZXMobGlzdCk7Ci0KLSAgICBzaXplX3Qgc2l6ZSA9IGxpc3Quc2l6ZSgpOwotCi0gICAgTlNNdXRh
YmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXpl
XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVz
dWx0IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Omxpc3RbaV1dXTsKLQotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuZ2V0Q2xpcHBlZFZp
c2libGVUZXh0UmVjdGFuZ2xlcyhyZWN0cyk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVj
dHMpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVmlldyAqKXNlbGVjdGlvblZpZXcKQEAgLTcx
MzEsMTcgKzcxMjQsMTIgQEAgLSAoTlNBcnJheSAqKXJlY3RzRm9yVGV4dE1hdGNoZXMKIHsKICAg
ICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghY29yZUZy
YW1lKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtd
OwogICAgIGF1dG8qIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVy
biBAW107CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cyA9IGRvY3VtZW50
LT5tYXJrZXJzKCkucmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6OlRleHRNYXRjaCk7Ci0gICAgdW5zaWduZWQgY291bnQgPSByZWN0cy5zaXplKCk7Ci0gICAg
TlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTpjb3VudF07Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsr
aW5kZXgpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6
cmVjdHNbaW5kZXhdXV07ICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGNyZWF0
ZU5TQXJyYXkoZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW5kZXJlZFJlY3RzRm9yTWFya2VycyhXZWJD
b3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
Qk9PTClfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooV2ViRmluZE9wdGlv
bnMpb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQREZSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUERGUmVwcmVzZW50YXRpb24ubW0KaW5kZXggZTRkMDY0MjlkOWVjM2Q5Njc1NmU1ZmEyYjY1
YzBlOGVhNjczOGI0NC4uZWJjYTNiMDg0ZTZiNWYwMWEzYjVjZmRhZmU3Y2ExYWVjMjk0ZDM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJl
cHJlc2VudGF0aW9uLm1tCkBAIC0zOSwyNSArMzksMjUgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTQ29udGV4dFJlZi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJp
bmcuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRp
bWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9u
IFdlYlBERlJlcHJlc2VudGF0aW9uCiAKICsgKE5TQXJyYXkgKilwb3N0U2NyaXB0TUlNRVR5cGVz
CiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgcmV0dXJuIEBb
CiAgICAgICAgIEAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsCi0gICAgICAgIG5pbF07CisgICAg
XTsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogewogICAgIHJldHVybiBb
W1tzZWxmIGNsYXNzXSBwb3N0U2NyaXB0TUlNRVR5cGVzXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zy
b21BcnJheToKLSAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAgQFsK
ICAgICAgICAgICAgIEAidGV4dC9wZGYiLAogICAgICAgICAgICAgQCJhcHBsaWNhdGlvbi9wZGYi
LAotICAgICAgICAgICAgbmlsXV07CisgICAgICAgIF0KKyAgICBdOwogfQogCiArIChDbGFzcylQ
REZEb2N1bWVudENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBE
RlZpZXcubW0KaW5kZXggZWM3YmVmYzhlNWMxODQ1Y2Y3OTNlMGVhZGFiNmQwM2RiN2UzZjRhYy4u
NzEwYzk3YmIwNGFiNGY5NDI4MDAyM2Q5MTFlMmYxMDRlMDc2ZTNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpAQCAtNTkwLDEzICs1OTAsMTAg
QEAgLSAodm9pZCl2aWV3RGlkTW92ZVRvSG9zdFdpbmRvdwogCiAtIChOU0RpY3Rpb25hcnkgKill
bGVtZW50QXRQb2ludDooTlNQb2ludClwb2ludAogewotICAgIFdlYkZyYW1lICpmcmFtZSA9IFtk
YXRhU291cmNlIHdlYkZyYW1lXTsKLSAgICBBU1NFUlQoZnJhbWUpOwotICAgIAotICAgIHJldHVy
biBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIGZy
YW1lLCBXZWJFbGVtZW50RnJhbWVLZXksIAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6W3NlbGYgX3BvaW50SXNJblNlbGVjdGlvbjpwb2ludF1dLCBXZWJFbGVtZW50SXNTZWxlY3Rl
ZEtleSwKLSAgICAgICAgbmlsXTsKKyAgICByZXR1cm4gQHsKKyAgICAgICAgV2ViRWxlbWVudEZy
YW1lS2V5OiBbZGF0YVNvdXJjZSB3ZWJGcmFtZV0sCisgICAgICAgIFdlYkVsZW1lbnRJc1NlbGVj
dGVkS2V5OiBAKFtzZWxmIF9wb2ludElzSW5TZWxlY3Rpb246cG9pbnRdKSwKKyAgICB9OwogfQog
CiAtIChOU0RpY3Rpb25hcnkgKillbGVtZW50QXRQb2ludDooTlNQb2ludClwb2ludCBhbGxvd1No
YWRvd0NvbnRlbnQ6KEJPT0wpYWxsb3cKQEAgLTc5NSwxMCArNzkyLDEwIEBAIC0gKGlkKXZpZXdT
dGF0ZQogewogICAgIE5TTXV0YWJsZUFycmF5ICpzdGF0ZSA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTo0XTsKICAgICBQREZEaXNwbGF5TW9kZSBtb2RlID0gW1BERlN1YnZpZXcg
ZGlzcGxheU1vZGVdOwotICAgIFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6bW9kZV1dOworICAgIFtzdGF0ZSBhZGRPYmplY3Q6QChtb2RlKV07CiAgICAgaWYgKG1vZGUg
PT0ga1BERkRpc3BsYXlTaW5nbGVQYWdlIHx8IG1vZGUgPT0ga1BERkRpc3BsYXlUd29VcCkgewog
ICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZUluZGV4ID0gW1tQREZTdWJ2aWV3IGRvY3VtZW50XSBp
bmRleEZvclBhZ2U6W1BERlN1YnZpZXcgY3VycmVudFBhZ2VdXTsKLSAgICAgICAgW3N0YXRlIGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnBhZ2VJbmRleF1dOworICAg
ICAgICBbc3RhdGUgYWRkT2JqZWN0OkAocGFnZUluZGV4KV07CiAgICAgfSAgLy8gZWxzZSBpbiBj
b250aW51b3VzIG1vZGVzLCBzY3JvbGwgcG9zaXRpb24gZ2V0cyB1cyB0byB0aGUgcmlnaHQgcGFn
ZQogICAgIEJPT0wgYXV0b1NjYWxlRmxhZyA9IFtQREZTdWJ2aWV3IGF1dG9TY2FsZXNdOwogICAg
IFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOmF1dG9TY2FsZUZsYWdd
XTsKQEAgLTg4Miw3ICs4NzksNyBAQCAtIChOU1JlY3Qpc2VsZWN0aW9uUmVjdAogLSAoTlNBcnJh
eSAqKXNlbGVjdGlvblRleHRSZWN0cwogewogICAgIC8vIEZJWE1FOiBXZSdkIG5lZWQgbmV3IFBE
RktpdCBBUEkvU1BJIHRvIGdldCBtdWx0aXBsZSB0ZXh0IHJlY3RzIGZvciBzZWxlY3Rpb25zIHRo
YXQgaW50ZXJzZWN0IG1vcmUgdGhhbiBvbmUgbGluZQotICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpbc2VsZiBzZWxlY3Rpb25SZWN0XV1d
OworICAgIHJldHVybiBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYgc2VsZWN0aW9uUmVj
dF1dXTsKIH0KIAogLSAoTlNWaWV3ICopc2VsZWN0aW9uVmlldwpAQCAtOTI2LDcgKzkyMyw3IEBA
IC0gKE5TUmVjdClzZWxlY3Rpb25JbWFnZVJlY3QKIAogLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRU
eXBlc0ZvclNlbGVjdGlvbgogewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OldlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBu
aWxdOworICAgIHJldHVybiBAW1dlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpXTsKIH0KIAogLSAodm9pZCl3cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJv
YXJkVHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBh
c3RlYm9hcmQKQEAgLTExMjQsMjIgKzExMjEsMjMgQEAgc3RhdGljIHZvaWQgcmVtb3ZlVXNlbGVz
c01lbnVJdGVtU2VwYXJhdG9ycyhOU011dGFibGVBcnJheSAqbWVudUl0ZW1zKQogLSAoTlNNdXRh
YmxlQXJyYXkgKilfbWVudUl0ZW1zRnJvbVBERktpdEZvckV2ZW50OihOU0V2ZW50ICopdGhlRXZl
bnQKIHsKICAgICBOU011dGFibGVBcnJheSAqY29waWVkSXRlbXMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXldOwotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9uc1RvVGFncyA9IFtbTlNEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVuZGVjbGFyZWQtc2VsZWN0b3IiKQotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpX
ZWJNZW51SXRlbVBERkFjdHVhbFNpemVdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Io
X3NldEFjdHVhbFNpemU6KSksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1l
bnVJdGVtUERGWm9vbUluXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21Jbjop
KSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZab29tT3V0
XSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21PdXQ6KSksCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGQXV0b1NpemVdLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEF1dG9TaXplOikpLAotICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2VdLCBOU1N0cmluZ0Zyb21TZWxl
Y3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2U6KSksCi0gICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OldlYk1lbnVJdGVtUERGU2luZ2xlUGFnZVNjcm9sbGluZ10sIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZVNjcm9sbGluZzopKSwKLSAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc10sIE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZTopKSwKLSAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc1Njcm9sbGluZ10s
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZVNjcm9sbGluZzop
KSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZDb250aW51
b3VzXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF90b2dnbGVDb250aW51b3VzOikp
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERk5leHRQYWdl
XSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9OZXh0UGFnZTopKSwKLSAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZQcmV2aW91c1BhZ2VdLCBO
U1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFnZTopKSwKLUlHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICBOU0RpY3Rpb25hcnkgKmFjdGlvbnNUb1RhZ3MgPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgQChXZWJNZW51
SXRlbVBERkFjdHVhbFNpemUpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEFj
dHVhbFNpemU6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZab29tSW4pLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbUluOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERG
Wm9vbU91dCksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tT3V0OikpLAorICAg
ICAgICBAKFdlYk1lbnVJdGVtUERGQXV0b1NpemUpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2Vs
ZWN0b3IoX3NldEF1dG9TaXplOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGU2luZ2xlUGFn
ZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZTopKSwKKyAg
ICAgICAgQChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2VTY3JvbGxpbmcpLCBOU1N0cmluZ0Zyb21T
ZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2VTY3JvbGxpbmc6KSksCisgICAgICAgIEAo
V2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlcyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rv
cihfc2V0RG91YmxlUGFnZTopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2Vz
U2Nyb2xsaW5nKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdl
U2Nyb2xsaW5nOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGQ29udGludW91cyksIE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKEBzZWxlY3RvcihfdG9nZ2xlQ29udGludW91czopKSwKKyAgICAgICAg
QChXZWJNZW51SXRlbVBERk5leHRQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9y
KGdvVG9OZXh0UGFnZTopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERlByZXZpb3VzUGFnZSks
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvUHJldmlvdXNQYWdlOikpLAogICAg
ICAgICBuaWxdOwotICAgIAorSUdOT1JFX1dBUk5JTkdTX0VORAorCiAgICAgLy8gTGVhdmUgdGhl
c2UgbWVudSBpdGVtcyBvdXQsIHNpbmNlIFdlYktpdCBpbnNlcnRzIGVxdWl2YWxlbnQgb25lcy4g
Tm90ZSB0aGF0IHdlIGxlYXZlIG91dCBQREZLaXQncyAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5Igog
ICAgIC8vIGl0ZW0gaGVyZSBiZWNhdXNlIFdlYktpdCBhbHJlYWR5IGluY2x1ZGVzIGFuIGl0ZW0g
d2l0aCB0aGUgc2FtZSB0aXRsZSBhbmQgcHVycG9zZS4gV2UgbWFwIFdlYktpdCdzIHRvIFBERktp
dCdzIAogICAgIC8vICJMb29rIFVwIGluIERpY3Rpb25hcnkiIHZpYSB0aGUgaW1wbGVtZW50YXRp
b24gb2YgLVtXZWJQREZWaWV3IF9sb29rVXBJbkRpY3Rpb25hcnlGcm9tTWVudTpdLgpAQCAtMTI2
NSwyMCArMTI2MywxMyBAQCAtICh2b2lkKV9vcGVuV2l0aEZpbmRlcjooaWQpc2VuZGVyCiAgICAg
aWYgKG9wYXRoKSB7CiAgICAgICAgIGlmICghd3JpdHRlbikgewogICAgICAgICAgICAgLy8gQ3Jl
YXRlIGEgUERGIGZpbGUgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyAob25seSBhY2Nlc3Np
YmxlIHRvIHRoZSBjdXJyZW50IHVzZXIsIHNlZSA0MTQ1NzE0KQotICAgICAgICAgICAgTlNOdW1i
ZXIgKnBlcm1pc3Npb25zID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6U19JUlVTUl07
Ci0gICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmZpbGVBdHRyaWJ1dGVzID0gW1tOU0RpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6cGVybWlzc2lvbnMsIE5TRmlsZVBvc2l4
UGVybWlzc2lvbnMsIG5pbF07Ci0gICAgICAgICAgICBbcGVybWlzc2lvbnMgcmVsZWFzZV07Ci0K
LSAgICAgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRmlsZUF0
UGF0aDpvcGF0aCBjb250ZW50czpbZGF0YVNvdXJjZSBkYXRhXSBhdHRyaWJ1dGVzOmZpbGVBdHRy
aWJ1dGVzXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgW2ZpbGVBdHRyaWJ1dGVzIHJlbGVh
c2VdOworICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVG
aWxlQXRQYXRoOm9wYXRoIGNvbnRlbnRzOltkYXRhU291cmNlIGRhdGFdIGF0dHJpYnV0ZXM6QHsg
TlNGaWxlUG9zaXhQZXJtaXNzaW9uczogQChTX0lSVVNSKSB9XTsKICAgICAgICAgICAgIHdyaXR0
ZW4gPSBZRVM7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmICghW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jr
c3BhY2VdIG9wZW5GaWxlOm9wYXRoXSkgewotICAgICAgICAgICAgLy8gTlNXb3Jrc3BhY2UgY291
bGRuJ3Qgb3BlbiBmaWxlLiAgRG8gd2UgbmVlZCBhbiBhbGVydAotICAgICAgICAgICAgLy8gaGVy
ZT8gIFdlIGlnbm9yZSB0aGUgZXJyb3IgZWxzZXdoZXJlLgorICAgICAgICAgICAgLy8gTlNXb3Jr
c3BhY2UgY291bGRuJ3Qgb3BlbiBmaWxlLiBEbyB3ZSBuZWVkIGFuIGFsZXJ0IGhlcmU/IFdlIGln
bm9yZSB0aGUgZXJyb3IgZWxzZXdoZXJlLgogICAgICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KQEAgLTEzNDUsMTIgKzEzMzYsNyBAQCAtIChQ
REZWaWV3ICopX1BERlN1YnZpZXcKIC0gKEJPT0wpX3BvaW50SXNJblNlbGVjdGlvbjooTlNQb2lu
dClwb2ludAogewogICAgIFBERlBhZ2UgKnBhZ2UgPSBbUERGU3VidmlldyBwYWdlRm9yUG9pbnQ6
cG9pbnQgbmVhcmVzdDpOT107Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gTk87Ci0g
ICAgCi0gICAgTlNSZWN0IHNlbGVjdGlvblJlY3QgPSBbUERGU3VidmlldyBjb252ZXJ0UmVjdDpb
W1BERlN1YnZpZXcgY3VycmVudFNlbGVjdGlvbl0gYm91bmRzRm9yUGFnZTpwYWdlXSBmcm9tUGFn
ZTpwYWdlXTsKLSAgICAKLSAgICByZXR1cm4gTlNQb2ludEluUmVjdChwb2ludCwgc2VsZWN0aW9u
UmVjdCk7CisgICAgcmV0dXJuIHBhZ2UgJiYgTlNQb2ludEluUmVjdChwb2ludCwgW1BERlN1YnZp
ZXcgY29udmVydFJlY3Q6W1tQREZTdWJ2aWV3IGN1cnJlbnRTZWxlY3Rpb25dIGJvdW5kc0ZvclBh
Z2U6cGFnZV0gZnJvbVBhZ2U6cGFnZV0pOwogfQogCiAtICh2b2lkKV9zY2FsZU9yRGlzcGxheU1v
ZGVPclBhZ2VDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggMDI3
OTM5NDMwODA0NmI4YTI4M2FiNmFhMzYwNDgyOWFiMjlmZDFiNy4uMTgwOTI5YzRkMWY2OTdmNzA0
MTk4YzNkOWM4Yzg1MmJkNmRlNjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC00NjUsMTcgKzQ2NSwxNiBAQCArICh2b2lk
KWluaXRpYWxpemUKICAgICAgICAgQCIwIiwgV2ViS2l0UERGU2NhbGVGYWN0b3JQcmVmZXJlbmNl
S2V5LAogI2VuZGlmCiAgICAgICAgIEAiMCIsIFdlYktpdFVzZVNpdGVTcGVjaWZpY1Nwb29maW5n
UHJlZmVyZW5jZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViS2l0RWRp
dGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yXSwgV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVm
ZXJlbmNlS2V5LAorICAgICAgICBAKFdlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvciks
IFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSwKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViVGV4dERpcmVj
dGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWRdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVo
YXZpb3JQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKFdlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0
b21hdGljYWxseUluY2x1ZGVkKSwgV2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25C
ZWhhdmlvclByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0RE9NUGFzdGVBbGxvd2Vk
UHJlZmVyZW5jZUtleSwKICNlbmRpZgogICAgICAgICBAWUVTLCBXZWJLaXRVc2VzUGFnZUNhY2hl
UHJlZmVyZW5jZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Y2FjaGVNb2Rl
bEZvck1haW5CdW5kbGUoKV0sIFdlYktpdENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5LAorICAgICAg
ICBAKGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKCkpLCBXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5j
ZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJlZmVy
ZW5jZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDowXSwgV2Vi
S2l0SmF2YVNjcmlwdFJ1bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXksCisgICAgICAgIEAoMCksIFdl
YktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBX
ZWJLaXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZ
RVMsIFdlYktpdERPTVRpbWVyc1Rocm90dGxpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgQE5PLCBXZWJLaXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZFByZWZlcmVuY2VLZXksCkBA
IC01MTEsOSArNTEwLDkgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEBZRVMsIFdlYktp
dExhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZ
RVMsIFdlYktpdEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDpzdGF0aWNfY2FzdDx1aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpGdWxseUVu
YWJsZWQpXSwgV2ViS2l0RnJhbWVGbGF0dGVuaW5nUHJlZmVyZW5jZUtleSwKKyAgICAgICAgQChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpGdWxseUVuYWJsZWQpKSwgV2Vi
S2l0RnJhbWVGbGF0dGVuaW5nUHJlZmVyZW5jZUtleSwKICNlbHNlCi0gICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRl
bmluZzo6RGlzYWJsZWQpXSwgV2ViS2l0RnJhbWVGbGF0dGVuaW5nUHJlZmVyZW5jZUtleSwKKyAg
ICAgICAgQChzdGF0aWNfY2FzdDx1aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpEaXNhYmxlZCkp
LCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LAogI2VuZGlmCiAgICAgICAgIEBO
TywgV2ViS2l0QXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAg
ICBATk8sIFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXksCkBAIC01
NDQsNyArNTQzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuXSwgV2Vi
S2l0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlblByZWZlcmVuY2VLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpyZXF1aXJlc1BsYXlzSW5saW5lQXR0
cmlidXRlXSwgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRy
aWJ1dGVLZXksCiAgICAgICAgIEBOTywgV2ViS2l0TWVkaWFDb250cm9sc1NjYWxlV2l0aFBhZ2Va
b29tUHJlZmVyZW5jZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZElu
dDpBdWRpb1Nlc3Npb246Ok5vbmVdLCBXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRl
LAorICAgICAgICBAKEF1ZGlvU2Vzc2lvbjo6Tm9uZSksIFdlYktpdEF1ZGlvU2Vzc2lvbkNhdGVn
b3J5T3ZlcnJpZGUsCiAgICAgICAgIEBOTywgV2ViS2l0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNh
bGx5UHJlZmVyZW5jZUtleSwKICNpZiBIQVZFKEFWS0lUKQogICAgICAgICBAWUVTLCBXZWJLaXRB
VktpdEVuYWJsZWQsCkBAIC01NzAsNyArNTY5LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
ICAgIEBZRVMsIFdlYktpdFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5
LAogICAgICAgICBATk8sIFdlYktpdFdhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZp
b3JLZXksCiAgICAgICAgIEBOTywgV2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkS2V5LAot
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJBbGxvd0FsbFN0b3JhZ2VdLCBXZWJL
aXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXksCisgICAgICAgIEAoV2ViQWxsb3dBbGxTdG9yYWdl
KSwgV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5LAogICAgICAgICBATk8sIFdlYktpdFBs
dWdJblNuYXBzaG90dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTU3OSw3ICs1NzgsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDotMS4wZl0sIFdlYktpdE1heFBhcnNlRHVyYXRpb25Q
cmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdEFsbG93TXVsdGlFbGVtZW50SW1wbGlj
aXRGb3JtU3VibWlzc2lvblByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0QWx3YXlz
UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvblByZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19jYXN0PGludD4oSW50ZXJwb2xhdGlvblF1YWxpdHk6
OkxvdyldLCBXZWJLaXRJbnRlcnBvbGF0aW9uUXVhbGl0eVByZWZlcmVuY2VLZXksCisgICAgICAg
IEAoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnBvbGF0aW9uUXVhbGl0eTo6TG93KSksIFdlYktpdElu
dGVycG9sYXRpb25RdWFsaXR5UHJlZmVyZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0UGFz
c3dvcmRFY2hvRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6Mi4wZl0sIFdlYktpdFBhc3N3b3JkRWNob0R1cmF0aW9uUHJlZmVyZW5jZUtleSwK
ICAgICAgICAgQE5PLCBXZWJLaXROZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSwKQEAgLTg1MCw3ICs4NDksNyBAQCAtICh2b2lkKV9zZXRVbnNpZ25lZEludFZhbHVl
Oih1bnNpZ25lZCBpbnQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgIH0pOwogI2Vu
ZGlmCiAgICAgaWYgKF9wcml2YXRlLT5hdXRvc2F2ZXMpCi0gICAgICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVu
c2lnbmVkSW50OnZhbHVlXSBmb3JLZXk6X2tleV07CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDpAKHZhbHVlKSBmb3JLZXk6X2tleV07CiAg
ICAgW3NlbGYgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOwogfQogCkBAIC0x
ODA4LDcgKzE4MDcsNyBAQCAtICh2b2lkKXNldEVkaXRhYmxlTGlua0JlaGF2aW9yOihXZWJLaXRF
ZGl0YWJsZUxpbmtCZWhhdmlvciliZWhhdmlvcgogCiAtIChXZWJUZXh0RGlyZWN0aW9uU3VibWVu
dUluY2x1c2lvbkJlaGF2aW9yKXRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IK
IHsKLSAgICBXZWJUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIHZhbHVlID0g
c3RhdGljX2Nhc3Q8V2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcj4oW3Nl
bGYgX2ludGVnZXJWYWx1ZUZvcktleTpXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lv
bkJlaGF2aW9yUHJlZmVyZW5jZUtleV0pOworICAgIGF1dG8gdmFsdWUgPSBzdGF0aWNfY2FzdDxX
ZWJUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yPihbc2VsZiBfaW50ZWdlclZh
bHVlRm9yS2V5OldlYktpdFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JQcmVm
ZXJlbmNlS2V5XSk7CiAgICAgaWYgKHZhbHVlICE9IFdlYlRleHREaXJlY3Rpb25TdWJtZW51TmV2
ZXJJbmNsdWRlZCAmJgogICAgICAgICB2YWx1ZSAhPSBXZWJUZXh0RGlyZWN0aW9uU3VibWVudUF1
dG9tYXRpY2FsbHlJbmNsdWRlZCAmJgogICAgICAgICB2YWx1ZSAhPSBXZWJUZXh0RGlyZWN0aW9u
U3VibWVudUFsd2F5c0luY2x1ZGVkKSB7CkBAIC0xOTQzLDcgKzE5NDIsNyBAQCArIChDRlN0cmlu
Z0VuY29kaW5nKV9zeXN0ZW1DRlN0cmluZ0VuY29kaW5nCiArICh2b2lkKV9zZXRJbml0aWFsRGVm
YXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2RpbmcKIHsKICAgICBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOgotICAgICAgICBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lRm9yU3lz
dGVtTGFuZ3VhZ2UoKSBmb3JLZXk6V2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJl
bmNlS2V5XV07CisgICAgICAgIEB7IFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVy
ZW5jZUtleTogZGVmYXVsdFRleHRFbmNvZGluZ05hbWVGb3JTeXN0ZW1MYW5ndWFnZSgpIH1dOwog
fQogCiBzdGF0aWMgTlNTdHJpbmcgKmNsYXNzSUJDcmVhdG9ySUQgPSBuaWw7CkBAIC0yNzU2LDgg
KzI3NTUsNyBAQCAtICh2b2lkKXNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeTooV2ViU3RvcmFnZUJs
b2NraW5nUG9saWN5KXN0b3JhZ2VCbG9ja2luZ1BvbGljeQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB3cml0ZSB0aGUgc2V0dGluZyBvdXQsIHNvIHdl
IGp1c3QgcmVzZXQgdGhlIGRlZmF1bHQgaW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBuZXcgc2V0dGlu
Zy4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHJlbW92ZXMgYW55IGRlZmF1bHRzIHByZXZpb3Vz
bHkgcmVnaXN0ZXJlZCBieSBjbGllbnQgcHJvY2Vzcywgd2hpY2ggaXMgbm90IGFwcHJvcHJpYXRl
IGZvciB0aGlzIG1ldGhvZCB0byBkby4KLSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OnN0b3Jh
Z2VCbG9ja2luZ1BvbGljeV0gZm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleV07
Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZh
dWx0czpkaWN0XTsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBy
ZWdpc3RlckRlZmF1bHRzOkB7IFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleTogQChzdG9y
YWdlQmxvY2tpbmdQb2xpY3kpIH1dOwogI2Vsc2UKICAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnN0b3JhZ2VCbG9ja2luZ1BvbGljeSBmb3JLZXk6V2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5
S2V5XTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggZTY1OWVmMGZhM2ZhYTBlNjAxOGEzZjQ4MTVkODk2
NDEzZmU5ZDI2ZC4uMTQ1NzM5ODc4YzU3OWZlYzVjYTJkYmQ1YzIxMTZjN2UxZjNiM2IzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNl
UGFyc2VkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IG5z
U3RyaW5nTmlsSWZFbXB0eShlcnJvck1zZyk7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9
IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOm5zRXJyb3JNZXNz
YWdlLCBXZWJTY3JpcHRFcnJvckRlc2NyaXB0aW9uS2V5LCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVu
c2lnbmVkSW50OmVycm9yTGluZV0sIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleSwgbmlsXTsK
KyAgICAgICAgTlNEaWN0aW9uYXJ5ICppbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlwdEVycm9yRGVzY3JpcHRp
b25LZXksIEAoZXJyb3JMaW5lKSwgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5LCBuaWxdOwog
ICAgICAgICBOU0Vycm9yICplcnJvciA9IFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46
V2ViU2NyaXB0RXJyb3JEb21haW4gY29kZTpXZWJTY3JpcHRHZW5lcmFsRXJyb3JDb2RlIHVzZXJJ
bmZvOmluZm9dOwogCiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmZhaWxlZFRvUGFyc2VT
b3VyY2VGdW5jKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQppbmRleCBhMzgxZDEwYjI4YTNk
ZWU5NTQ4ZWEyZWU0Njk5NjA1N2EzYjI2ZTE2Li42ZDMxN2I5N2Q1NWIzNTdiYjI4NGQ5Nzc5MjFl
NDBhNmU3ZGYwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQpAQCAtMTM3LDcgKzEz
Nyw3IEBAIC0gKHZvaWQpX3BsYWNlUG9wdXBXaW5kb3c6KE5TUG9pbnQpdG9wTGVmdAogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHdpbmRvd0ZyYW1lLnNpemUuaGVp
Z2h0ID0gbnVtYmVyVG9TaG93ICogW190YWJsZVZpZXcgcm93SGVpZ2h0XSArIChudW1iZXJUb1No
b3cgKyAxKSAqIFtfdGFibGVWaWV3IGludGVyY2VsbFNwYWNpbmddLmhlaWdodDsKICAgICB3aW5k
b3dGcmFtZS5vcmlnaW4ueSAtPSB3aW5kb3dGcmFtZS5zaXplLmhlaWdodDsKLSAgICBOU0RpY3Rp
b25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0Fu
ZEtleXM6W05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyLjBmXSwgTlNGb250QXR0cmlidXRlTmFt
ZSwgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1
dGVOYW1lOiBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTIuMGZdIH07CiAgICAgQ0dGbG9hdCBt
YXhXaWR0aCA9IDA7CiAgICAgaW50IG1heEluZGV4ID0gLTE7CiAgICAgZm9yIChOU1VJbnRlZ2Vy
IGkgPSAwOyBpIDwgbnVtYmVyVG9TaG93OyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBkMTE3NzdkYjZlMTZiZTg5ZGFkNGQ3ZTY4MGUzMTdi
NWI3ZGZlNTNhLi45NWQwZjNlOGQ2N2E4MzQwMTJhZDA3ZjYzZWRkY2UyOTA2NzNhZmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yNDMsNyArMjQz
LDYgQEAKICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFRyYWl0
cy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0
Zi9SQU1TaXplLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC0y
NTQsNiArMjUzLDcgQEAKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+
CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTI5MjMsNyArMjkyMyw3IEBAIC0gKHZv
aWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogICAg
IHNldHRpbmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShbcHJlZmVyZW5jZXMgbG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5XSk7CiAgICAgc2V0dGluZ3Muc2V0TG9hZHNTaXRlSWNvbnNJZ25v
cmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoW3ByZWZlcmVuY2VzIGxvYWRzU2l0ZUljb25zSWdub3Jp
bmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlXSk7CiAKLSAgICBXZWJDb3JlOjpzZXRBZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcyhXZWJDb3JlOjp3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3Ry
aW5nQXJyYXkoW3ByZWZlcmVuY2VzIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOwor
ICAgIFdlYkNvcmU6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKG1ha2VWZWN0b3I8
U3RyaW5nPihbcHJlZmVyZW5jZXMgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHNldHRpbmdzLnNldFNob3VsZFByaW50QmFj
a2dyb3VuZHModHJ1ZSk7CkBAIC00NTI4LDcgKzQ1MjgsNyBAQCAtIChOU0RpY3Rpb25hcnkgKilf
Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtOihOU1N0cmluZyAqKXVzZXJJbnRlcmZhY2VJdGVt
CiAgICAgICAgIGF1dG8qIHZhbGlkYXRpb25CdWJibGUgPSBfcHJpdmF0ZS0+Zm9ybVZhbGlkYXRp
b25CdWJibGUuZ2V0KCk7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gdmFsaWRhdGlvbkJ1YmJs
ZSA/IHZhbGlkYXRpb25CdWJibGUtPm1lc3NhZ2UoKSA6IGVtcHR5U3RyaW5nKCk7CiAgICAgICAg
IGRvdWJsZSBmb250U2l6ZSA9IHZhbGlkYXRpb25CdWJibGUgPyB2YWxpZGF0aW9uQnViYmxlLT5m
b250U2l6ZSgpIDogMDsKLSAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRlcmZhY2VJdGVtOiBAeyBA
Im1lc3NhZ2UiOiAoTlNTdHJpbmcgKiltZXNzYWdlLCBAImZvbnRTaXplIjogW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6Zm9udFNpemVdIH0gfTsKKyAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRl
cmZhY2VJdGVtOiBAeyBAIm1lc3NhZ2UiOiAoTlNTdHJpbmcgKiltZXNzYWdlLCBAImZvbnRTaXpl
IjogQChmb250U2l6ZSkgfSB9OwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CkBAIC00NjQ0LDIy
ICs0NjQ0LDYgQEAgLSAodm9pZClfdXBkYXRlQWN0aXZlU3RhdGUKICNlbmRpZgogfQogCi1zdGF0
aWMgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoTlNBcnJheSogcGF0dGVybnMpCi17Ci0g
ICAgVmVjdG9yPFN0cmluZz4gcGF0dGVybnNWZWN0b3I7Ci0KLSAgICBOU1VJbnRlZ2VyIGNvdW50
ID0gW3BhdHRlcm5zIGNvdW50XTsKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4gcGF0
dGVybnNWZWN0b3I7Ci0KLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgIGlkIGVudHJ5ID0gW3BhdHRlcm5zIG9iamVjdEF0SW5kZXg6aV07Ci0gICAg
ICAgIGlmIChbZW50cnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAg
ICAgIHBhdHRlcm5zVmVjdG9yLmFwcGVuZChTdHJpbmcoKE5TU3RyaW5nICopZW50cnkpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwotfQotCiArICh2b2lkKV9hZGRVc2VyU2Ny
aXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICop
d29ybGQgc291cmNlOihOU1N0cmluZyAqKXNvdXJjZSB1cmw6KE5TVVJMICopdXJsCiAgICAgICAg
ICAgICAgICAgICAgIHdoaXRlbGlzdDooTlNBcnJheSAqKXdoaXRlbGlzdCBibGFja2xpc3Q6KE5T
QXJyYXkgKilibGFja2xpc3QKICAgICAgICAgICAgICAgICBpbmplY3Rpb25UaW1lOihXZWJVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lCkBAIC00NjgxLDcgKzQ2NjUsNyBAQCAr
ICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4o
c291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJs
YWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gV2Vi
Q29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdl
YkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUlu
amVjdGluZzo6Tm8pOworICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIG1ha2VWZWN0b3I8U3RyaW5nPih3aGl0ZWxpc3QpLCBt
YWtlVmVjdG9yPFN0cmluZz4oYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RB
dERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1l
bnRTdGFydCA6IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29u
dGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CiB9CiAKQEAgLTQ3MDQsNyArNDY4OCw3IEBAICsgKHZvaWQpX2FkZFVzZXJTdHls
ZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxk
ICopCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNo
ZWV0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6VXNlclN0eWxlVXNl
ckxldmVsKTsKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgbWFrZVZlY3RvcjxTdHJpbmc+KHdoaXRlbGlzdCksIG1h
a2VWZWN0b3I8U3RyaW5nPihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJ
bkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
QWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5U
b3BGcmFtZU9ubHksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAgdmlld0dyb3Vw
LT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCgqY29yZSh3b3JsZCks
IFdURk1vdmUoc3R5bGVTaGVldCksIFdlYkNvcmU6OkluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogfQogCkBAIC02NzM3LDcgKzY3MjEsNyBAQCAtIChOU0RpY3Rpb25hcnkgKilfZWxlbWVudEF0
V2luZG93UG9pbnQ6KE5TUG9pbnQpd2luZG93UG9pbnQKICAgICAgICAgTlNQb2ludCBwb2ludCA9
IFtkb2N1bWVudFZpZXcgY29udmVydFBvaW50OndpbmRvd1BvaW50IGZyb21WaWV3Om5pbF07CiAg
ICAgICAgIHJldHVybiBbKE5TVmlldyA8V2ViRG9jdW1lbnRFbGVtZW50PiAqKWRvY3VtZW50Vmll
dyBlbGVtZW50QXRQb2ludDpwb2ludF07CiAgICAgfQotICAgIHJldHVybiBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0OltmcmFtZVZpZXcgd2ViRnJhbWVdIGZvcktleTpXZWJFbGVt
ZW50RnJhbWVLZXldOworICAgIHJldHVybiBAeyBXZWJFbGVtZW50RnJhbWVLZXk6IFtmcmFtZVZp
ZXcgd2ViRnJhbWVdIH07CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihO
U1BvaW50KXBvaW50CkBAIC03MDI1LDcgKzcwMDksNyBAQCAtIChOU0FycmF5ICopcGFzdGVib2Fy
ZFR5cGVzRm9yU2VsZWN0aW9uCiAgICAgaWYgKFtkb2N1bWVudFZpZXcgY29uZm9ybXNUb1Byb3Rv
Y29sOkBwcm90b2NvbChXZWJEb2N1bWVudFNlbGVjdGlvbildKSB7CiAgICAgICAgIHJldHVybiBb
KE5TVmlldyA8V2ViRG9jdW1lbnRTZWxlY3Rpb24+ICopZG9jdW1lbnRWaWV3IHBhc3RlYm9hcmRU
eXBlc0ZvclNlbGVjdGlvbl07CiAgICAgfQotICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07Cisg
ICAgcmV0dXJuIEBbXTsKIH0KIAogLSAodm9pZCl3cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJk
VHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3Rl
Ym9hcmQKQEAgLTcwNDcsNyArNzAzMSw3IEBAIC0gKE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNG
b3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50CiAgICAgfSBlbHNlIGlmIChbW2VsZW1l
bnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRJc1NlbGVjdGVkS2V5XSBib29sVmFsdWVdKSB7CiAg
ICAgICAgIHJldHVybiBbc2VsZiBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25dOwogICAgIH0K
LSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgIHJldHVybiBAW107CiB9CiAKIC0gKHZv
aWQpd3JpdGVFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50IHdpdGhQYXN0ZWJvYXJkVHlw
ZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9h
cmQKQEAgLTgwMTgsNyArODAwMiw3IEBAIC0gKHZvaWQpdW5tYXJrQWxsVGV4dE1hdGNoZXMKIC0g
KE5TQXJyYXkgKilyZWN0c0ZvclRleHRNYXRjaGVzCiB7CiAgICAgaWYgKF9wcml2YXRlLT5jbG9z
ZWQpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107
CiAKICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
ICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbc2VsZiBtYWluRnJhbWVdOwpAQCAtOTA3NSw3ICs5MDU5
LDcgQEAgLSAodm9pZClfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51OihpZClzZW5kZXIKICAgICB9
CiAKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBv
d25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW1dlYkNvcmU6OmxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CiAgICAgTlNNdXRhYmxlU3RyaW5n
ICpzID0gW3NlbGVjdGVkU3RyaW5nIG11dGFibGVDb3B5XTsKICAgICBjb25zdCB1bmljaGFyIG5v
bkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgPSAweEEwOwogICAgIE5TU3RyaW5nICpub25CcmVha2lu
Z1NwYWNlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZub25CcmVha2lu
Z1NwYWNlQ2hhcmFjdGVyIGxlbmd0aDoxXTsKQEAgLTEwMTY5LDE3ICsxMDE1MywxNiBAQCAtICh1
aW50NjRfdClfbm90aWZpY2F0aW9uSURGb3JUZXN0aW5nOihKU1ZhbHVlUmVmKWpzTm90aWZpY2F0
aW9uCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3Rm9udFNlbGVjdGlv
bikKKwogKyAodm9pZClfc2V0Rm9udFdoaXRlbGlzdDooTlNBcnJheSAqKXdoaXRlbGlzdAogewog
I2lmICFQTEFURk9STShNQUMpCiAgICAgVU5VU0VEX1BBUkFNKHdoaXRlbGlzdCk7CiAjZWxzZQot
ICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKLSAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgaW4g
d2hpdGVsaXN0KQotICAgICAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZyk7Ci0gICAgV2ViQ29yZTo6
Rm9udENhY2hlOjpzZXRGb250V2hpdGVsaXN0KHZlY3Rvcik7CisgICAgV2ViQ29yZTo6Rm9udENh
Y2hlOjpzZXRGb250V2hpdGVsaXN0KG1ha2VWZWN0b3I8U3RyaW5nPih3aGl0ZWxpc3QpKTsKICNl
bmRpZgogfQorCiBAZW5kCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdlNDg2ZmRlMzdkYWUwMmMx
NDc3MzEwYjc4M2Y3MmI0YjA0YmU1ZjcuLjUxYzI3ZGY3NTEyNWU1YmY2N2NkYzFjOTVlOTJjZmY4
MzVkOWZmZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNTYgQEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5
LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmg6IFJlbW92ZSB1c2Ugb2YgTm90aWZpY2F0aW9uSGFuZGxlcgorICAg
ICAgICB0eXBlOyBpdCdzIGp1c3QgImlkIi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoY29udmVydEVsZW1lbnRzVG9PYmpl
Y3RBcnJheSk6IE1vdmVkIHRoaXMgdXAgaW4gdGhlIGZpbGUsIHJlbW92ZWQgdW5uZWVkZWQKKyAg
ICAgICAgdXNlIG9mIEpTVmFsdWVUb09iamVjdCBhbmQgdW51c2VkIGV4Y2VwdGlvbiBhcmd1bWVu
dC4KKyAgICAgICAgKGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjayk6IFVzZSBjb252ZXJ0RWxlbWVu
dHNUb09iamVjdEFycmF5LgorICAgICAgICAoY29sdW1uSGVhZGVyc0NhbGxiYWNrKTogVXBkYXRl
ZCBmb3IgcmVtb3ZlZCBleGNlcHRpb24gYXJndW1lbnQuCisgICAgICAgIChyb3dIZWFkZXJzQ2Fs
bGJhY2spOiBEaXR0by4KKyAgICAgICAgKHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWVDYWxs
YmFjayk6IERpdHRvLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oOiBDaGFuZ2VkIHRvIHVzZSBSZXRhaW5QdHIuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tOgorICAgICAgICAo
Y3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKTogVXNlIEB7fS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IFJlbW92ZWQgc29tZSB1
bm5lZWRlZAorICAgICAgICBjb2RlIG5vdyB0aGF0IHdlIHVzZSBSZXRhaW5QdHIuCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlcik6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKTogVXNlIEBbXS4KKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMpOiBV
c2UgQFtdLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVy
SU9TLm06CisgICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgbWFya2VkUmFuZ2VdKTogVXNl
IEBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLm1tOgorICAgICAgICAoc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZv
clNlYXJjaENyaXRlcmlhKTogVHdlYWsgYSBsaXR0bGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW06CisgICAgICAgICgt
W05TU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXSk6IERlbGV0ZWQuIER1cGxpY2F0ZSBvZiBhIG1l
dGhvZCBhbHJlYWR5CisgICAgICAgIGltcGxlbWVudGVkIGluIGFub3RoZSBmaWxlLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06Cisg
ICAgICAgIChtYWtlVmVjdG9yRWxlbWVudCk6IEFkZGVkIG92ZXJsb2FkcyB0byBtYWtlIGJvdGgK
KyAgICAgICAgbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBhbmQKKyAg
ICAgICAgbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB3b3JrLgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IFJlbW92ZWQg
c29tZSB1bm5lZWRlZAorICAgICAgICBjb2RlIG5vdyB0aGF0IHdlIHVzZSBSZXRhaW5QdHIuCisg
ICAgICAgIChjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNl
IG9mIEpTVmFsdWVUb09iamVjdAorICAgICAgICBhbmQgdW5uZWVkZWQgZXhjZXB0aW9uIGFyZ3Vt
ZW50LgorICAgICAgICAoY29udmVydE5TQXJyYXlUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKTogVXNlCisgICAg
ICAgIG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4uCisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKTogRGl0dG8uCisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UpOiBEaXR0by4KKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRl
VmFsdWUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
bGUpOiBVcGRhdGVkIHNpbmNlIG1fZWxlbWVudCBpcyBhIFJldGFpblB0ci4KKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhlbHBUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgpOiBVc2UgQCgpLgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKTogVXNlIEAoKS4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlYXJjaFRleHRXaXRoQ3JpdGVyaWEpOiBVc2UKKyAgICAgICAgbWFrZVZl
Y3RvcjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPi4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMpOiBVc2UKKyAgICAgICAgbWFr
ZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pi4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOiBEaXR0by4KKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MpOiBEaXR0by4KKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6IERp
dHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
dFNlbGVjdGVkQ2hpbGQgY29uc3QpOiBVc2UgQFtdLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZEF0SW5kZXggY29uc3QpOiBVc2UgQFtdLgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZVdpdGhPcHRpb25zKToKKyAgICAgICAgVXNlIEB7fSwgQFlFUywgYW5kIEBOTy4KKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOiBV
c2UgQFtdLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
OgorICAgICAgICAoYWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgpOiBVc2UgQFtdLgor
ICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKTogVXNl
IEBbXS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJv
YXJkLm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQgZGVjbGFyZVR5cGU6
b3duZXI6XSk6IFVzZSBAW10uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVn
aW5EcmFnV2l0aEZpbGVzOl0pOiBVc2UgQCgpLgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250
cm9sbGVyIHNlbnRUb3VjaEV2ZW50T2ZUeXBlOl0pOiBVc2UgQCgpLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgt
W01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBjYW5jZWxOb3RpZmljYXRpb246XSk6IFVzZSBA
W10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubToKKyAg
ICAgICAgKC1bT2JqQ0NvbnRyb2xsZXIgb2JqZWN0T2ZDbGFzczpdKTogVXNlIEAoKS4KKyAgICAg
ICAgKC1bT2JqQ0NvbnRyb2xsZXIgYXJyYXlPZlN0cmluZ10pOiBVc2UgQFtdLgorICAgICAgICAo
LVtPYmpDQ29udHJvbGxlciB0ZXN0V3JhcHBlclJvdW5kVHJpcHBpbmc6XSk6IFVzZSBAKCkuCisg
ICAgICAgICgtW09iakNDb250cm9sbGVyIHRlc3RBcnJheV0pOiBVc2UgQFtdLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChvcmlnaW5z
QXJyYXlUb0pTKTogUmVtb3ZlZCB1bm5lZWRlZCB1c2Ugb2YgSlNWYWx1ZVRvT2JqZWN0LgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubToKKyAg
ICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBtYXJrZWRSYW5nZV0pOiBVc2UgQFtdIGFuZCBA
KCkuCisgICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgc2VsZWN0ZWRSYW5nZV0pOiBVc2Ug
QFtdIGFuZCBAKCkuCisgICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyc0Zyb206bGVuZ3RoOl0pOgorICAgICAgICBVc2UgQFtdIGFuZCBAKCkuCisgICAg
ICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmlu
ZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDpdKToKKyAg
ICAgICAgVXNlIEBbXS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBpbnRlcnByZXRL
ZXlFdmVudHM6d2l0aFNlbmRlcjpdKTogVXNlIEBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlck1hYzo6Y29weVRleHQpOiBVc2UgW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6IERlbGV0ZWQgYW4KKyAgICAg
ICAgdW5uZWVkZWQgY29weSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rvci4KKworICAgICAgICAq
IFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbToKKyAgICAg
ICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBzZXRSZXN1bHRzRnJvbUpTT2JqZWN0OmluQ29u
dGV4dDpdKTogVXNlIEB7fS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAodG9WZWN0b3Ip
OiBEZWxldGVkLgorICAgICAgICAoLVtDb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb25EZWxlZ2F0
ZSBfd2ViVmlldzpjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjpwZXJmb3JtZWRBY3Rpb246
Zm9yVVJMOl0pOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAod3JpdGVJ
bWFnZURhdGFUb1Bhc3RlYm9hcmQpOiBVc2UgQFtdIGFuZCBAe30uCisgICAgICAgICh3cml0ZUJ1
bmRsZUZpbGVUb1Bhc3RlYm9hcmQpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hU
VFBDb29raWVTdG9yZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtd
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tPYmplY3QubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAg
ICAgICAocnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKTogVXNlIEBbXS4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVVUkwubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
V2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tOgorICAgICAgICAoLVtEaWRDcmVh
dGVKYXZhU2NyaXB0Q29udGV4dEZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkQ3JlYXRlSmF2
YVNjcmlwdENvbnRleHQ6Zm9yRnJhbWU6XSk6CisgICAgICAgIFVzZSBAW10uCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbToKKyAgICAgICAgKG1haW4pOiBVc2UgQHt9Lgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxh
dGZvcm1Jbml0aWFsaXplKTogVXNlIEB7fSBhbmQgQCgpLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvbWFjL21haW5NYWMubW06CisgICAgICAgIChtYWluKTogVXNlIHt9LgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
OgorICAgICAgICBVc2UgaWQgaW5zdGVhZCBvZiBOb3RpZmljYXRpb25IYW5kbGVyLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oOgorICAgICAgICBVc2UgaWQgZm9yIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlLiBB
ZGRlZCBhbiBvdmVybG9hZCBvZiBtYWtlVmVjdG9yRWxlbWVudAorICAgICAgICB0byBtYWtlIG1h
a2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+PiB3b3JrLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oOgorICAgICAgICBVc2UgUmV0YWluUHRyLiBBZGRlZCBhbiBvdmVybG9hZCBvZiBtYWtl
VmVjdG9yRWxlbWVudCB0byBtYWtlCisgICAgICAgIG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+PiB3b3JrLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW06CisgICAgICAgIFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OmNv
bnZlcnROU0FycmF5VG9WZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogU2ltcGxpZmllZAorICAgICAg
ICBzaW5jZSB3ZSB1c2UgUmV0YWluUHRyLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV1RSOjpj
b252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KTogUmVtb3ZlZCB1bm5lZWRlZCB1c2Ugb2YKKyAg
ICAgICAgSlNWYWx1ZVRvT2JqZWN0LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbGVtZW50c0ZvclJhbmdlKTogVXNlCisgICAgICAgIG1ha2VWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pi4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICBVc2UgQFtd
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKTogVXNlIEBbXS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hlc1RleHROZWFyTWFya2Vycyk6CisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9JbmplY3RlZEJ1bmRsZUlPUy5tbToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IFVzZSBA
e30uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogU2ltcGxpZmllZAorICAgICAgICBzaW5j
ZSB3ZSB1c2UgUmV0YWluUHRyLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV1RSOjpjb252ZXJ0
TlNBcnJheVRvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4p
OiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRy
ZW5XaXRoUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93SGVhZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMpOiBVcGRhdGVkIHNpbmNlIG1fZWxl
bWVudAorICAgICAgICBpcyBhIFJldGFpblB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKTogRGl0dG8uCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOiBEaXR0by4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6IERpdHRvLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5n
KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKTog
RGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9u
KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0
aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ1ZhbHVlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omxhbmd1YWdlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmhlbHBUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6IFVzZSBAKCkuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6IFVzZSBAKCkuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlYXJjaFRleHRXaXRoQ3JpdGVyaWEpOiBVc2UKKyAgICAg
ICAgbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+LgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFk
ZXJzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZlJvd0hlYWRlcnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKTogRGl0dG8uCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6IERp
dHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1u
QW5kUm93KTogVXNlIEBbXSBhbmQgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZXRTZWxlY3RlZENoaWxkIGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZEF0SW5kZXggY29uc3QpOiBV
c2UgQFtdLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKTogVGFrZSBWZWN0b3ImJi4KKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkpOiBUYWtlIFN0cmlu
ZyYmLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29jb2FQ
bGF0Zm9ybUluaXRpYWxpemUpOiBVc2UgQHt9YW5kIEAoKS4KKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKTogVXNlIG1ha2VWZWN0b3I8U3Ry
aW5nPi4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmxvYWRlZFRoaXJkUGFydHlEb21h
aW5zKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmdldFdlYlZpZXdDYXRlZ29yeSk6IFVwZGF0ZSB0byBwYXNzIFN0cmluZyYmLgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dlZE1lbnVBY3Rpb25zKTogVXNlIGNyZWF0
ZU5TQXJyYXkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVy
YXRvci5tbToKKyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgaW50ZXJwb2xhdGVkRXZlbnRz
Ol0pOiBVc2UgQCgpLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2Vi
Vmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpjaGFuZ2VXaW5kb3dT
Y2FsZUlmTmVlZGVkKTogVXNlIEB7fSBhbmQgQCgpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dCk6IFVzZSBA
W10uCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3Rl
Ym9hcmQubW06CisgICAgICAgICgtW1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkIGRlY2xhcmVU
eXBlOm93bmVyOl0pOiBVc2UgQFtdLgorCiAyMDIwLTA0LTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gVGVzdFdlYktpdEFQSS5XS0hUVFBDb29r
aWVTdG9yZS5XaXRob3V0UHJvY2Vzc1Bvb2xEdXBsaWNhdGVzIGlzIGZhaWxpbmcKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IDFiZGYxYzQz
MGJjNTBiZTM4NGZhY2NlNTBkZmZhNTI4ZGE0ODU2YTUuLjFkYzdkM2I1NjNhMTU0ZjRjZTliZjdh
MzAzMGM4YzVhNzY5N2YzOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCi0jZGVmaW5lIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CkBAIC0z
Miw5ICszMSwxMSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1
ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgorCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFU
Rk9STShHVEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
aCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC05NCw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZpY2F0aW9uTGlz
dGVuZXJzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmlj
YXRpb25IYW5kbGVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9n
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJ
VFkpICYmIFBMQVRGT1JNKEdUSykKQEAgLTEwNCw1ICsxMDUsMyBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZvaWQgcGxhdGZvcm1SZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9OwotCi0jZW5kaWYg
Ly8gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKaW5kZXggOTZlOTk3YWFlMjhkMTI2Nzk0YTliZGZjOWFm
ZTNlNDliYmE2ZDUxYi4uYmQ3Yjc1YzRiODdmMzI0MjEwODQ5OWFmYmI0NmRmY2M1NDI0NDkyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogCkBA
IC0zNiwxNSArMzUsMTMgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlcjsKLXR5cGVk
ZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxhdGZvcm1UZXh0
TWFya2VyID0gaWQ7Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UK
IHR5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9y
bVRleHRNYXJrZXJSYW5nZTsKICNlbmRpZgogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OwotCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB7CiBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKQEAgLTU4LDggKzU1LDggQEAg
cHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNz
KCk7Ci0jaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oTUFDKQotICAgIFJl
dGFpblB0cjxQbGF0Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNpZiBQTEFURk9STShN
QUMpCisgICAgUmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXI7CiAjZWxzZQogICAgIFBsYXRmb3Jt
VGV4dE1hcmtlciBtX3RleHRNYXJrZXI7CiAjZW5kaWYKQEAgLTc5LDggKzc2LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKIAogcHJpdmF0ZToKLSNpZiBT
VVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPFBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyNpZiBQTEFURk9STShN
QUMpCisgICAgUmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXJSYW5nZTsKICNlbHNlCiAgICAgUGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UgbV90ZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTg5LDcg
Kzg2LDcgQEAgcHJpdmF0ZToKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0b1RleHRNYXJrZXIo
SlNPYmplY3RSZWYgb2JqZWN0KTsKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHRvVGV4
dE1hcmtlclJhbmdlKEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKLSNpZiAhU1VQUE9SVFNfQVhfVEVY
VE1BUktFUlMKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlcikgeyB9CiBp
bmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNv
bnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJikgeyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpIHsgfQpAQCAtMTAyLDUgKzk5LDMg
QEAgaW5saW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKCkgeyB9CiBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxz
ZTsgfQogaW5saW5lIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
TWFya2VyUmFuZ2U7IH0KICNlbmRpZgotCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dF9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
CmluZGV4IDJmZGNjMDBkMjFmY2ZiYzI1ZGViMjEwZGZlY2QzNDc2NTdmOGRmYjcuLjExZjNhNTE5
NGY5ZWIyMTdkMzM3YzU5MzAzZTNjZmU2ZmI2ZWU1OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0zMDcsNiArMzA3LDE1IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGluZGV4T2ZDaGlsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRl
eHQsIChkb3VibGUpdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGlsZChjaGlsZEVs
ZW1lbnQpKTsKIH0KIAorc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0
QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYgZWxlbWVudHMpCit7CisgICAgYXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5
KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIHNpemUgPSBlbGVt
ZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwg
ZWxlbWVudHNbaV0pLCAwKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJbmRleENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTMyNywyMCArMzM2LDE0IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9u
KTsKLSAgICAKKwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsK
ICAgICB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+ZWxlbWVudHNGb3JSYW5nZShsb2NhdGlvbiwg
bGVuZ3RoLCBlbGVtZW50cyk7Ci0gICAgCi0gICAgSlNWYWx1ZVJlZiBhcnJheVJlc3VsdCA9IEpT
T2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0UmVmIGFycmF5
T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsKLSAgICB1bnNp
Z25lZCBlbGVtZW50c1NpemUgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBr
ID0gMDsgayA8IGVsZW1lbnRzU2l6ZTsgKytrKQotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaywgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFr
ZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVtZW50c1trXSksIDApOwotICAg
IAotICAgIHJldHVybiBhcnJheVJlc3VsdDsKKworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNU
b09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYg
aW5jcmVhc2VUZXh0U2VsZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQpAQCAtNjE1LDMwICs2MTgsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgc3RyaW5nQXR0cmlidXRl
VmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNUb09iamVj
dEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4mIGVsZW1lbnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNWYWx1ZVJlZiBh
cnJheVJlc3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpT
T2JqZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0
LCAwKTsKLQotICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAgICAgSlNPYmpl
Y3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNb
aV0pLCAwKTsKLQotICAgIHJldHVybiBhcnJheVJlc3VsdDsKLX0KLQogc3RhdGljIEpTVmFsdWVS
ZWYgY29sdW1uSGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9BWEVs
ZW1lbnQodGhpc09iamVjdCktPmNvbHVtbkhlYWRlcnMoZWxlbWVudHMpOwotICAgIHJldHVybiBj
b252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzLCBleGNlcHRpb24p
OworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1l
bnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgcm93SGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gZWxlbWVudHM7CiAgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnJvd0hlYWRlcnMoZWxl
bWVudHMpOwotICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQs
IGVsZW1lbnRzLCBleGNlcHRpb24pOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVj
dEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVt
ZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKQEAgLTY1MCw3ICs2NDEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRBcnJheUF0
dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTTwogICAgIAogICAg
IFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0b0FYRWxlbWVu
dCh0aGlzT2JqZWN0KS0+dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUuZ2V0
KCksIGVsZW1lbnRzKTsKLSAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShj
b250ZXh0LCBlbGVtZW50cywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gY29udmVydEVsZW1lbnRz
VG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVm
IHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmlu
ZGV4IGNhMjI1NWM5ZWRlMDc1MjZmOTA1Mzk1NDhlMGI0NDE4YjM1YjVkMGMuLmQ3MjE5N2ZlYzBj
ZTc1ZjRlYWQ2NTM4MWIyNWE1OGYyNjBjNTBlY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE4ICszMiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fCi10eXBlZGVmIGlk
IFBsYXRmb3JtVUlFbGVtZW50OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQ
bGF0Zm9ybVVJRWxlbWVudDsKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNl
bGlmIFBMQVRGT1JNKFdJTikKICN1bmRlZiBfV0lOU09DS0FQSV8KICNkZWZpbmUgX1dJTlNPQ0tB
UElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKLQogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+Ci0KIHR5cGVkZWYg
Q09NUHRyPElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlmIEhBVkUoQUNDRVNT
SUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmgiCkBAIC01MywyMSArNDcsMjIgQEAgdHlwZWRlZiBBdGtPYmplY3Qq
IFBsYXRmb3JtVUlFbGVtZW50OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKICNl
bmRpZgogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKK3B1YmxpYzoKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5k
bGVyOwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5k
bGVyOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQpOwogI2VuZGlmCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQp
OwogI2VuZGlmCiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewotcHVibGljOgotICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwotICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwotICAgIH5BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWQgcGxhdGZv
cm1VSUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KKyNlbmRpZgog
CisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRmb3JtVUlF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKIAogICAgIHN0YXRp
YyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwg
Y29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwogCkBAIC0zMTgsMTAgKzMxMyw5IEBAIHB1
YmxpYzoKICAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdDsKICAgICAKICAgICBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtl
cnMoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqKTsKLSAgICAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYg
UExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9y
IGFuIGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlv
bnMoKTsKICAgICAKQEAgLTMzMiwxMSArMzI2LDE0IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6
CiAgICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygpOworCisjaWYgIVBMQVRGT1JNKENP
Q09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKKyNlbmRpZgogICAgIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9i
amVjdCB1c2VkIHRvIGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0Lgot
ICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworICAgIFJldGFp
blB0cjxpZD4gbV9lbGVtZW50OworICAgIFJldGFpblB0cjxpZD4gbV9ub3RpZmljYXRpb25IYW5k
bGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVn
aW5PYmplY3RNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4v
UGx1Z2luT2JqZWN0TWFjLm1tCmluZGV4IGE2NDU3YTA3NmIxYjkyMjJlYzE4MzYyZDRiYzk0Y2I0
NzJhM2EzY2MuLjBjOGZhNDAwM2E3ZGZiNWRmNWMzNDJmMTQyMmI3YmUzOTY4NjU1M2QgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmpl
Y3RNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Bs
dWdpbk9iamVjdE1hYy5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIENGVHlwZVJlZiBjcmVhdGVDb3Jl
QW5pbWF0aW9uTGF5ZXIoKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBjYUxheWVyID0gYWRvcHRO
UyhbW1Rlc3RQbHVnaW5MYXllciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNOdWxsICpudWxsVmFs
dWUgPSBbTlNOdWxsIG51bGxdOwotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9ucyA9IFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbFZhbHVlLCBAImJvdW5kcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJjb250ZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJjb250ZW50c1JlY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxsVmFsdWUsIEAib3BhY2l0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJwb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJzaGFkb3dDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJzdWJsYXllclRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJzdWJsYXllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxsVmFsdWUsIEAidHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAInpQb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07
CisgICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zID0gQHsKKyAgICAgICAgQCJhbmNob3JQb2ludCI6
IG51bGxWYWx1ZSwKKyAgICAgICAgQCJib3VuZHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29u
dGVudHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29udGVudHNSZWN0IjogbnVsbFZhbHVlLAor
ICAgICAgICBAIm9wYWNpdHkiOiBudWxsVmFsdWUsCisgICAgICAgIEAicG9zaXRpb24iOiBudWxs
VmFsdWUsCisgICAgICAgIEAic2hhZG93Q29sb3IiOiBudWxsVmFsdWUsCisgICAgICAgIEAic3Vi
bGF5ZXJUcmFuc2Zvcm0iOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJzIjogbnVsbFZh
bHVlLAorICAgICAgICBAInRyYW5zZm9ybSI6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJ6UG9zaXRp
b24iOiBudWxsVmFsdWUsCisgICAgfTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlv
bnMuCi0gICAgW2NhTGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdDphY3Rpb25zIGZvcktleTpAImFjdGlvbnMiXV07CisgICAgW2NhTGF5ZXIgc2V0U3R5bGU6
QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVkc0Rpc3BsYXlP
bkJvdW5kc0NoYW5nZTpZRVNdOwogCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2Uo
MCwgMCwgMjAwLCAxMDApXTsKQEAgLTc2LDcgKzc2LDcgQEAgQ0ZUeXBlUmVmIGNyZWF0ZUNvcmVB
bmltYXRpb25MYXllcigpCiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxheWVyIGxheWVy
XTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW3N1YmxheWVyIHNl
dFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0aW9ucyBmb3JLZXk6
QCJhY3Rpb25zIl1dOworICAgIFtzdWJsYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMiOiBhY3Rp
b25zIH1dOwogCiAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAw
Ljc1KTsKICAgICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5t
bQppbmRleCBjMzY4N2MxMDc0ZTA1NzExY2Y4Yjk3NDZiODM1ZTQ2ZjM4YmY5MGIzLi5kZTI5ZDU1
MTAyMDQ4NWU4ZDQ0YjZlNTZkYWYyMzM5NGIxMDg1NTBkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCkBAIC00OCw3
ICs0OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIoKQogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJr
ZXIoKSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVy
biBbcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOwogfQogCiBQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OnBs
YXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCBhNGU0MTg5NTUzNDg4ODQ0
YzRjZjhjMjNlMTRkZjg0NzdmYmYzODE5Li45NTFkZGRkMmU3YjM4NmNlNTZhOWYyYTZhOGU2MTJl
YzVmNGZlMjVlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtNDEsMjQgKzQxLDkgQEAKIAogdHlwZWRlZiB2b2lk
ICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5v
dGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKK0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVudCkKICAgICA6
IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0g
ICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQot
ICAgIDogbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFu
ZGxlcigwKQotCi17Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci0gICAgW21fZWxlbWVudCBy
ZWxlYXNlXTsKIH0KIAogQGludGVyZmFjZSBOU09iamVjdCAoVUlBY2Nlc3NpYmlsaXR5SGlkZGVu
KQpAQCAtNDYyLDkgKzQ0Nyw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogCiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAg
IGlkIHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2VyRm9yTWFya2Vy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQgZW5kVGV4dE1h
cmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIsIG5pbF07
CisgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JN
YXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIGVuZFRleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydFRl
eHRNYXJrZXIsIGVuZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9
IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKQEAg
LTQ3Miw3ICs0NTcsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TQogCiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1h
cmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHN0YXJ0UmFuZ2UsIGJvb2wg
Zm9yd2FyZCkKIHsKLSAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVs
bGluZ1RleHRNYXJrZXJSYW5nZTooaWQpc3RhcnRSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKSBmb3J3YXJkOmZvcndhcmRdOworICAgIGlkIG1pc3NwZWxsaW5nUmFuZ2UgPSBbbV9lbGVt
ZW50IG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlOnN0YXJ0UmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAtNTAzLDM0ICs0ODgsMzQg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlKCkKIAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0
aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFy
a2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0
TWFya2VycyA9IHJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIHJldHVybiBb
bV9lbGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKIH0KIAogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFy
a2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07
CisgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1h
cmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJr
ZXJzXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBz
dGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVT
XTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiB9CiAK
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAgICBpZCBvYmog
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOihpZCltYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwog
ICAgIGlmIChvYmopCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iaik7
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTMsMTkgKzUzOCwxOSBAQCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50
IHgsIGludCB5KQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7Ci0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2Vy
Rm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQg
cHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOnRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIocHJldmlvdXNNYXJrZXIpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0
TWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cisg
ICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjp0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKG5leHRNYXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlk
KW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJr
ZXJzID0gbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWYgKCF0
ZXh0TWFya2VycyB8fCAhW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3Nd
XSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SlNTdHJpbmcoKTsKICAgICByZXR1cm4gW1tt
X2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5n
UmVmXTsKQEAgLTY3MCw3ICs2NTUsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TgogewogICAg
IE5TQXJyYXkgKnRleHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkKLSAgICAg
ICAgdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpLCBuaWxdOworICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0
ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzOnRl
eHRNYXJrZXJzIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4dF1d
OwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5n
ZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29u
dHJvbGxlcklPUy5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xs
ZXJJT1MubQppbmRleCA2NTMzOWIzY2JlYjgzZWI1MjRmMThhZmVjYjBlMmNmMjJhMTlkM2RjLi45
NjVmYWY1OTk3YTMyMzhlMTMyOWI1NzI1OWJhOWM1ZDcyODJlNmVlIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm0KQEAgLTc2LDcgKzc2
LDcgQEAgLSAoTlNBcnJheSAqKW1hcmtlZFJhbmdlCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAoW3Jh
bmdlIHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pLCBuaWxdOworICAgIHJldHVy
biBAW0AoW3JhbmdlIHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pXTsKIH0KIAog
LSAodm9pZClpbnNlcnRUZXh0OihOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMGI4NjdhZGNiOTBj
MzEyMjQxNmRjYzI2NWYzODUzYjYxYjZkNDcxMy4uNzk0MDczOGEzMzkwZWIyNzBhNjA4YmZkMDU5
ZTE3MmFmNGI3OTA5MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlDb21tb25NYWMubW0KQEAgLTQ4LDE3ICs0OCwxNyBAQCAtIChKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKIH0KIAotTlNE
aWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNo
Q3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0
YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwg
SlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJs
ZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorTlNEaWN0aW9uYXJ5ICpzZWFy
Y2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9v
bCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFy
Y2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1t
ZWRpYXRlRGVzY2VuZGFudHNPbmx5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAg
ICAKICAgICBpZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1l
bnQoKSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OihpZClzdGFy
dEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsK
LSAgICAKKyAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnN0YXJ0RWxl
bWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdOworCiAg
ICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8g
QCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERp
cmVjdGlvbiJdOwotICAgIAorCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0
OkAocmVzdWx0c0xpbWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOwotICAgIAorCiAgICAg
aWYgKHNlYXJjaEtleSkgewogICAgICAgICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBuaWw7CiAg
ICAgICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgc2VhcmNoS2V5KSkgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tCmluZGV4IDlkN2ZmNmU5YmU2NDQ0NTM3YTlmZmE1YmE4NjNiZWM0Njdh
YWZiYTYuLmQxNjc4Mjc4ZDg0YjNkZWViYmM1NjJmYmNlNDA3YThhZDU0NTk1NDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIubW0KQEAgLTI5LDMzICsyOSwyMCBAQAogICovCiAKICNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgiCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKKyNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBO
U09iamVjdCAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBZGRpdGlvbnMpCiArICh2b2lk
KWFjY2Vzc2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdDsK
IEBlbmQKIAotQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0tIChK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0KLS0gKEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJldHVybiBhZG9wdChK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc2VsZikpOwot
fQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcgogCiAtIChpZClpbml0CkBAIC0xMzIsMjcgKzExOSwyMiBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBtYWtlVmFsdWVSZWZGb3JWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaWQgdmFsdWUpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VBcnJheVJlZkZv
ckFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICphcnJheSkKK3N0YXRpYyBKU09i
amVjdFJlZiBtYWtlQXJyYXlSZWZGb3JBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJh
eSAqYXJyYXkpCiB7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwogICAgIEpT
VmFsdWVSZWYgYXJndW1lbnRzW2NvdW50XTsKLQogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IGNvdW50OyBpKyspCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG1ha2VWYWx1ZVJlZkZvclZh
bHVlKGNvbnRleHQsIFthcnJheSBvYmplY3RBdEluZGV4OmldKTsKLQogICAgIHJldHVybiBKU09i
amVjdE1ha2VBcnJheShjb250ZXh0LCBjb3VudCwgYXJndW1lbnRzLCBudWxscHRyKTsKIH0KIAot
c3RhdGljIEpTVmFsdWVSZWYgbWFrZU9iamVjdFJlZkZvckRpY3Rpb25hcnkoSlNDb250ZXh0UmVm
IGNvbnRleHQsIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKK3N0YXRpYyBKU09iamVjdFJlZiBt
YWtlT2JqZWN0UmVmRm9yRGljdGlvbmFyeShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5KQogewogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTT2JqZWN0TWFr
ZShjb250ZXh0LCBudWxscHRyLCBudWxscHRyKTsKLQotICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0
ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIG9iaiwgQk9PTCAq
c3RvcCkKLSAgICB7Ci0gICAgICAgIGlmIChKU1ZhbHVlUmVmIHByb3BlcnR5VmFsdWUgPSBtYWtl
VmFsdWVSZWZGb3JWYWx1ZShjb250ZXh0LCBvYmopKQorICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0
ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIHZhbHVlLCBCT09M
KiBzdG9wKSB7CisgICAgICAgIGlmIChhdXRvIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFsdWVSZWZG
b3JWYWx1ZShjb250ZXh0LCB2YWx1ZSkpCiAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KGNvbnRleHQsIG9iamVjdCwgW2tleSBjcmVhdGVKU1N0cmluZ1JlZl0uZ2V0KCksIHByb3BlcnR5
VmFsdWUsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CiAgICAgfV07Ci0KICAg
ICByZXR1cm4gb2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KaW5kZXggMGVmZjkxNjk1MDY0NTg5ZmQ5
ZThlZmI1YzYzNTYxZGExOTk4MDVkNy4uMWJmY2FjN2ZiMzRjZmMwYTc1ZWIyMmEzMTJkYTQ2OTg5
YmVhMDU3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlck1hYy5tbQpAQCAtMjgsMTEgKzI4LDExIEBACiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKIAotI2lm
IFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShN
QUMpCiAKIC8vIE1BUks6IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyCiAKLUFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFy
a2VyKQorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGlk
IG1hcmtlcikKICAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIpCiB7CiB9CkBAIC00OCwxNyArNDgs
MTcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigp
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIG90aGVyKQogewotICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4
dE1hcmtlcigpIGlzRXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgcmV0dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CiB9CiAKLVBsYXRmb3JtVGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QgCitpZCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIG1f
dGV4dE1hcmtlci5nZXQoKTsKIH0KIAogLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZQogCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShpZCBtYXJr
ZXJSYW5nZSkKICAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQogewogfQpAQCAt
NzQsMTIgKzc0LDEyIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKCkKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90aGVyKQogewotICAgIHJl
dHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNFcXVhbDooX19i
cmlkZ2UgaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBb
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJr
ZXJSYW5nZSgpXTsKIH0KIAotUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAoraWQgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKIH0KIAotI2VuZGlmIC8vIFNV
UFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCmluZGV4IGNlNmI2MjMxZTMyZDVlOWYzZWQ4ZjVhN2I2MzQ3NzM0M2Y1
MDQxMGYuLjZiNWI1ZWZiZGI3ODMxZjA4YjA1YWYwNTYxODJjM2JjMzA2NGRjMWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NCwxMSArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkR1bXBS
ZW5kZXJUcmVlLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCi0jaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCisj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWUuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZy
YW1lLmg+CkBAIC0zNiw3ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5h
bC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgot
CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlPd25zQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUg
QCJBWE93bnMiCkBAIC04NiwyNiArODYsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKLSAg
ICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCitz
dGF0aWMgT3B0aW9uYWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbWFrZVZlY3RvckVsZW1lbnQo
Y29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGlkIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklY
TUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVk
L0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50
IHJldGFpbl07CisgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50JiBvdGhlcikKLSAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAgLCBt
X25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiwgaWQgZWxlbWVudCkKIHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CisgICAg
cmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoKQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudChpZCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiB7Ci0g
ICAgLy8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0
ZXN0LgotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBbbV9lbGVtZW50
IHJlbGVhc2VdOwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2
YWx1ZU9iamVjdCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCkBAIC0xNzksMTYgKzE3
MiwxMyBAQCBzdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQgYWNjZXNzaWJp
bGl0eU9iamVjdCkKICAgICByZXR1cm4gYXR0cmlidXRlc1N0cmluZzsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFy
cmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQogewot
ICAgIEpTVmFsdWVSZWYgYXJyYXlSZXN1bHQgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAw
LCAwLCAwKTsKLSAgICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCBhcnJheVJlc3VsdCwgMCk7Ci0gICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRz
LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQot
ICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaSwg
SlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLmdldEpTQ2xhc3MoKSwgbmV3IFQoZWxl
bWVudHNbaV0pKSwgMCk7Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAgYXV0byBhcnJh
eSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAg
IHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29u
dGV4dCwgYXJyYXksIGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS5nZXRKU0Ns
YXNzKCksIG5ldyBUKGVsZW1lbnRzW2ldKSksIG51bGxwdHIpOworICAgIHJldHVybiBhcnJheTsK
IH0KIAogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUsIE5TU3RyaW5nICp2YWx1ZSkKQEAgLTIwNSwx
NyArMTk1LDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUKICAgICByZXR1cm4gYWRvcHQoSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7Ci0gICAgTlNV
SW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShjb3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAg
ICAgICAgdi5hcHBlbmQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pOwotICAgIHJldHVybiB2Owot
fQotCiBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAg
TlNNdXRhYmxlU3RyaW5nKiBhbGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJp
bmddOwpAQCAtMzE1LDcgKzI5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0
TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5r
ZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJy
YXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihsaW5rZWRFbGVtZW50cyk7CisgICAg
ZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua2Vk
RWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzIzLDcgKzMw
Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0
b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3Rv
ciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua0Vs
ZW1lbnRzKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PihsaW5rRWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApA
QCAtMzMxLDcgKzMxMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRy
ZW4oVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50CiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0
ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9y
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiB9CiAKQEAgLTMzOSw3ICszMTgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pgog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKLSAg
ICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PihjaGlsZHJlbik7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4oY2hpbGRyZW4pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
IH0KIApAQCAtNTI4LDggKzUwNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKIHsKLSAg
ICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9lbGVtZW50KTsK
LSAgICByZXR1cm4gW2F0dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIHJldHVybiBb
YXR0cmlidXRlc09mRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpIGNyZWF0ZUpTU3RyaW5nUmVmXTsK
IH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTU0OCw3ICs1MjYs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoVmVjdG9yPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50cwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0g
Y29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7Cisg
ICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1
ZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC01NTcsNyArNTM1LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiYgZWxlbWUKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNv
bnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAg
ICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUp
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTY2LDcgKzU0NCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUsCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
aWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJp
bmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnRO
U0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBl
bGVtZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNjQzLDcgKzYyMSw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0
cmlidXRlTmFtZXMoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJvbGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3Ry
aW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAi
QVhSb2xlIiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjUz
LDcgKzYzMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdWJyb2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0
cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50
KTsKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRl
XSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZShAIkFYU3Vicm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApA
QCAtNjYzLDcgKzY0MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlw
dGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlw
dGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAg
ICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2NyaXB0aW9u
Iiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjczLDcgKzY1
MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlRGVzY3JpcHRpb24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUi
XSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3Jp
cHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhB
UklBUm9sZSJdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbY29tcHV0ZWRSb2xlU3Ry
aW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
CkBAIC02ODMsNyArNjYxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0
dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25P
ZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVRpdGxlQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0
ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogCkBAIC02OTMsNyArNjcxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsK
ICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24i
LCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MDMsNyAr
NjgxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRlc2NyaXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRy
aWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29u
Y2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MTMsNyArNjkxLDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkg
Y29uc3QKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdWYWx1ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVz
Y3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9l
bGVtZW50LmdldCgpKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC03MjQsNyArNzAyLDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlw
dGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExh
bmd1YWdlIl0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9m
VmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdl
Il0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5k
VmFsdWUoQCJBWExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIApAQCAtNzM0LDcgKzcxMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhl
bHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24pOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEwMjYsNyArMTAwNCw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMo
KSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5k
ZXgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9y
SW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDppbmRleF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1
ZSBpbnRWYWx1ZV07IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEwMzcsNyArMTAx
NSw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4
KQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdl
Rm9yTGluZShpbnQgbGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltO
U051bWJlciBudW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1cm4gW05TU3Ry
aW5nRnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExNjYsNyArMTE0NCw3IEBAIEpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRS
ZWYgY29udGV4dCwKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBz
ZWFyY2hUZXh0UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIHNlYXJj
aFN0cmluZ3MsIHN0YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdpdGhDcml0ZXJp
YSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRW
ZWN0b3JUb09iamVjdEFycmF5PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KGNvbnRleHQs
IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4ocmVz
dWx0KSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheShjb250ZXh0
LCBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KHJlc3VsdCkpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNzcs
NyArMTE1NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0IGRlZmluZWQg
aW4gQXBwS2l0Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJy
YXkqIGNvbHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBjb2x1bW5IZWFk
ZXJzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pihjb2x1bW5IZWFkZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9IG1h
a2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uSGVhZGVyc0FycmF5KTsKICAg
ICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0b3IpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTExODgsNyArMTE2Niw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZS
b3dIZWFkZXJzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5
KiByb3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gcm93SGVhZGVyc1ZlY3RvciA9
IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4ocm93SGVhZGVy
c0FycmF5KTsKKyAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9u
T2ZFbGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCkBAIC0xMTk5LDcgKzExNzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJp
YnV0ZV07Ci0gICAgYXV0byBjb2x1bW5zVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihjb2x1bW5zQXJyYXkpOworICAgIGF1dG8gY29sdW1uc1Zl
Y3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uc0FycmF5KTsK
ICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEyMTAsNyArMTE4OCw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dz
KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzQXJy
YXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlSb3dzQXR0cmlidXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRv
VmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHJvd3NBcnJheSk7CisgICAgYXV0byByb3dz
VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihyb3dzQXJyYXkpOwog
ICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTIyMSw3ICsxMTk5LDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVD
ZWxscygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2Vs
bHNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhWaXNp
YmxlQ2VsbHMiXTsKLSAgICBhdXRvIGNlbGxzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKKyAgICBhdXRvIGNlbGxzVmVj
dG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKICAg
ICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzAyLDcgKzEyODAsNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiAK
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKLSAgICBOU0FycmF5ICpj
b2xSb3dBcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10s
IG5pbF07CisgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBAW0AoY29sKSwgQChyb3cpXTsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRl
cjpjb2xSb3dBcnJheV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKQEAgLTE0Mjgs
NyArMTQwNiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQogdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxh
dGZvcm1VSUVsZW1lbnQoKV07CisgICAgTlNBcnJheSogYXJyYXkgPSBAW2VsZW1lbnQtPnBsYXRm
b3JtVUlFbGVtZW50KCldOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFy
cmF5IGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
XTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTQ0MCw3ICsxNDE4LDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQucGxhdGZvcm1VSUVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZENoaWxkcmVuQXR0cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdDplbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIE5TQXJyYXkgKmFy
cmF5ID0gQFtlbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChzZWxlY3RlZENo
aWxkcmVuKQogICAgICAgICBhcnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5QnlBZGRpbmdP
YmplY3RzRnJvbUFycmF5OmFycmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5U2V0
VmFsdWU6YXJyYXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5B
dHRyaWJ1dGVdOwpAQCAtMTY2Niw4ICsxNjQ0LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZv
clBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5
cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNjc3LDEwICsxNjU1LDEwIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcGFy
YW1ldGVycyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotICAgIFtwYXJhbWV0
ZXJzIHNldE9iamVjdDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCkgZm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJhbWV0ZXJzIHNl
dE9iamVjdDpzdGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0
VGV4dE1hcmtlclJhbmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJlY3Rpb24iXTsK
ICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYTWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpwYXJh
bWV0ZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2OTAsNyArMTY2OCw3IEBAIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChBCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQg
dGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MDAsNyArMTY3
OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmli
dXRlXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzQxLDcgKzE3MTksNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIGludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihf
X2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgTlNOdW1i
ZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9y
bVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNzUxLDcgKzE3MjksNyBAQCBp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5n
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3Ry
aW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0
ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0
cmlidXRlZFN0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0x
NzY2LDcgKzE3NDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZQogaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
bWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBp
bmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJ
bmRleEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbaW5k
ZXhOdW1iZXIgaW50VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAg
LTE3NzcsNyArMTc1NSw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZvclBhcmFtZXRl
cjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3ODYsNyAr
MTc2NCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiB2YWxp
ZE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0
TWFya2VySXNWYWxpZCIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlkIiBmb3JQ
YXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBb
dmFsaWROdW1iZXIgYm9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAg
LTE3OTYsOCArMTc3NCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFy
a2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYp
cHJldmlvdXNNYXJrZXIpOworICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODA2LDgg
KzE3ODQsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eQogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOworICAgIGlk
IG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihu
ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xODE2LDcgKzE3OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5n
ZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0U3RyaW5nID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZv
clBhcmFtZXRlcjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAg
cmV0dXJuIFt0ZXh0U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCkBAIC0xODQ2LDcgKzE4MjQsNyBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIAogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2Up
CiB7Ci0gICAgaWQgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjoo
X19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAg
IGlkIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhB
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6bWFya2VyUmFu
Z2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVybiBjcmVhdGVKU1N0cmlu
Z1JlZihzdHJpbmcpOwogfQogCkBAIC0xODU0LDkgKzE4MzIsOSBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYQogewogICAgIGlkIHBhcmFtZXRlciA9IG5pbDsKICAgICBpZiAoaW5jbHVkZVNwZWxs
Q2hlY2spCi0gICAgICAgIHBhcmFtZXRlciA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzQW5kS2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aW5jbHVkZVNwZWxsQ2hlY2td
LCBAIkFYU3BlbGxDaGVjayIsIChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKSwgQCJBWFRleHRNYXJrZXJSYW5nZSIsIG5pbF07CisgICAgICAgIHBhcmFt
ZXRlciA9IEB7IEAiQVhTcGVsbENoZWNrIjogaW5jbHVkZVNwZWxsQ2hlY2sgPyBAWUVTIDogQE5P
LCBAIkFYVGV4dE1hcmtlclJhbmdlIjogbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCkgfTsKICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlciA9IChfX2JyaWRnZSBpZCltYXJr
ZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVyID0g
bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgc3RyaW5nID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07
CiAgICAgcmV0dXJuIGNyZWF0ZUpTU3RyaW5nUmVmKHN0cmluZyk7CiB9CkBAIC0xODY0LDkgKzE4
NDIsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIGVuZE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0Fy
cmF5KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9fYnJpZGdlIGlk
KXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlkKWVuZE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJheSogdGV4dE1hcmtlcnMg
PSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRl
eHRNYXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdl
KTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFu
Z2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE4NzUsOCArMTg1Myw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBCiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigo
X19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xODg1LDggKzE4NjMsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZwogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg5Niw3ICsx
ODc0LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW4KIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtl
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTA2LDcgKzE4ODQsNyBAQCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJr
ZXJGb3JCb3VuZHMoaW50IHgsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
aWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3
aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTE2LDcgKzE4OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgs
IGludCB5KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtl
ckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtl
UG9pbnQoeCwgeSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJp
ZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTkyNSw3ICsxOTAzLDcgQEAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBp
bnQgeSkKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBt
YXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdWlFbGVtZW50
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CisgICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjpt
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCh1aUVsZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAg
LTE5MzYsNyArMTkxNCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0Niw3ICsxOTI0LDcgQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtl
cigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2Vy
Il07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRN
YXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE5NTUsNyArMTkzMyw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdlIGlkKW1hcmtlclJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5U2V0VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkg
Zm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmli
dXRlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xOTY0LDggKzE5NDIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNl
bGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcgogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJh
bmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlZnRXb3Jk
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOwor
ICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTc0LDggKzE5NTIs
OCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0
V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTg0LDggKzE5NjIsOCBAQCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRN
YXJrZXJSYW5nZUZvcgogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5
cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIocHJl
dmlvdXNUZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xOTk0LDggKzE5NzIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJG
b3JUZQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4
dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
dGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0
VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhO
ZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdl
IGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtlcik7Cisg
ICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIobmV4dFRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMDQsOCArMTk4Miw4IEBAIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJr
ZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRn
ZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTIwMTQsOCArMTk5Miw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdl
Rm9yCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgcHJldmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5
cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNQYXJhZ3Jh
cGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cihwcmV2aW91c1RleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMjQsOCArMjAwMiw4IEBAIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRU
ZXh0TWFya2VyCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0
VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1hcmtlcik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjAz
NCw4ICsyMDEyLDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXgKIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0
ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0NCw4ICsyMDIyLDggQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5j
ZVRleHRNYXJrZXJSYW5nZUZvclQKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91
c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
UHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKHByZXZpb3VzVGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1NCw4ICsyMDMyLDggQEAg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckYKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENG
VHlwZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5leHRUZXh0TWFy
a2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMGI3
NDQ0OTUyMWMwNjI4ZWE2NzY1YjQzZDBmYmM2N2VjMzYzZGIyZS4uOTkwNmE5ZjdjZjMzODk0ZDNl
MTVlMzlkMmFlMTA2NjdhZTlkYjE3NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQpAQCAtOTIsOSArOTIsOSBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8Z2V0b3B0Lmg+
CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFz
Lmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTE4MCw3ICsxMTgwLDcgQEAg
c3RhdGljIHZvaWQgYWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29uc3QgY2hhciog
ZXhlY3V0YWJsZVBhdGgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNTdHJp
bmcgKnB3ZCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZXhlY3V0YWJsZVBhdGhd
IHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07Ci0gICAgW1dlYlBsdWdpbkRhdGFi
YXNlIHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
cHdkXV07CisgICAgW1dlYlBsdWdpbkRhdGFiYXNlIHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRo
czpAW3B3ZF1dOwogICAgIFtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0YWJhc2VdIHJlZnJl
c2hdOwogI2VuZGlmCiB9CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlvbnMmIG9w
dGlvbgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRl
bnRzIG9mIHRoZSBnZW5lcmFsIHBhc3RlYm9hcmQKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1N0cmlu
Z1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3Rl
Ym9hcmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNl
bmRpZgogCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5j
X3N0cigpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVBhc3RlYm9hcmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLm1tCmluZGV4IDExOWMzZGI5ZDM0ZmI2NjY3NzE2YzA5NTI2ZjhjOGQ5ZjI0
NTYyYjUuLmY5MzFjNmFmNTEzNDE0NDIzNGYwYjY3OWU1NDg3YjlmOGVmMGM0ZTkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5t
bQpAQCAtODYsNyArODYsNyBAQCArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiAvLyBv
ZiB0aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3VuZAogLSAoTlNJ
bnRlZ2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiB7
Ci0gICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
dHlwZV0gb3duZXI6bmV3T3duZXJdOworICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6QFt0
eXBlXSBvd25lcjpuZXdPd25lcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggZGM5Mjg3ODE3YWUyYWUz
OWU3NmI1NmJmYzZjNjNhZTExYzVkNDI5NS4uMzZhNDA0YjA1OWE0NmZjYmY2YWUyZmQ3MWI3MzY3
ODM1ZDMzOWI5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKWJlZ2luRHJhZ1dp
dGhGaWxlczooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2VydChbanNGaWxl
UGF0aHMgaXNLaW5kT2ZDbGFzczpbV2ViU2NyaXB0T2JqZWN0IGNsYXNzXV0pOwogCiAgICAgTlNQ
YXN0ZWJvYXJkICpwYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFt
ZV07Ci0gICAgW3Bib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5T
RmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbcGJvYXJkIGRlY2xhcmVUeXBl
czpAW05TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKIAogICAgIE5TVVJMICpjdXJy
ZW50VGVzdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltbbWFpbkZyYW1lIHdlYlZpZXddIG1h
aW5GcmFtZVVSTF1dOwogCkBAIC0xNDkzLDggKzE0OTMsOCBAQCAtICh2b2lkKXNlbnRUb3VjaEV2
ZW50T2ZUeXBlOihXZWJFdmVudFR5cGUpdHlwZQogCiAgICAgZm9yIChTeW50aGV0aWNUb3VjaCAq
Y3VyclRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAgICAgW3RvdWNoTG9jYXRpb25zIGFkZE9iamVj
dDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmN1cnJUb3VjaC5sb2NhdGlvbl1dOwotICAgICAg
ICBbdG91Y2hJZGVudGlmaWVycyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25l
ZEludDpjdXJyVG91Y2guaWRlbnRpZmllcl1dOwotICAgICAgICBbdG91Y2hQaGFzZXMgYWRkT2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y3VyclRvdWNoLnBoYXNlXV07Cisg
ICAgICAgIFt0b3VjaElkZW50aWZpZXJzIGFkZE9iamVjdDpAKGN1cnJUb3VjaC5pZGVudGlmaWVy
KV07CisgICAgICAgIFt0b3VjaFBoYXNlcyBhZGRPYmplY3Q6QChjdXJyVG91Y2gucGhhc2UpXTsK
IAogICAgICAgICBpZiAoKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VFbmRlZCkgfHwg
KGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpKQogICAgICAgICAgICAg
Y29udGludWU7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJO
b3RpZmljYXRpb25Qcm92aWRlci5tbQppbmRleCBkOWY1MGQzMDc2NTFjYTI2YzQ1YjQ3MzIwNTYx
NzlkM2NjZGQxNzcyLi4yNDI4NGYwZTA2NzljODM1ZmFlNTFhOTc0ZWQ1NGUyMWY1MmQ4NjQ3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIubW0KQEAgLTc1LDcgKzc1LDcgQEAgLSAodm9pZCljYW5jZWxOb3RpZmljYXRp
b246KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgIHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEID0gW25vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF07CiAgICAgQVNTRVJUKF9ub3Rp
ZmljYXRpb25zLmNvbnRhaW5zKG5vdGlmaWNhdGlvbklEKSk7CiAKLSAgICBbKF9fYnJpZGdlIFdl
YlZpZXcgKilfbm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmlj
YXRpb25zRGlkQ2xvc2U6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoVW5zaWduZWRMb25nTG9uZzpub3RpZmljYXRpb25JRF1dXTsKKyAgICBbKF9fYnJpZGdlIFdl
YlZpZXcgKilfbm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmlj
YXRpb25zRGlkQ2xvc2U6QFtbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6bm90
aWZpY2F0aW9uSURdXV07CiB9CiAKIC0gKHZvaWQpbm90aWZpY2F0aW9uRGVzdHJveWVkOihXZWJO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9PYmpDQ29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakND
b250cm9sbGVyLm0KaW5kZXggMGIxMjFlOTAxYmE0NTFmZDk3MWI2NDExOWY0MDJkNzZiODUxMGY2
Zi4uYzFhMTBhN2I3NTM2MTBiYzI4YmM4ZjdhY2UyOTEyMWU2NDU2MmEyZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KQEAgLTE0NiwyNSArMTQ2LDIwIEBAIC0g
KGlkKW9iamVjdE9mQ2xhc3M6KE5TU3RyaW5nICopYUNsYXNzCiAgICAgaWYgKFthQ2xhc3MgaXNF
cXVhbFRvU3RyaW5nOkAiTlNDRkJvb2xlYW4iXSkKICAgICAgICAgcmV0dXJuIEBZRVM7CiAgICAg
aWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNDRk51bWJlciJdKQotICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgIHJldHVybiBAKDEpOwogICAg
IGlmIChbYUNsYXNzIGlzRXF1YWxUb1N0cmluZzpAIk5TQ0ZTdHJpbmciXSkKICAgICAgICAgcmV0
dXJuIEAiIjsKICAgICBpZiAoW2FDbGFzcyBpc0VxdWFsVG9TdHJpbmc6QCJXZWJTY3JpcHRPYmpl
Y3QiXSkKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3Ry
aW5nOkAiTlNBcnJheSJdKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAg
ICByZXR1cm4gQFtdOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAoTlNBcnJheSAqKWFycmF5
T2ZTdHJpbmcKIHsKLSAgICBOU1N0cmluZyAqc3RyaW5nc1szXTsKLSAgICBzdHJpbmdzWzBdID0g
QCJvbmUiOwotICAgIHN0cmluZ3NbMV0gPSBAInR3byI7Ci0gICAgc3RyaW5nc1syXSA9IEAidGhy
ZWUiOwotICAgIE5TQXJyYXkgKmFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdHJp
bmdzIGNvdW50OjNdOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gQFsgQCJvbmUiLCBA
InR3byIsIEAidGhyZWUiIF07CiB9CiAKIC0gKEJPT0wpaWRlbnRpdHlJc0VxdWFsOihXZWJTY3Jp
cHRPYmplY3QgKilhIDooV2ViU2NyaXB0T2JqZWN0ICopYgpAQCAtMjE3LDkgKzIxMiwxMSBAQCAt
IChCT09MKXRlc3RXcmFwcGVyUm91bmRUcmlwcGluZzooV2ViU2NyaXB0T2JqZWN0ICopd2ViU2Ny
aXB0T2JqZWN0CiAgICAgaWYgKFtbd2ViU2NyaXB0T2JqZWN0IGV2YWx1YXRlV2ViU2NyaXB0OkAi
KHsgfSkiXSBjbGFzc10gIT0gW3dlYlNjcmlwdE9iamVjdCBjbGFzc10pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIFt3ZWJTY3JpcHRPYmplY3Qgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6NjY2XSBmb3JLZXk6QCJrZXkiXTsKLSAgICBpZiAoIVtbd2ViU2NyaXB0T2JqZWN0
IHZhbHVlRm9yS2V5OkAia2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fAot
ICAgICAgICAhW1t3ZWJTY3JpcHRPYmplY3QgdmFsdWVGb3JLZXk6QCJrZXkiXSBpc0VxdWFsVG9O
dW1iZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6NjY2XV0pCisgICAgW3dlYlNjcmlwdE9iamVj
dCBzZXRWYWx1ZTpAKDY2NikgZm9yS2V5OkAia2V5Il07CisgICAgaWQgdmFsdWUgPSBbd2ViU2Ny
aXB0T2JqZWN0IHZhbHVlRm9yS2V5OkAia2V5Il07CisgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZD
bGFzczpOU051bWJlci5jbGFzc10pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVt2
YWx1ZSBpc0VxdWFsVG9OdW1iZXI6QCg2NjYpXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgW3dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6QCJrZXkiXTsKQEAgLTI3Miw3
ICsyNjksNyBAQCAtICh2b2lkKXN0b3JlV2ViU2NyaXB0T2JqZWN0OihXZWJTY3JpcHRPYmplY3Qg
Kil3ZWJTY3JpcHRPYmplY3QKIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheQogewotICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKXRl
c3RBcnJheU9mT2JqZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bQppbmRleCAwMDY1OTU2YzgxZGQ3MTM1ZGUwMjdmNDlhMWY1M2JlYzY4MzYwNzJhLi45MzEyZDhi
OGE5NzZmYTVhMmIxNGRhYTRlMzM2MDRlNDI0YmEwNTMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTczLDE5ICsxNzMsMTYgQEAgdm9pZCBUZXN0UnVu
bmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogICAg
IFtvcmlnaW4gcmVsZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0Nv
bnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKK3N0YXRpYyBKU09iamVjdFJlZiBv
cmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpvcmlnaW5zKQog
ewotICAgIE5TVUludGVnZXIgY291bnQgPSBbb3JpZ2lucyBjb3VudF07Ci0KLSAgICBKU1ZhbHVl
UmVmIGFycmF5UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgMCwgMCk7Ci0g
ICAgSlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJyYXlS
ZXN1bHQsIDApOworICAgIGF1dG8gY291bnQgPSBbb3JpZ2lucyBjb3VudF07CisgICAgYXV0byBh
cnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOwog
ICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgTlNT
dHJpbmcgKm9yaWdpbiA9IFtbb3JpZ2lucyBvYmplY3RBdEluZGV4OmldIGRhdGFiYXNlSWRlbnRp
Zmllcl07CiAgICAgICAgIGF1dG8gb3JpZ2luSlMgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpb3JpZ2luKSk7Ci0gICAgICAgIEpTT2JqZWN0
U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBKU1ZhbHVlTWFrZVN0cmlu
Zyhjb250ZXh0LCBvcmlnaW5KUy5nZXQoKSksIDApOworICAgICAgICBKU09iamVjdFNldFByb3Bl
cnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwg
b3JpZ2luSlMuZ2V0KCkpLCAwKTsKICAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7Cisg
ICAgcmV0dXJuIGFycmF5OwogfQogCiBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRo
QXBwbGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tCmluZGV4IDFjYmJkNzFkNGFj
MWJhYWU3MWI0ZjljNDc1Y2FiMjE3YmEyM2MyNDUuLjM1ZWFlOGYwNTNkODc5YWJhNTcxZmI5YjM5
ZDAzNGYyZDg2ODRjNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0
SW5wdXRDb250cm9sbGVyTWFjLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJ
bnB1dENvbnRyb2xsZXJNYWMubQpAQCAtMzg3LDcgKzM4Nyw3IEBAIC0gKE5TQXJyYXkgKiltYXJr
ZWRSYW5nZQogCiAgICAgaWYgKHRleHRJbnB1dCkgewogICAgICAgICBOU1JhbmdlIHJhbmdlID0g
W3RleHRJbnB1dCBtYXJrZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRpb25d
LCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07Cisg
ICAgICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwogICAg
IH0KIAogICAgIHJldHVybiBuaWw7CkBAIC0zOTksNyArMzk5LDcgQEAgLSAoTlNBcnJheSAqKXNl
bGVjdGVkUmFuZ2UKIAogICAgIGlmICh0ZXh0SW5wdXQpIHsKICAgICAgICAgTlNSYW5nZSByYW5n
ZSA9IFt0ZXh0SW5wdXQgc2VsZWN0ZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9j
YXRpb25dLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5p
bF07CisgICAgICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCld
OwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CkBAIC00MTUsMTIgKzQxNSw3IEBAIC0gKE5TQXJy
YXkgKilmaXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVu
Z3RoCiAgICAgICAgICAgICByZWN0Lm9yaWdpbiA9IFtbd2ViVmlldyB3aW5kb3ddIGNvbnZlcnRT
Y3JlZW5Ub0Jhc2U6cmVjdC5vcmlnaW5dOwogICAgICAgICAgICAgcmVjdCA9IFt3ZWJWaWV3IGNv
bnZlcnRSZWN0OnJlY3QgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6cmVjdC5vcmlnaW4ueF0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OnJlY3Qub3JpZ2luLnldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhG
bG9hdDpyZWN0LnNpemUud2lkdGhdLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhG
bG9hdDpyZWN0LnNpemUuaGVpZ2h0XSwKLSAgICAgICAgICAgIG5pbF07CisgICAgICAgIHJldHVy
biBAWyBAKHJlY3Qub3JpZ2luLngpLCBAKHJlY3Qub3JpZ2luLnkpLCBAKHJlY3Quc2l6ZS53aWR0
aCksIEAocmVjdC5zaXplLmhlaWdodCkgXTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpAQCAt
NDg0LDcgKzQ3OSw3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVkU3Ry
aW5nV2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nCiAgICAgaWYgKCFzdWJTdHJp
bmdXaXRoQWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1RleHRBbHRl
cm5hdGl2ZXMqIGFsdGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9j
XSBpbml0V2l0aFByaW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0
aXZlU3RyaW5nczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVs
ZWFzZV07CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVjdCA9IFtbW05T
VGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dp
dGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6QFthbHRlcm5hdGl2ZV1dIGF1dG9yZWxl
YXNlXTsKICAgICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC01MzgsNyArNTMzLDcgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkg
KilldmVudEFycmF5IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGUKIAogICAgIFttb2Rp
ZmllcnMgcmVsZWFzZV07CiAgICAgCi0gICAgaWQgcmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxl
ciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3RzOmlucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbSwgbmlsXV07CisgICAg
aWQgcmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2Fs
bCIgd2l0aEFyZ3VtZW50czpAW2lucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbV1dOwogICAg
IGlmICghW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJvb2xWYWx1ZSldIHx8
ICFbcmVzdWx0IGJvb2xWYWx1ZV0pIHsKICAgICAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgW3NlbmRlciBkb0NvbW1hbmRCeVNlbGVjdG9y
OkBzZWxlY3Rvcihub29wOildOyAvLyBBcHBLaXQgc2VuZHMgbm9vcDogaWYgdGhlIGltZSBkb2Vz
IG5vdCBoYW5kbGUgYW4gZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlT
Y3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDBlZWFhMDhjYTIyM2JlNDk2Njc2MDRkOWU5ZjY1
MTlkYWZlN2MyYzYuLmVlMzIzNTkyMTUxM2MzZTllMGExMTVjZDBhM2NmOTBjZjZlNzI3NDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bQpAQCAtMTY0LDcgKzE2NCw3IEBAIE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6cGxhdGZvcm1VbmRvTWFuYWdlcigpIGNvbnN0CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7Ci0gICAgW3Bhc3RlYm9hcmQg
ZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1Bhc3RlYm9hcmRUeXBlU3Ry
aW5nXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVi
b2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnRl
eHQtPnN0cmluZygpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2lu
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2lu
LmNwcAppbmRleCA3OTdjNzBkYzRhNzMzMGQxNzAzYjc0MThmZWM4M2UzZDcxZmZhODAxLi5iNzM4
NDBlZTA1MGVhOWI5NjM3MDBlMjZlMzJlMzQ5NDY4OGU1Njk0IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC01
OCwxNSArNTgsNiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCiB7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCYgb3RoZXIpCi0gICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotewotfQotCi1BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci19Ci0KIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBvdGhlckVsZW1lbnQpCiB7CiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlQ29tcGFyYWJsZT4gY29t
cGFyYWJsZSA9IGNvbXBhcmFibGVPYmplY3QobV9lbGVtZW50LmdldCgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBi
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQpp
bmRleCA2MjlkMWRmY2YyMzdiN2U2ZDk0OGU1YWQyNzBjNmViMTU5MWZjNGE5Li43YTFkM2Y3NjEx
NTg3NDAyYjBkMTRhZDc2NGZiZGRlODNlMzg3MTYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0yNDIsMTIg
KzI0MiwxMCBAQCAtICh2b2lkKXNldFJlc3VsdHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJl
c3VsdHNPYmplY3QgaW5Db250ZXh0OihKU0NvbnRleHRSZQogICAgICAgICAgICAgICAgIGF1dG8g
ZGV0YWlsc09iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBkZXRhaWxzVmFsdWUsIG51
bGxwdHIpOwogICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09iamVjdFByb3BlcnRpZXMgPSBK
U09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIGRldGFpbHNPYmplY3QpOwogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGRldGFpbEluZGV4ID0gMDsgZGV0YWlsSW5kZXggPCBKU1By
b3BlcnR5TmFtZUFycmF5R2V0Q291bnQoZGV0YWlsc09iamVjdFByb3BlcnRpZXMpOyArK2RldGFp
bEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgICAgICAgICAgYXV0
byBkZXRhaWxPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9w
ZXJ0eUF0SW5kZXgoY29udGV4dCwgZGV0YWlsc09iamVjdCwgZGV0YWlsSW5kZXgsIG51bGxwdHIp
LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgbG9uZyBmcm9tID0gbHJvdW5kbChKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBkZXRhaWxP
YmplY3QsIGZyb21Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGxvbmcgdG8gPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGRldGFpbE9iamVjdCwgdG9Qcm9wZXJ0eU5h
bWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRh
aWwgc2V0T2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIHRv
IC0gZnJvbSldIGZvcktleTpOU0dyYW1tYXJSYW5nZV07Ci0gICAgICAgICAgICAgICAgICAgIFtk
ZXRhaWxzIGFkZE9iamVjdDpkZXRhaWwuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICBbZGV0
YWlscyBhZGRPYmplY3Q6QHsgTlNHcmFtbWFyUmFuZ2U6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
Ok5TTWFrZVJhbmdlKGZyb20sIHRvIC0gZnJvbSldIH1dOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxzT2JqZWN0UHJv
cGVydGllcyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uLm1tCmluZGV4IDQyMzczYzQ3YjY1YzdlZjUwZDg0YjQ5YjdiMGQ2NzNmN2M2MjQ0M2EuLjk5
MjU4ZDVjZDI1YTdjNTA2NzJjMTQ2MmE0MzdlNjg5NGQxNjVhNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVu
dFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJL
aXQvX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZE5v
dGlmaWNhdGlvbjsKQEAgLTU4LDE1ICs1OSw2IEBAIHN0cnVjdCBOb3RpZmljYXRpb24gewogICAg
IH0KIH07CiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1ZlY3RvcihOU0FycmF5PE5TU3RyaW5n
ICo+ICphcnJheSkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnN0
cmluZyBpbiBhcnJheSkKLSAgICAgICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIHJldHVy
biB2ZWN0b3I7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25M
aXN0Owogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gbm90aWZpY2F0aW9uVVJMOwogc3RhdGljIFJl
dGFpblB0cjxOU1N0cmluZz4gbm90aWZpY2F0aW9uSWRlbnRpZmllcjsKQEAgLTg4LDcgKzgwLDcg
QEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBVUkw6KE5TVVJMICopdXJs
IGNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXIKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVu
dGlmaWVyIHBlcmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uICopYWN0aW9u
IGZvclVSTDooTlNVUkwgKil1cmwKIHsKLSAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlk
ZW50aWZpZXIsIHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0
aW9uLmJsb2NrZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIHRvVmVjdG9yKGFjdGlvbi5u
b3RpZmljYXRpb25zKSB9KTsKKyAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50aWZp
ZXIsIHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9uLmJs
b2NrZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIG1ha2VWZWN0b3I8U3RyaW5nPihhY3Rp
b24ubm90aWZpY2F0aW9ucykgfSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVt
ZVRhc2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBkYjAwODg3N2U3NTdjYTYyNWFiN2U3
MjdmNWE5MDRlYmFjYTdkYWRlLi42OGJlODFiMWI5MzUzY2IwMTFlMTY4YzFkYzRjYTg0ODllZTg5
NjhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlhbGl6ZUluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmREb21haW5zOl4o
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5ICpkb21haW5z
VG9Db21wYXJlID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpAIjEyNy4wLjAuMSIsIEAiYXBw
bGUuY29tIiwgQCJiYXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxo
b3N0IiwgQCJ0ZXN0ZG9tYWluMSIsICBAIndlYmtpdC5vcmciLCBuaWxdOworICAgICAgICBOU0Fy
cmF5ICpkb21haW5zVG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJi
YXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0
ZG9tYWluMSIsICBAIndlYmtpdC5vcmciXTsKIAogICAgICAgICBOU0FycmF5ICpzb3J0ZWREb21h
aW5zID0gW2RvbWFpbnMgc29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOkBzZWxlY3RvcihjYXNlSW5z
ZW5zaXRpdmVDb21wYXJlOildOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KaW5kZXggM2EyZmM5MGYwYzJiY2VmZDEzNzllNjE4
YTgwZWE3NTdlNjU5NGI5NS4uOTg0ODlmMGI4NjExZWVhMDA1OGJlNTkwNGMyNTZiNzFiNmM4Zjgy
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0
ZUltYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVJbWFnZS5tbQpAQCAtMzksMTMgKzM5LDEzIEBACiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3
cml0ZUltYWdlRGF0YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRhICpkYXRhKQog
ewotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9h
cmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW3R5cGVdIG93bmVyOm5pbF07CiAg
ICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YSBmb3JUeXBl
OnR5cGVdOwogfQogI2Vsc2UKIHZvaWQgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQoTlNTdHJp
bmcgKnR5cGUsIE5TRGF0YSAqZGF0YSkKIHsKLSAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gc2V0SXRlbXM6QFtbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRh
dGEgZm9yS2V5OnR5cGVdXV07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRd
IHNldEl0ZW1zOkBbQHsgdHlwZTogZGF0YSB9XV07CiB9CiAjZW5kaWYKIApAQCAtMTU1LDggKzE1
NSw4IEBAIFRFU1QoUGFzdGVJbWFnZSwgUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJQYXN0aW5nSW1hZ2Up
CiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3RlYm9hcmQoaWQg
b2JqZWN0KQogewotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJl
VHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3du
ZXI6bmlsXTsKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gd3JpdGVPYmpl
Y3RzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6b2JqZWN0LCBuaWxdXTsKKyAgICBbW05TUGFz
dGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNGaWxlbmFtZXNQYm9h
cmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJk
XSB3cml0ZU9iamVjdHM6QFtvYmplY3RdXTsKIH0KIAogVEVTVChQYXN0ZUltYWdlLCBQYXN0ZUdJ
RkZpbGUpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Bhc3RlV2ViQXJjaGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFzdGVXZWJBcmNoaXZlLm1tCmluZGV4IGI3ODVmNWM0ZjJiZDcwMmEzMjViMzcwNTA0NmJl
ZTU5ODI2MzExOGIuLmNjN2Y0NDM4YzgyZGY5NGIyOTBkNzc3YTZiYzZhZWI5MjdjNzdkODggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJB
cmNoaXZlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVXZWJBcmNoaXZlLm1tCkBAIC0yNDksNyArMjQ5LDcgQEAgVEVTVChQYXN0ZVdlYkFyY2hpdmUs
IFdlYkFyY2hpdmVUeXBlSWRlbnRpZmllcikKICAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtb
V2ViQXJjaGl2ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291cmNlLmdldCgp
IHN1YnJlc291cmNlczpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsKIAogICAgIE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwotICAg
IFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CisgICAgW3Bhc3Rl
Ym9hcmQgZGVjbGFyZVR5cGVzOkBbKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hp
dmVdIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2ZSBkYXRhXSBm
b3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIAogICAgIGF1
dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVk
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDk0MTJhNGY1NmZjNmQ0Nzk3MWE0
YWViY2VmNTljOTRkYTViNjdmNDQuLjgxYjZmZDgzYmI0ZjFkMjgwMzk4N2NmNjUyNDUyY2Q0Njcz
NmE4MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC04MTcsNyArODE3LDcgQEAg
VEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9u
KQogewotICAgIFdLVXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBbW1tXS1VzZXJT
Y3JpcHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlmaWNh
dGlvbicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50
U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0FycmF5IGFycmF5
XSBsZWdhY3lCbGFja2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29y
bGQgZGVmYXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZRVNd
IGF1dG9yZWxlYXNlXTsKKyAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZpY2F0aW9uID0g
W1tbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZv
ciBub3RpZmljYXRpb24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10g
bGVnYWN5QmxhY2tsaXN0OkBbXSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
dGVzdDovLy9zY3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRlZmF1bHRDbGll
bnRXb3JsZF0gZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFzZV07
CiAgICAgV0tVc2VyU2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxvY10g
aW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmplY3Rp
b25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFt
ZU9ubHk6WUVTXSBhdXRvcmVsZWFzZV07CiAKICAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9
IFtbVGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmlu
ZGV4IDk5NzUwNWJjNDBkYzA4N2EwNWU5M2M4Njk4ZTkwOGM0YjlkZGEzYzguLmM0NGYwZGFiZGZl
MThhYWIwNTQ4Y2M5MmM3MzIzNzM1MTIwODBkN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAt
MTcxNiw3ICsxNzE2LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgVGFyZ2V0ZWRQcmV2
aWV3c1doZW5Ecm9wcGluZ0ltYWdlcykKICAgICBbc2Vjb25kSXRlbSBzZXRTdWdnZXN0ZWROYW1l
OkAiYXBwbGUiXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpEcm9w
QW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBbc2ltdWxhdG9y
IHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmZpcnN0
SXRlbS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKSwgbmlsXSBkZWZhdWx0RHJvcFByZXZpZXdzOltO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6Zmlyc3RQcmV2aWV3LmdldCgpLCBzZWNvbmRQcmV2aWV3
LmdldCgpLCBuaWxdXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpA
W2ZpcnN0SXRlbS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpA
W2ZpcnN0UHJldmlldy5nZXQoKSwgc2Vjb25kUHJldmlldy5nZXQoKV1dOwogICAgIFtzaW11bGF0
b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSg0NTAsIDQ1MCldOwog
CiAgICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10uY291bnQsIDJV
KTsKQEAgLTE3NTUsNyArMTc1NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIFRhcmdl
dGVkUHJldmlld0lzQ2xpcHBlZFdoZW5Ecm9wcGluZ1RhbGxJbWFnZSkKICAgICBbaXRlbSBzZXRT
dWdnZXN0ZWROYW1lOkAiZ3JlZW4iXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlv
blRpbWluZzpEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAg
ICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6aXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6cHJldmlldy5nZXQoKV1dOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJv
dmlkZXJzOkBbaXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW3ByZXZpZXcuZ2V0KCld
XTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1h
a2UoMzUwLCAzNTApXTsKIAogICAgIEVYUEVDVF9FUShbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJl
dmlld3NdLmNvdW50LCAxVSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA3YTdhYzY2YzFjNDUw
MDVkOTk1NmQ1ZTZjYjgxNzVmNDk0YjE0M2JmLi5mYTQ0ZTI2NmI1ZGUxZTVmNzcyOWY3ZjMwYzEz
ZDg1MzgyMWZkNWZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTM3Miw3ICszNzIsNyBAQCBU
RVNUKFdLSFRUUENvb2tpZVN0b3JlLCBDcmVhdGlvblRpbWUpCiAgICAgW2Nvb2tpZVByb3BlcnRp
ZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUiIGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CiAg
ICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiLnd3dy53ZWJraXQub3JnIiBmb3JLZXk6
TlNIVFRQQ29va2llRG9tYWluXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIv
cGF0aCIgZm9yS2V5Ok5TSFRUUENvb2tpZVBhdGhdOwotICAgIFJldGFpblB0cjxOU051bWJlcj4g
Y3JlYXRpb25UaW1lID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MTAwMDAwXTsKKyAgICBS
ZXRhaW5QdHI8TlNOdW1iZXI+IGNyZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2ll
UHJvcGVydGllcyBzZXRPYmplY3Q6Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQi
XTsKICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNv
b2tpZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLT2JqZWN0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS09iamVjdC5tbQppbmRleCBiNzQ2ZTM3Y2Mw
NTMwMjQ0NDU2OTA5ZmQxZjc1M2M5ODE0YjI1Y2JiLi4xZDZlZmYyMjZhMGJlZGFhOGJjN2U4MzU0
MDg4MWFmNWRlYTE4M2Y5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLT2JqZWN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tPYmplY3QubW0KQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChXZWJLaXQsIFdLT2Jq
ZWN0KQogewogICAgIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJqdXN0IHRlc3RpbmciKTsKICAgICBBU1NFUlRfVFJVRShbQCJqdXN0IHRlc3Rp
bmciIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmdSZWZdKTsKLSAgICBBU1NFUlRf
VFJVRShbKE5TU3RyaW5nICopc3RyaW5nUmVmIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pOworICAgIEFTU0VSVF9UUlVFKFsoTlNTdHJpbmcgKilzdHJpbmdSZWYgIGNsYXNzXV0pOwog
CiAgICAgTlNTdHJpbmcgKndlYWtTdHJpbmcgPSBuaWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0K
aW5kZXggOWJiMzZkNGFmYTE3NWYwZTEyM2MxY2FmNWU3OTA3YWFmNmYyNzhmZi4uYjk1OGYzYjIz
ZDBiYWM5MzllZTBlOGNiMDUzNjhmZDVlN2Q5Mzc1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0K
QEAgLTIwMSw3ICsyMDEsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlTm9uUGVy
c2lzdGVudENyZWRlbnRpYWxzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9m
VHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNd
IGZvckRhdGFSZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpleHBlY3RlZFJlY29yZC5n
ZXQoKV0gY29tcGxldGlvbkhhbmRsZXI6Xih2b2lkKSB7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
Q3JlZGVudGlhbHNdIGZvckRhdGFSZWNvcmRzOkBbZXhwZWN0ZWRSZWNvcmQuZ2V0KCldIGNvbXBs
ZXRpb25IYW5kbGVyOl4odm9pZCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbQppbmRleCAxM2EzZTk4ZWJhYmJkZmVlYWEyNGRkODg2MTM4Y2RlNzMx
YmY2Yjg0Li5jOTBlYTFjYjJhMjhlY2JlZmZhZTIzZWRlNWFkNjllMzVlOGU4NTIzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0
YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9j
ZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgICAgIEVYUEVDVF9FUShbcmVjb3JkcyBjb3VudF0s
ICh1bnNpZ25lZCBsb25nKTMpOwogICAgICAgICBmb3IgKGlkIHJlY29yZCBpbiByZWNvcmRzKSB7
CiAgICAgICAgICAgICBpZiAoW1tyZWNvcmQgZGlzcGxheU5hbWVdIGlzRXF1YWw6IEAiYXBwbGUu
Y29tIl0pIHsKLSAgICAgICAgICAgICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5
cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpyZWNvcmRd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgICAgICAgICAgW2RhdGFTdG9yZSByZW1v
dmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpAW3JlY29yZF0gY29tcGxl
dGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmcmFtZUlEQlBhdGguZ2V0KCku
cGF0aF0pOwogICAgICAgICAgICAgICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tCmluZGV4IDEwNmEyNWFhNzRiOWI3MWQ3
YWI2ZTgxN2QwY2M1OTQxMDA1M2I0OGUuLjRiMjllNzlkYjdkODc2M2UwYmFkMWU2YjNiYTIyOWFl
ZjcxYjNiZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZp
ZXdDYW5QYXN0ZVVSTC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJW
aWV3Q2FuUGFzdGVVUkwubW0KQEAgLTM3LDcgKzM3LDcgQEAgVEVTVChXZWJLaXRMZWdhY3ksIFdl
YlZpZXdDYW5QYXN0ZVVSTCkKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXTsK
ICAgICBbd2ViVmlldyBzZXRFZGl0YWJsZTpZRVNdOwogCi0gICAgW1tOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNV
UkxQYm9hcmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0
ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1VSTFBib2FyZFR5cGVdIG93bmVyOm5pbF07CiAgICAg
W1tOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3d3dy53ZWJraXQub3JnLyJdIHdyaXRlVG9Q
YXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKICAgICBbd2ViVmll
dyBwYXN0ZTpuaWxdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9XZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbQppbmRleCA1OGUwN2MxNDBlZWZjYWI0NWI4ZTJk
ZTczYzgwZGY3MWVkZWZiMDg2Li5mYTJlMmFhOTY3YWJhMjMxYTc3MDcwZDJjMTcwYTE4ZWIxYmRm
OGEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2Fu
UGFzdGVaZXJvUG5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZp
ZXdDYW5QYXN0ZVplcm9QbmcubW0KQEAgLTM4LDcgKzM4LDcgQEAgVEVTVChXZWJLaXRMZWdhY3ks
IFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcpCiAgICAgW3dlYlZpZXcgc2V0RWRpdGFibGU6WUVTXTsK
ICAgICAKICAgICAvL3Bhc3RpbmcgYSAweDAgaW1hZ2UgYXMgcGRmIGJvYXJkIHR5cGUuIFJlZmVy
cmluZyB0byA8cmRhcjovL3Byb2JsZW0vMTExNDE5MjA+Ci0gICAgW1tOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNQ
REZQYm9hcmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0
ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1BERlBib2FyZFR5cGVdIG93bmVyOm5pbF07CiAgICAg
W1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCIwIiB3aXRoRXh0ZW5zaW9u
OkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdIHdyaXRlVG9Q
YXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKICAgICBbd2ViVmll
dyBwYXN0ZTpuaWxdOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tCmlu
ZGV4IDY5ZjQ0ODllNzdmYTBiNjY4NjViMWJhNjUxYTcyYzVlNTExNjBlN2EuLmEwZjM0ODEzNGFl
NDU0ODFlNGI2ZWVmOGViYmI5ZTg2YWVjMmY2MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlw
dENvbnRleHQubW0KQEAgLTk0LDcgKzk0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldyBkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDooSlNDb250ZXh0ICopY29udGUKICAg
ICB9OwogCiAgICAgY29udGV4dFtAImNhbGxNZUJhY2siXSA9IF4oSlNWYWx1ZSAqZnVuY3Rpb25W
YWx1ZSkgewotICAgICAgICBbZnVuY3Rpb25WYWx1ZSBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJh
eSBhcnJheV1dOworICAgICAgICBbZnVuY3Rpb25WYWx1ZSBjYWxsV2l0aEFyZ3VtZW50czpAW11d
OwogICAgIH07CiAKICAgICBjb250ZXh0W0AiY2hlY2tGb3JNeUN1c3RvbVByb3BlcnR5Il0gPSBe
KEpTVmFsdWUgKmVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L21haW5JT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCmluZGV4IGNm
MDhhNzQ4MDliZTEwMWQ4ZWIzOTQxMWYzNDJiNjUwMjM5MmVhODEuLjAxYzdkMjczNjE1NjcxYmUw
MDhmMjE4OGZjZDNjN2UxZmQwMGI1ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL21haW5JT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQpA
QCAtMzcsOSArMzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgaWYg
KCFhcmd1bWVudERvbWFpbikKICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgIAotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtO
U0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgQFlFUywgICAgQCJXZWJLaXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Qg
PSBAeyBAIldlYktpdExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmciOiBAWUVTIH07CiAKICAgICBb
YXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRpY3RdOwogICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3Vt
ZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggM2Ez
M2MyZGFiY2MzMDIwNWViYTczYjNkNDg4YmE0ODA4Y2YyM2Y5OC4uNDFiMTdlYjRiNDU3MGUzYjVm
N2MzY2Y1ZWMwMzE2MTM2YmJlMDE4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQpAQCAtMzYsMTQgKzM2LDE0IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9t
YWluXSBtdXRhYmxlQ29weV07CiAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKICAgICAgICAgYXJn
dW1lbnREb21haW4gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIAot
ICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnRlZ2VyOjRdLCAgIEAiQXBwbGVBbnRpQWxpYXNpbmdUaHJlc2hvbGQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6MF0sICAgQCJBcHBs
ZUZvbnRTbW9vdGhpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBATk8sICAgICBAIk5T
U2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEBOTywg
ICAgIEAiTlNPdmVybGF5U2Nyb2xsZXJzRW5hYmxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIEAiQWx3YXlzIiwgICAgICAgICAgICAgICAgICAgICAgICBAIkFwcGxlU2hvd1Njcm9sbEJh
cnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworCisgICAgTlNEaWN0aW9uYXJ5
ICpkaWN0ID0gQHsKKyAgICAgICAgQCJBcHBsZUFudGlBbGlhc2luZ1RocmVzaG9sZCI6IEAoNCks
CisgICAgICAgIEAiQXBwbGVGb250U21vb3RoaW5nIjogQCgwKSwKKyAgICAgICAgQCJOU1Njcm9s
bEFuaW1hdGlvbkVuYWJsZWQiOiBATk8sCisgICAgICAgIEAiTlNPdmVybGF5U2Nyb2xsZXJzRW5h
YmxlZCI6IEBOTywKKyAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIjogQCJBbHdheXMiLAor
ICAgIF07CiAKICAgICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRp
Y3RdOwogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0
aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9tYWMvbWFpbk1hYy5tbQppbmRleCA3Y2E5OWU2YTNiNWU0MDgyZWFmY2Q5NDc0NDkw
YWMwOTVmZjBkNDNjLi5iZTdkODcyNjdlYzIyMTU0M2E1NDlmZTJiODhkMWM4MzI5OTJmYTI2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KQEAgLTM5LDkgKzM5LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGlmICghYXJndW1lbnREb21haW4pCiAgICAgICAg
IGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAg
ICAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEBZRVMsICAgIEAiV2Vi
S2l0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gQHsgQCJXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXJFdmVyeXRoaW5nIjogQFlFUyB9OwogCiAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNG
cm9tRGljdGlvbmFyeTpkaWN0XTsKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFpbiBmb3JOYW1lOk5TQXJndW1l
bnREb21haW5dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IGE1ZDU4ZWNjMTYy
MDdmODQ5ZDc0YzJkZjExZjM5ODY2ODlhOWY0OWIuLjViNjc4MTEwMTI1MTM4ZDYyYmRkYjhiMzMz
MzRmNGQyNDUxZjAzNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTkwLDcg
KzkwLDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uSGFuZGxlcjsKICNlbGlmIFVTRShBVEspCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAppbmRleCAwNDFmODFiYzc2ZDUwMzZiOWE5Mjll
OTBhMmM2MmU3MTE3OGJlYjNjLi44ZmM5NGY2ZjU0OTQ4ODM1NTViMTQ0YjE0NTAzMDYyMDQ4MTYw
MWU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBAIC0zMiw3ICszMiw3IEBACiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVm
IENGVHlwZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXI7Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXIg
PSBpZDsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlcjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAppbmRleCAxOGMxOGQ0OGU0MWNk
ZjA5OGFjOTE1ODhmZjY2MzExMDYyOTkxMjNmLi43ODE4MmVlOTBjNGUyNzk3NTZmYzY5NThhNDEy
ZTFjYWIyNDBlMjYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyAr
MzIsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotdHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7Cit1c2luZyBQbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UmKTsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8UGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJhbmdlOworICAgIFJldGFpblB0cjxpZD4g
bV90ZXh0TWFya2VyUmFuZ2U7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1f
dGV4dE1hcmtlclJhbmdlOwogI2VuZGlmCkBAIC02Nyw0ICs2Nyw4IEBAIHByaXZhdGU6CiBpbmxp
bmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFsKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAgICAgCisjaWZk
ZWYgX19PQkpDX18KK2lubGluZSBPcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiosIGlkIHJhbmdlKSB7IHJldHVybiB7IHsgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6Y3JlYXRlKHJhbmdlKSB9IH07IH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMzVmYjM3MDcxNmIyYWMzZTky
NWUxNjc2YzUyZTEyMmFhODFiYjc3Zi4uMTQxZGIyMGFlYjkyYTgxODQ3ZTkwZDg4YTA1OTQ0MDdl
NjhjNmVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTM1LDExICszNSw4IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWZkZWYg
X19PQkpDX18KLXR5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1lbnQ7Ci0jZWxzZQotdHlwZWRlZiBz
dHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwotI2VuZGlmCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgordXNpbmcgUGxhdGZvcm1VSUVsZW1lbnQgPSBpZDsKICNlbGlmIEhB
VkUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUSykKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5oIgogI2luY2x1ZGUgPGF0ay9hdGsuaD4KQEAgLTQ5LDE0ICs0
Niw2IEBAIHR5cGVkZWYgR1JlZlB0cjxBdGtPYmplY3Q+IFBsYXRmb3JtVUlFbGVtZW50OwogdHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi0jaWZkZWYgX19PQkpDX18KLXR5cGVkZWYgaWQgTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNl
bHNlCi10eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNl
bmRpZgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKQEAgLTY2LDcgKzU1LDEzIEBAIHB1YmxpYzoK
IAogICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBpZCBwbGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQor
I2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRm
b3JtVUlFbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKKwogICAgIHZpcnR1
YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKIAogICAgIHN0YXRpYyBKU09iamVjdFJlZiBt
YWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCYpOwpAQCAtMzU2LDEyICszNTEsMTUgQEAgcHJpdmF0ZToKICAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKICAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKIAorI2lmICFQTEFURk9S
TShDT0NPQSkKICAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7Ci0gICAgCisjZW5kaWYK
KwogICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2VkIHRvIGhl
bHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgogI2lmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBOb3RpZmljYXRpb25IYW5kbGVyIG1f
bm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZWxlbWVudDsKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKIAogICAgIHZvaWQgZ2V0TGlua2Vk
VUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKICAg
ICB2b2lkIGdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+Jik7CkBAIC0zNzgsNCArMzc2LDggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKICAgICAK
KyNpZmRlZiBfX09CSkNfXworaW5saW5lIE9wdGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+KiwgaWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShlbGVtZW50KSB9IH07IH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0
aXZhdGVGb250c0NvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KaW5kZXggZDFjZjdmNTUwNGVlZTBiYzMyOWYx
OTNkMjU1YjZmMmM0NDM5MmNlMS4uZGIzYzI4OTMxZDA1ZjU0MjA2YjFiZjVkNTI5ODE0ODQ5OThh
YTI0MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9j
b2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KQEAgLTMwLDcgKzMwLDYg
QEAKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udE1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1N0cmluZ0NGLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0
Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYg
VVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0K
aW5kZXggMWYxMDdjZTc5ZDdlNDNiOGQ4MzA4MDhkMzExZGZjN2FiNjhhNDAxNS4uNTM3MThmZTVh
YmRkZWIwNzZjMmUzM2Q4NDExYjY1MWM2ZmQ2NmZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1Mu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJJT1MubW0KQEAgLTI5LDggKzI5LDcgQEAgbmFtZXNwYWNlIFdUUiB7
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIG90aGVyKQogewotICAgIHJldHVybiBbKGlkKXBsYXRmb3JtVGV4dE1hcmtlcigp
IGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIFtw
bGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudElPUy5tbQppbmRleCAzNjQxNzU1ODVlOTcxZTdhYWY2NzJhYWE4NzliNmRkMTdmYTRk
YzA2Li41NmQyN2I0YzBmMGY3NjQ0NGJiMGVhZGM5ODE4ZThhY2Q2ZTU2OGJkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTI0LDkgKzI0LDEwIEBACiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgiCisKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgogI2ltcG9ydCAiSW5qZWN0ZWRC
dW5kbGVQYWdlLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KQEAgLTM2LDYg
KzM3LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxs
YmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7
CiAKQEAgLTEzNywxMyArMTM5LDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBj
cmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZlcnROU0FycmF5
VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiYgZWxlbWVudFZlY3RvcikKLXsKLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2FycmF5
IGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAg
ICAgICBlbGVtZW50VmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUo
W2FycmF5IG9iamVjdEF0SW5kZXg6aV0pKTsKLX0gICAgCi0KIHN0YXRpYyBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyAqYXR0cmli
dXRlLCBOU1N0cmluZyAqdmFsdWUpCiB7CiAgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihbYXR0
cmlidXRlIGxlbmd0aF0pOwpAQCAtMTYwLDIzICsxNTUsMTcgQEAgc3RhdGljIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRy
aWJ1dGUKICAgICAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQot
ICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgLy8gRklYTUU6IGFwQHdlYmtp
dC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0
byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9
CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3Qg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCiAgICAgOiBKU1dyYXBwYWJsZSgpCiAgICAg
LCBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVy
KDApCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCiB7Ci0gICAgW21fZWxlbWVudCByZWxlYXNl
XTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKQEAgLTI0MywyNiArMjMyLDIwIEBAIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQ
b2ludChpbnQgeCwgaW50CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KTsKIH0KICAgICAKLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRFbGVtZW50c1Rv
T2JqZWN0QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykKK3N0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRFbGVt
ZW50c1RvT2JqZWN0QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykKIHsKLSAgICBKU1ZhbHVlUmVm
IGFycmF5UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0gICAgSlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4
dCwgYXJyYXlSZXN1bHQsIG51bGxwdHIpOwotICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVt
ZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsr
aSkKLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmos
IGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS0+d3JhcHBlckNsYXNzKCksIGVs
ZW1lbnRzW2ldLmdldCgpKSwgbnVsbHB0cik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5UmVzdWx0
OworICAgIGF1dG8gYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCBudWxscHRy
LCBudWxscHRyKTsKKyAgICBhdXRvIHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlB
dEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBKU09iamVjdE1ha2UoY29udGV4dCwgZWxlbWVudHNb
aV0tPndyYXBwZXJDbGFzcygpLCBlbGVtZW50c1tpXS5nZXQoKSksIG51bGxwdHIpOworICAgIHJl
dHVybiBhcnJheTsKIH0KLQogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVt
ZW50c0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
V0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKICAgICBKU0NvbnRleHRS
ZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUp
OwotCiAgICAgTlNBcnJheSAqZWxlbWVudHNGb3JSYW5nZSA9IFttX2VsZW1lbnQgZWxlbWVudHNG
b3JSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV07Ci0gICAgVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7Ci0gICAgY29udmVydE5TQXJyYXlU
b1ZlY3RvcihlbGVtZW50c0ZvclJhbmdlLCBlbGVtZW50cyk7Ci0gICAgcmV0dXJuIGNvbnZlcnRF
bGVtZW50c1RvT2JqZWN0QXJyYXkoY29udGV4dCwgZWxlbWVudHMpOworICAgIHJldHVybiBjb252
ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+PihlbGVtZW50c0ZvclJhbmdlKSk7CiB9CiAKIHVuc2lnbmVkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBlbGVtZW50KQpAQCAtMTEwMCw5ICsxMDgzLDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogLy8gVGV4dCBtYXJrZXJzCiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7Ci0gICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJG
b3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBpZCBl
bmRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgTlNBcnJheSAqdGV4dE1hcmtlcnMg
PSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtl
ciwgbmlsXTsKKyAgICBpZCBzdGFydFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFydE1h
cmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQg
ZW5kVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjp0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBA
W3N0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtlcl07CiAgICAgCiAgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJz
XTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRN
YXJrZXJSYW5nZSk7CkBAIC0xMTEwLDcgKzEwOTMsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5n
ZQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSogc3RhcnQsIGJvb2wgZm9yd2FyZCkKIHsKLSAgICBpZCBtaXNzcGVsbGluZ1Jhbmdl
ID0gW21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTooaWQpc3RhcnQtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKKyAgICBpZCBtaXNzcGVsbGlu
Z1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTpzdGFydC0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3J3YXJkOmZvcndhcmRdOwogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUobWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAK
QEAgLTExMjIsNDcgKzExMDUsNDYgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckUKIAogaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5n
ZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsgICAgCi0gICAgcmV0dXJuIFttX2VsZW1lbnQg
bGVuZ3RoRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdOworICAgIHJldHVybiBbbV9lbGVtZW50
IGxlbmd0aEZvclRleHRNYXJrZXJzOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
IH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7Ci0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2Vy
Rm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQg
cHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOnRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAgaWQgbmV4dE1hcmtlciA9
IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRNYXJrZXJG
b3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOwogfQogCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewot
ICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpOwotICAgIGlmICghdGV4dE1hcmtlcnMgfHwgIVt0ZXh0TWFya2VycyBpc0tpbmRPZkNs
YXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgaWQgdGV4dE1hcmtlcnMgPSBtYXJrZXJSYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZiAoIVt0ZXh0TWFya2VycyBpc0tpbmRP
ZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBjcmVhdGVFbXB0eUpTU3Ry
aW5nKCk7CiAgICAgcmV0dXJuIFtbbV9lbGVtZW50IHN0cmluZ0ZvclRleHRNYXJrZXJzOnRleHRN
YXJrZXJzXSBjcmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNB
cnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwg
ZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJS
YW5nZSk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gcmFu
Z2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2Vs
ZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0
YXJ0OllFU107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4
dE1hcmtlcik7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZCly
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IHJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnMgaXNT
dGFydDpOT107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4
dE1hcmtlcik7CiB9CkBAIC0xMTk0LDcgKzExNzYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQg
eAogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBtYXJrZXIpCiB7Ci0gICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yVGV4dE1hcmtlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
aWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjptYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZiAob2JqKQogICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG9iaik7CiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMjk0LDcgKzEyNzYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0YwogewogICAgIE5T
QXJyYXkgKnRleHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkKLSAgICAgICAg
dGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBuaWxdOworICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzOnRleHRN
YXJrZXJzIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4dF1dOwog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtl
clJhbmdlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KaW5kZXggNDI5MDhiZWZlZjdh
NThmN2FlMDRmMDU4MDUzMTRlNWE0NWU0ZTNlZC4uYmQ3MmY5ODQ1YzAxMzcwYjFmZGE4ZWQ3ZDNi
YjQ3OTI5Y2VhMGRhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KQEAgLTM2LDEyICsz
Niw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZShXS1R5cGVSZWYp
CiAKICAgICAvLyBMYW5ndWFnZSB3YXMgc2V0IHVwIGVhcmxpZXIgaW4gbWFpbigpLiBEb24ndCBj
bG9iYmVyIGl0LgogICAgIE5TQXJyYXkgKmxhbmd1YWdlcyA9IFtbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFp
bl0gdmFsdWVGb3JLZXk6QCJBcHBsZUxhbmd1YWdlcyJdOwotCi0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IGRpY3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF0pOwotICAgIGlmIChsYW5ndWFnZXMpCi0gICAgICAgIFtkaWN0IHNldE9iamVjdDps
YW5ndWFnZXMgZm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKLQotICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmRpY3QuZ2V0KCkgZm9y
TmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBs
YW5ndWFnZXMgPyBAeyBAIkFwcGxlTGFuZ3VhZ2VzIjogbGFuZ3VhZ2VzIH0gOiBAeyB9OworICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWlu
OmRpY3Rpb25hcnkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQppbmRleCBjZjc3OGM2
ZTFkNGFhMGE4YzUzNDM0Yzc4ODJlNjlmOGFjYjQ2ZWQxLi4zOWFhYTI0YTk3NDBhOGMyMzA0NmFi
OGY1MzJkOTg3MzFjZDI5NTVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMu
bW0KQEAgLTU1LDcgKzU1LDcgQEAgTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0
ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmUKICAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeV07CiAgICAgCiAgICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1l
bnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpCi0gICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRl
IHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpA
IkFYU3RhcnRFbGVtZW50Il07CisgICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9i
amVjdDpzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVs
ZW1lbnQiXTsKICAgICAKICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6KGlz
RGlyZWN0aW9uTmV4dCkgPyBAIkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlv
dXMiIGZvcktleTpAIkFYRGlyZWN0aW9uIl07CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1h
Yy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tCmluZGV4IDVlYjk1ZjIyNzQwMWY4N2Q2ZjM5ZjRkNTQ5YzBm
Y2M4NTQ2ZDdhODcuLmJhMjg5YjFkNmNkZTdhMjIxMTMyZGExOGMyMGY5NjI5MzJlMmQzOTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCkBAIC0yOSw4ICsy
OSw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpp
c0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhf
X2JyaWRnZSBpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOihfX2JyaWRnZSBpZClvdGhl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbcGxhdGZvcm1UZXh0TWFya2Vy
KCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXVFIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggOWI1OWJmY2UwZjRjNDg1NWJmY2RmYWU2NWQ0NTk1ZTRiZjY2MWNhMy4uMjdmMGZiNWUxODAw
OWQ1NTlkMjE0ODZlNDg5MzRiYTJmYWFkNzdhYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVGcmFt
ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgot
CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlPd25zQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUg
QCJBWE93bnMiCkBAIC05MiwyNyArOTIsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKK0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVudCkK
ICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDAp
CiB7Ci0gICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0
byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4K
LSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIp
CiAgICAgOiBKU1dyYXBwYWJsZSgpCiAgICAgLCBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQot
ICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5d
OwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgp
CiB7Ci0gICAgLy8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVz
ZSByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGlu
IHRoZSB0ZXN0LgotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBbbV9l
bGVtZW50IHJlbGVhc2VdOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1
YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KQpAQCAtMTY0LDkgKzE1Niw5
IEBAIHN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBp
ZCBmb2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjCiAgICAgcmV0dXJuIFt2YWx1ZU9iamVjdCBkZXNj
cmlwdGlvbl07CiB9CiAKLXN0YXRpYyBOU1N0cmluZyogYXR0cmlidXRlc09mRWxlbWVudChpZCBh
Y2Nlc3NpYmlsaXR5T2JqZWN0KQorc3RhdGljIE5TU3RyaW5nICphdHRyaWJ1dGVzT2ZFbGVtZW50
KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCiB7Ci0gICAgTlNBcnJheSogc3VwcG9ydGVkQXR0cmli
dXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107
CisgICAgTlNBcnJheSAqc3VwcG9ydGVkQXR0cmlidXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CiAKICAgICBOU011dGFibGVTdHJpbmcqIGF0
dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CiAgICAgZm9yIChOU1VJ
bnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRlZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKQEAg
LTIxOSwxNyArMjExLDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUKICAgICByZXR1cm4gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNvbnZl
cnROU0FycmF5VG9WZWN0b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7Ci0g
ICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjb3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgdi5hcHBlbmQoVDo6VmFsdWVUeXBlOjpjcmVhdGUoW2FycmF5IG9iamVjdEF0
SW5kZXg6aV0pKTsKLSAgICByZXR1cm4gdjsKLX0KLQogc3RhdGljIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQogewogICAgIE5TTXV0YWJsZVN0cmluZyogYWxs
RWxlbWVudFN0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKQEAgLTMyOCwzNCArMzA5
LDM0IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZUZvckNyaXRlcmlhKEFjY2Vzc2liCiB7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcGFyYW1ldGVycyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwogCi0gICAg
W3BhcmFtZXRlcnMgc2V0T2JqZWN0OihfX2JyaWRnZSBpZClzdGFydC0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl07CisgICAgW3BhcmFt
ZXRlcnMgc2V0T2JqZWN0OnN0YXJ0LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvcktleTpA
IkFYU3RhcnRUZXh0TWFya2VyUmFuZ2UiXTsKICAgICBbcGFyYW1ldGVycyBzZXRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhCb29sOmZvcndhcmRdIGZvcktleTpAIkFYU2VhcmNoVGV4dERpcmVj
dGlvbiJdOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAg
ICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+KGxpbmtlZEVsZW1lbnRzKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFr
ZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGxpbmtlZEVsZW1lbnRzKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERv
Y3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1l
bnRWZWN0b3IpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSog
bGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9W
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihsaW5rRWxlbWVudHMpOworICAg
IGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4obGlua0VsZW1lbnRzKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4m
IGVsZW1lbnRzKSBjb25zdAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1l
bnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykgY29uc3QKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07
CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAg
IGVsZW1lbnRzID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KHZhbHVlKTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKIH0KIApAQCAtMzYzLDcgKzM0NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+CiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJl
bkF0dHJpYnV0ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CisgICAgZWxlbWVudFZl
Y3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJl
bik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNzMsNyArMzU0LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUUKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
ID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7
CiAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJs
ZShbJmVsZW1lbnRWZWN0b3IsIGxvY2F0aW9uLCBsZW5ndGgsIHRoaXNdIHsKICAgICAgICAgTlNB
cnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZh
bHVlczpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2NhdGlvbiBtYXhD
b3VudDpsZW5ndGhdOwotICAgICAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1Zl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsKKyAgICAgICAg
ZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
PihjaGlsZHJlbik7CiAgICAgfSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQpAQCAt
Mzg3LDcgKzM2OCw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVh
ZGVycygpIGNvbnN0CiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4g
ZWxlbWVudHM7CiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgZWxl
bWVudHMgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4odmFsdWUpOworICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09i
amVjdEFycmF5PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29udGV4dCwgZWxlbWVu
dHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTQwMSw3ICszODIsNyBAQCBK
U1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAog
ICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGVsZW1lbnRzOwogICAg
IGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0gY29u
dmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVl
KTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4odmFsdWUpOwogICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheTxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbnRleHQsIGVsZW1lbnRzKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CkBAIC02MTAsMTQgKzU5MSwxNCBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRy
ZW4oKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWxsQXR0cmlidXRlcygpCiB7Ci0gICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
T2ZFbGVtZW50KG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1
dGVzT2ZFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIFthdHRyaWJ1dGVzIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKIH0KICAgICAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TU3RyaW5nICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJp
YnV0ZV1dLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJl
dHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTcyOSw3ICs3MTAsNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0
ZU5hbWVzKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAq
cm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBO
U1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50
LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9s
ZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTczOSw3ICs3
MjAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3Vicm9sZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcq
IHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7Cisg
ICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1f
ZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUo
QCJBWFN1YnJvbGUiLCByb2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc0
OSw3ICs3MzAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3Vicm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25B
dHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25P
ZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0
dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNjcmlwdGlvbiIsIHJv
bGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTc1OSw3ICs3NDAsNyBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURl
c2NyaXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIE5TU3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEFSSUFSb2xlIl0sIG1f
ZWxlbWVudCk7CisgICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9u
T2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJv
bGUiXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW2NvbXB1dGVkUm9sZVN0cmluZyBj
cmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAt
NzY5LDcgKzc1MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1
dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1
ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlU
aXRsZUF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRl
QXR0cmlidXRlQW5kVmFsdWUoQCJBWFRpdGxlIiwgdGl0bGUpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKIApAQCAtNzc5LDcgKzc2MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0aW9uIiwgZGVz
Y3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzg5LDcgKzc3MCw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNj
cmlwdGlvbigpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6b3JpZW50YXRpb24oKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRl
XSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVzY3JpcHRpb24pOyAgICAK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc5OSw3ICs3ODAsNyBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBj
b25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ1ZhbHVlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNj
cmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7Cisg
ICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQuZ2V0KCkpOwogICAgIGlmIChkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIGNvbmNh
dGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFZhbHVlIiwgZGVzY3JpcHRpb24pOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTgxMCw3ICs3OTEsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFu
Z3VhZ2UiXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFuZ3VhZ2Ui
XSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZShAIkFYTGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogCkBAIC04MjAsNyArODAxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVs
cEF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5SGVscEF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNh
dGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWEhlbHAiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTEyOSw3ICsxMTEwLDcgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygp
IGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRl
eCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmVGb3JJ
bmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBudW1iZXJX
aXRoSW50OmluZGV4XV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0
cmlidXRlIGZvclBhcmFtZXRlcjpAKGluZGV4KV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZhbHVl
IGludFZhbHVlXTsgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTE0MCw3ICsxMTIx
LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgp
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VG
b3JMaW5lKGludCBsaW5lKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlk
IHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5UmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZV1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6QChsaW5lKV07CiAgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbTlNTdHJp
bmdGcm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVdKSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTI3Miw3ICsxMjUzLDcgQEAgSlNWYWx1ZVJlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKEpTQ29udGV4dFJl
ZiBjb250ZXh0LAogICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IHNl
YXJjaFRleHRQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoY29udGV4dCwgc2VhcmNo
U3RyaW5ncywgc3RhcnRGcm9tLCBkaXJlY3Rpb24pOwogICAgIGlkIHJlc3VsdCA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZWFyY2hUZXh0V2l0aENyaXRlcmlh
IiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgaWYgKFtyZXN1bHQg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICByZXR1cm4gY29udmVydFZl
Y3RvclRvT2JqZWN0QXJyYXk8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pihj
b250ZXh0LCBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPj4ocmVzdWx0KSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmpl
Y3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+KGNvbnRleHQsIG1h
a2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+PihyZXN1bHQpKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEy
ODQsNyArMTI2NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0IGRlZmlu
ZWQgaW4gQXBwS2l0Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5T
QXJyYXkqIGNvbHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBjb2x1bW5I
ZWFkZXJzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4+KGNvbHVtbkhlYWRlcnNBcnJheSk7CisgICAgYXV0byBjb2x1bW5IZWFkZXJz
VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVt
bkhlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5I
ZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMjk1
LDcgKzEyNzYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgTlNBcnJheSogcm93SGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJvd0hlYWRlclVJRWxlbWVudHMiXTsKLSAgICBhdXRv
IHJvd0hlYWRlcnNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4ocm93SGVhZGVyc0FycmF5KTsKKyAgICBhdXRvIHJvd0hlYWRlcnNW
ZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93SGVh
ZGVyc0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd0hlYWRlcnNW
ZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMDYsNyArMTI4
Nyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZDb2x1bW5zKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBOU0FycmF5KiBjb2x1bW5zQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKLSAgICBhdXRvIGNvbHVt
bnNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4oY29sdW1uc0FycmF5KTsKKyAgICBhdXRvIGNvbHVtbnNWZWN0b3IgPSBtYWtlVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29sdW1uc0FycmF5KTsKICAgICBy
ZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMTcsNyArMTI5OCw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzQXJyYXkgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dz
QXR0cmlidXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93c0FycmF5KTsKKyAgICBhdXRvIHJv
d3NWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93
c0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMjgsNyArMTMwOSw3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZWaXNpYmxlQ2VsbHMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5T
QXJyYXkqIGNlbGxzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYVmlzaWJsZUNlbGxzIl07Ci0gICAgYXV0byBjZWxsc1ZlY3RvciA9IGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjZWxsc0FycmF5KTsK
KyAgICBhdXRvIGNlbGxzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KGNlbGxzQXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMo
Y2VsbHNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE0MDks
NyArMTM5MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29s
LCB1bnNpZ25lZCByb3cpCiB7Ci0gICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29sXSwgW05T
TnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOworICAgIE5TQXJyYXkgKmNv
bFJvd0FycmF5ID0gQFtAKGNvbCksIEAocm93KV07CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2VsbEZvckNvbHVtbkFuZFJvdyIgZm9y
UGFyYW1ldGVyOmNvbFJvd0FycmF5XSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAK
QEAgLTE0OTAsNyArMTQ3MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooX19icmlkZ2Ug
aWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yQXR0cmlidXRlOk5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKKyAgICBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2VBdHRyaWJ1dGVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVy
biB0cnVlOwpAQCAtMTU0OCw3ICsxNTI5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzeW5jUHJlc3MoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENo
aWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogYXJyYXkgPSBlbGVtZW50ID8gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldIDogW05TQXJy
YXkgYXJyYXldOworICAgIE5TQXJyYXkqIGFycmF5ID0gZWxlbWVudCA/IEBbZWxlbWVudC0+cGxh
dGZvcm1VSUVsZW1lbnQoKV0gOiBAW107CiAgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0
VmFsdWU6YXJyYXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5B
dHRyaWJ1dGVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCiB9CkBAIC0xNTYwLDcg
KzE1NDEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRB
dEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpl
bGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBOU0FycmF5ICphcnJheSA9IEBbZWxl
bWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CiAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4pCiAg
ICAgICAgIGFycmF5ID0gW3NlbGVjdGVkQ2hpbGRyZW4gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9t
QXJyYXk6YXJyYXldOwogICAgIFttX2VsZW1lbnQgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTphcnJh
eSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07
CkBAIC0xNzY5LDggKzE3NTAsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92
ZVNlbGVjdGlvbigpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRn
ZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0
ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3ODEsNyArMTc2Miw3IEBAIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaXNzcGVsbGluZ1Rl
eHRNYXJrCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNEaWN0aW9uYXJ5ICpw
YXJhbWV0ZXJzID0gbWlzc3BlbGxpbmdTZWFyY2hQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3Jp
dGVyaWEoc3RhcnQsIGZvcndhcmQpOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNaXNzcGVsbGluZ1RleHRNYXJrZXJS
YW5nZSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFu
Z2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4
dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE3OTEsNyArMTc3Miw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5n
ZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCld
OwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJp
ZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODAwLDcgKzE3ODEs
NyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5n
ZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogbGVuZ3Ro
VmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3Ro
Rm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBOU051bWJlciogbGVuZ3RoVmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3RoRm9yVGV4dE1hcmtl
clJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwog
ICAgIHJldHVybiBbbGVuZ3RoVmFsdWUgaW50VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKQEAgLTE4MTAsOCArMTc5MSw4IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSoK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzTWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1h
cmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNNYXJrZXIpOworICAgIGlkIHBy
ZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUocHJldmlvdXNNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MjAsOCArMTgwMSw4IEBAIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNU
ZXh0TWFya2VyKEFjY2VzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0
ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOworICAgIGlkIG5l
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKG5leHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE4MzAsNyArMTgxMSw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNz
aWJpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtl
clJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRTdHJp
bmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5w
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBpZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSIgZm9yUGFyYW1ldGVyOm1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
ICAgICByZXR1cm4gW3RleHRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE4NDAsOSArMTgyMSw5IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogdGV4dE1hcmtl
cnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihfX2JyaWRnZSBpZClzdGFydE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCksIChfX2JyaWRnZSBpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpLCBuaWxdOworICAgIE5TQXJyYXkqIHRleHRNYXJrZXJzID0gQFtzdGFydE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyIgZm9y
UGFyYW1ldGVyOnRleHRNYXJrZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJS
YW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTg1Miw3ICsxODMzLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclIKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFy
a2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE4NzcsOCArMTg1OCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUo
KF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0
TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xODg3LDggKzE4NjgsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYQogUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
IHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBpZCB0
ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg5OCw3ICsxODc5LDcgQEAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9y
Qm91bmRzKGkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1l
dGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRn
ZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyNCw3ICsxOTA1LDcgQEAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJr
ZXJGb3JCb3VuZHMKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0
TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5U3RhcnRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQ
YXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01ha2VSZWN0KHgsIHksIHdpZHRoLCBo
ZWlnaHQpXV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9f
YnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTM0LDcgKzE5MTUsNyBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJGb3JQb2ludChpbnQgeAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlk
IHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
VGV4dE1hcmtlckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9p
bnQ6TlNNYWtlUG9pbnQoeCwgeSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NDMsNyArMTky
NCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgdWlF
bGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxl
bWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKICAgICBpZiAodWlFbGVtZW50KQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKHVpRWxlbWVudCk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpA
QCAtMTk3NSw3ICsxOTU2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKICAgICBOU0F0dHJp
YnV0ZWRTdHJpbmcqIHN0cmluZyA9IG5pbDsKIAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJp
ZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBzdHJp
bmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRl
ZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOm1hcmtlclJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAg
ICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0p
CkBAIC0xOTkwLDkgKzE5NzEsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogCiAgICAgaWQg
cGFyYW1ldGVyID0gbmlsOwogICAgIGlmIChpbmNsdWRlU3BlbGxDaGVjaykKLSAgICAgICAgcGFy
YW1ldGVyID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU051
bWJlciBudW1iZXJXaXRoQm9vbDppbmNsdWRlU3BlbGxDaGVja10sIEAiQVhTcGVsbENoZWNrIiwg
KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpLCBAIkFY
VGV4dE1hcmtlclJhbmdlIiwgbmlsXTsKKyAgICAgICAgcGFyYW1ldGVyID0gQHsgQCJBWFNwZWxs
Q2hlY2siOiBpbmNsdWRlU3BlbGxDaGVjayA/IEBZRVMgOiBATk8sIEAiQVhUZXh0TWFya2VyUmFu
Z2UiOiBtYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgcGFyYW1ldGVyID0gKF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpOworICAgICAgICBwYXJhbWV0ZXIgPSBtYXJrZXJSYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKTsKIAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRy
aWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMiIGZvclBhcmFtZXRlcjpw
YXJhbWV0ZXJdOwpAQCAtMjAwNyw3ICsxOTg4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEK
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKV07CisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAg
ICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTIwMjIsNyArMjAwMyw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZUNvbnRhaW5zQXR0cmlidXRlCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAg
ICBOU051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYSW5kZXhGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6bWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRWYWx1ZV07CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMjAzMiw3ICsyMDEzLDcgQEAgaW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogbWFya2VyKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRN
YXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogdmFsaWROdW1iZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlcklzVmFsaWQi
IGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOworICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9yUGFyYW1ldGVyOnRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gW3ZhbGlkTnVtYmVyIGJv
b2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMjA0Myw3ICsy
MDI0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50IHQKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JJbmRleCIgZm9yUGFyYW1ldGVyOltOU051bWJl
ciBudW1iZXJXaXRoSW50ZWdlcjp0ZXh0SW5kZXhdXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIw
NTMsNyArMjAzNCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlciJdOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjA2Myw3ICsyMDQ0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIw
NzIsOCArMjA1Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOwor
ICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwODIs
OCArMjA2Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSCiBSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmlnaHRXb3JkVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmlnaHRXb3Jk
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJS
YW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2Up
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIwOTIsOCArMjA3Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29y
ZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlv
dXNXb3JkU3RhcnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1l
dGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJl
ZilwcmV2aW91c1dvcmRTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNXb3JkU3RhcnRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNX
b3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZShwcmV2aW91c1dvcmRTdGFydE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEwMiw4ICsyMDgzLDggQEAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmV2aW91c1dvcmRTdGFydFRleHRNYXIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0V29yZEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRXb3JkRW5kTWFya2VyKTsKKyAgICBpZCBuZXh0V29yZEVu
ZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0
V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKG5leHRXb3JkRW5kTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTEyLDggKzIwOTMsOCBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3Jk
RW5kVGV4dE1hcmtlckZvcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRN
YXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQ
YXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTIyLDggKzIxMDMsOCBA
QCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFy
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2
aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjoo
X19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJl
dmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFy
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2
aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUocHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEz
Miw4ICsyMTEzLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGUKIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRQYXJhZ3JhcGhF
bmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJp
ZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRQYXJh
Z3JhcGhFbmRNYXJrZXIpOworICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5l
eHRQYXJhZ3JhcGhFbmRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNDIsOCArMjEyMyw4IEBAIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVu
ZFRleHRNYXJrCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9f
YnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5n
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNTIsOCArMjEzMyw4IEBAIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50
ZW5jZVRleHRNYXJrZXJSCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNTZW50ZW5j
ZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNQYXJhZ3Jh
cGhTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNl
U3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OmNyZWF0ZShwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTYyLDggKzIxNDMsOCBA
QCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzU2VudGVuY2VTdGFydFRleAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRQYXJhZ3JhcGhFbmRNYXJrZXIp
OworICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dFBhcmFncmFwaEVuZE1h
cmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBjYmQx
NDY5YjkyODhlYzY0ZWQ2YzZhNTdjMTNmYjY3YmY1ZjcwYjk0Li42MWNkZjBlYzE0YTdlYzg3NzUz
MTEzMjUzZWU1Yjc2OTNhOGUxNzU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlk
U2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCit2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxE
aWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMiKSk7CiAgICAgCkBAIC0yMDA1LDcgKzIw
MDUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCi12b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYgd2ViVmll
d0NhdGVnb3J5KQordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29y
eShTdHJpbmcmJiB3ZWJWaWV3Q2F0ZWdvcnkpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkiKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTg0ZjVlYjc0OWEyNDAyYmI5ODVhMDE2MzY0Yzgx
YTY2MjlkOWJiNi4uYzdhOTU2NDM0NDYzMjk0YjE1NWM1YzA1MDAyNGRlZjQ3ZmNiNzFmNSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGVzdElu
dm9jYXRpb25faAotI2RlZmluZSBUZXN0SW52b2NhdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKQEAgLTUzLDE3
ICs1MiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElzUGl4ZWxUZXN0KGNvbnN0IHN0ZDo6
c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKLSAgICB2b2lkIHNldEN1c3RvbVRpbWVvdXQo
V1RGOjpTZWNvbmRzIGR1cmF0aW9uKSB7IG1fdGltZW91dCA9IGR1cmF0aW9uOyB9CisgICAgdm9p
ZCBzZXRDdXN0b21UaW1lb3V0KFNlY29uZHMgZHVyYXRpb24pIHsgbV90aW1lb3V0ID0gZHVyYXRp
b247IH0KICAgICB2b2lkIHNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihib29sIHZhbHVlKSB7
IG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gdmFsdWU7IH0KIAotICAgIFdURjo6U2Vjb25k
cyBzaG9ydFRpbWVvdXQoKSBjb25zdDsKKyAgICBTZWNvbmRzIHNob3J0VGltZW91dCgpIGNvbnN0
OwogCiAgICAgdm9pZCBpbnZva2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHkpOwogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5KTsKIAogICAgIHN0YXRpYyB2b2lkIGR1bXBXZWJQcm9jZXNzVW5yZXNwb25z
aXZlbmVzcyhjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgb3V0cHV0VGV4dChj
b25zdCBXVEY6OlN0cmluZyYpOworICAgIHZvaWQgb3V0cHV0VGV4dChjb25zdCBTdHJpbmcmKTsK
IAogICAgIHZvaWQgZGlkQmVnaW5Td2lwZSgpOwogICAgIHZvaWQgd2lsbEVuZFN3aXBlKCk7CkBA
IC04Nyw5ICs4Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNldFByZXZhbGVudFJlc291cmNl
KCk7CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRp
ZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmJik7CiAgICAgdm9p
ZCBkaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCiAgICAgdm9pZCBkaWRSZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKQEAgLTEzOCwxMiArMTM3LDEyIEBAIHByaXZhdGU6
CiAgICAgY29uc3QgVGVzdE9wdGlvbnMgbV9vcHRpb25zOwogICAgIAogICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiBtX3VybDsKLSAgICBXVEY6OlN0cmluZyBtX3VybFN0cmluZzsKKyAgICBTdHJp
bmcgbV91cmxTdHJpbmc7CiAgICAgUnVuTG9vcDo6VGltZXI8VGVzdEludm9jYXRpb24+IG1fd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXI7CiAKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxI
YXNoOwogCi0gICAgV1RGOjpTZWNvbmRzIG1fdGltZW91dDsKKyAgICBTZWNvbmRzIG1fdGltZW91
dDsKICAgICBib29sIG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKIAogICAg
IC8vIEludm9jYXRpb24gc3RhdGUKQEAgLTE3Myw1ICsxNzIsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBUZXN0SW52b2NhdGlvbl9oCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5k
ZXggNTQ4ZmU3MzEzMDY2NDY4ZjJkYWE3NmMyMTUwMGUwYTJhNDA4NDFiZi4uNmYzMjllNzViOTcx
N2YzMGNjODdhYzljZmMzMWNmYzk2ODNhZjAxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTIsNiArNTIsNyBAQAog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAg
LTEwMSwxMCArMTAyLDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0Zm9ybUluaXRp
YWxpemUoKQogICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyID0gU3RyaW5n
KGR1bXBSZW5kZXJUcmVlVGVtcCkgKyAnLycgKyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyI7CiAg
ICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6
WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiBuaWxdOwogICAgIFN0cmluZyBmdWxsQnJvd3NpbmdT
ZXNzaW9uUmVzb3VyY2VMb2cgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyICsgJy8nICsg
ImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCI7Ci0gICAgTlNEaWN0aW9u
YXJ5ICpyZXNvdXJjZUxvZ1BsaXN0ID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdLCBAInZlcnNpb24iLCBuaWxd
OworICAgIE5TRGljdGlvbmFyeSAqcmVzb3VyY2VMb2dQbGlzdCA9IEB7IEAidmVyc2lvbiI6IEAo
MSkgfTsKICAgICBpZiAoIVtyZXNvdXJjZUxvZ1BsaXN0IHdyaXRlVG9GaWxlOmZ1bGxCcm93c2lu
Z1Nlc3Npb25SZXNvdXJjZUxvZyBhdG9taWNhbGx5OllFU10pCiAgICAgICAgIFdURkNyYXNoKCk7
Ci0gICAgW3Jlc291cmNlTG9nUGxpc3QgcmVsZWFzZV07CiB9CiAKIFdLQ29udGV4dFJlZiBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKQEAgLTMzMiwxMiArMzMyLDggQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAgIGlmICghcGFy
ZW50VmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOnBhcmVu
dFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmlu
ZyAqPiAqbnNEb21haW5zKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Ci0gICAg
ICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOwotICAg
ICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCi0gICAgICAgICAgICBkb21h
aW5zLnVuY2hlY2tlZEFwcGVuZChkb21haW4pOwotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5kaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoZG9tYWlucyk7CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5kaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMobWFrZVZlY3RvcjxTdHJp
bmc+KGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIApAQCAtMzQ3LDEyICszNDMsOCBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiAgICAgaWYgKCFwYXJlbnRW
aWV3KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOnBhcmVudFZp
ZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAq
PiAqbnNEb21haW5zKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Ci0gICAgICAg
IGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOwotICAgICAg
ICBmb3IgKE5TU3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCi0gICAgICAgICAgICBkb21haW5z
LnVuY2hlY2tlZEFwcGVuZChkb21haW4pOwotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5k
aWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJk
UGFydHlEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMobWFrZVZlY3RvcjxT
dHJpbmc+KGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIApAQCAtMzg3LDcgKzM3OSw3IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSgpCiAgICAgICAgICAgICBjYXRlZ29y
eSA9ICJXZWJCcm93c2VyIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoY2F0ZWdvcnkp
OworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5
KFdURk1vdmUoY2F0ZWdvcnkpKTsKICAgICB9XTsKIH0KIApAQCAtNDk0LDEwICs0ODYsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlvbihjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wgZGlzbWlzc2VzQQogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dlZE1l
bnVBY3Rpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhY3Rpb25zKQogewogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgYXV0byBhY3Rpb25OYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheTxOU1N0cmluZyAqPiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphY3Rpb25zLnNpemUoKV0p
OwotICAgIGZvciAoYXV0byYgYWN0aW9uIDogYWN0aW9ucykKLSAgICAgICAgW2FjdGlvbk5hbWVz
IGFkZE9iamVjdDphY3Rpb25dOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBz
ZXRBbGxvd2VkTWVudUFjdGlvbnM6YWN0aW9uTmFtZXMuZ2V0KCldOworICAgIFttX21haW5XZWJW
aWV3LT5wbGF0Zm9ybVZpZXcoKSBzZXRBbGxvd2VkTWVudUFjdGlvbnM6Y3JlYXRlTlNBcnJheShh
Y3Rpb25zKS5nZXQoKV07CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhY3Rpb25zKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpp
bmRleCBiYzNiNjM1ZTdhYTBiNjJhMzM4OWY3YzdkMmZkZWEwNGI0YWQ5ODVmLi5lMjk4MzhiYTgy
OGZiNGJkOTA4NTdhYjZiZWYyZmQ0NjU5ZmI0MjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgLSAo
TlNBcnJheSAqKWludGVycG9sYXRlZEV2ZW50czooTlNEaWN0aW9uYXJ5ICopaW50ZXJwb2xhdGlv
bnNEaWN0aW9uYXJ5CiAgICAgd2hpbGUgKHRpbWUgPCBlbmRUaW1lKSB7CiAgICAgICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKm5ld0V2ZW50ID0gW2VuZEV2ZW50IG11dGFibGVDb3B5XTsKICAgICAg
ICAgZG91YmxlIHRpbWVSYXRpbyA9ICh0aW1lIC0gc3RhcnRUaW1lKSAvIChlbmRUaW1lIC0gc3Rh
cnRUaW1lKTsKLSAgICAgICAgbmV3RXZlbnRbSElERXZlbnRUaW1lT2Zmc2V0S2V5XSA9IFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOih0aW1lKV07CisgICAgICAgIG5ld0V2ZW50W0hJREV2ZW50
VGltZU9mZnNldEtleV0gPSBAKHRpbWUpOwogICAgICAgICAKICAgICAgICAgTlNFbnVtZXJhdG9y
ICpzdGFydEVudW1lcmF0b3IgPSBbc3RhcnRUb3VjaGVzIG9iamVjdEVudW1lcmF0b3JdOwogICAg
ICAgICBOU0RpY3Rpb25hcnkgKnN0YXJ0VG91Y2g7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggNWUzM2YxZjU2Mzg4MzZiZmI2ZjYw
NjQ4YjEwNzk4ODVhNDY4NGYyMS4uNjQxNzgyY2E5N2UxZGFmYjkwMDkxOWRiMTliMzQ3NGE1NTQz
ODhlNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbQpAQCAtMjIzLDEwICsyMjMsMTAgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmNoYW5n
ZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxvYXQgbmV3U2NhbGUpCiAKICAgICAvLyBJbnN0ZWFkIG9m
IHJlLWNvbnN0cnVjdGluZyB0aGUgY3VycmVudCB3aW5kb3csIGxldCdzIGZha2UgcmVzaXplIGl0
IHRvIGVuc3VyZSB0aGF0IHRoZSBzY2FsZSBjaGFuZ2UgZ2V0cyBwaWNrZWQgdXAuCiAgICAgZm9y
Y2VXaW5kb3dGcmFtZXNDaGFuZ2VkKCk7CisKICAgICAvLyBDaGFuZ2luZyB0aGUgc2NhbGluZyBm
YWN0b3Igb24gdGhlIHdpbmRvdyBkb2VzIG5vdCB0cmlnZ2VyIE5TV2luZG93RGlkQ2hhbmdlQmFj
a2luZ1Byb3BlcnRpZXNOb3RpZmljYXRpb24uIFdlIG5lZWQgdG8gc2VuZCB0aGUgbm90aWZpY2F0
aW9uIG1hbnVhbGx5LgotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBub3RpZmlj
YXRpb25Vc2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjFdKTsKLSAgICBbbm90aWZpY2F0aW9uVXNlckluZm8gc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOmN1cnJlbnRTY2FsZV0gZm9yS2V5Ok5TQmFja2luZ1By
b3BlcnR5T2xkU2NhbGVGYWN0b3JLZXldOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6TlNXaW5kb3dEaWRDaGFuZ2VCYWNraW5n
UHJvcGVydGllc05vdGlmaWNhdGlvbiBvYmplY3Q6bV93aW5kb3cgdXNlckluZm86bm90aWZpY2F0
aW9uVXNlckluZm8uZ2V0KCldOworICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBAeyBOU0Jh
Y2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5OiBAKGN1cnJlbnRTY2FsZSkgfTsKKyAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
Ok5TV2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXNOb3RpZmljYXRpb24gb2JqZWN0Om1f
d2luZG93IHVzZXJJbmZvOnVzZXJJbmZvXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZv
cmNlV2luZG93RnJhbWVzQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDhjNTk1NTUxNjE3ZmUwMzk1YWFlNDc3OTc2Yjk3
ZjQ4ZmZlNjlmYjYuLjQ5OGUzNzJmMjA0MzQzMGVjYjllN2UyODkzZTA0MzZkZTZlYTU2MDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBA
IC00NCw3ICs0NCw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2
YXRlLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1l
RXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgTlNTb3VuZCAoKQogKyAodm9pZClfc2V0QWxlcnRUeXBl
OihOU1VJbnRlZ2VyKWFsZXJ0VHlwZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBhNDRjZmQwYzE4ZDU4NGJkNDk1MjJh
MWY0OGJkZGM1NDNjYTk2OGM4Li5lOTU2ZWVkOTJhMGE1ODc4MzY2ZWM1MzAwOTcyMjQxNjk4ODU2
NzljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJN
YWM6OmFjdGl2YXRlQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykK
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dChKU1N0cmluZ1JlZiB0ZXh0KQog
ewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IE5TUGFzdGVib2FyZC5nZW5lcmFsUGFz
dGVib2FyZDsKLSAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0Ok5TUGFzdGVib2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOkBbTlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gb3duZXI6bmlsXTsKICAg
ICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGV4dC0+c3RyaW5nKCkgZm9yVHlwZTpOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQppbmRleCAxYjYyODZjZjkzMTIzZWJm
OTAxM2M2MTI2MmExNjYyYjZkOTkwZWMxLi4wZDMwNGZjMjg0YTI4ODNjZmQwZjcyZTJmOTY2MDUw
Y2YyNWVkYjBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRU
ZXN0UnVubmVyUGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9X
ZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQpAQCAtODIsNyArODIsNyBAQCArICh2b2lkKXJl
bGVhc2VMb2NhbFBhc3RlYm9hcmRzCiAvLyBvZiB0aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRo
YXQgaXMgcGFzc2VkIGFyb3VuZAogLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAq
KXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiB7Ci0gICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBl
czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3duZXI6bmV3T3duZXJdOworICAgIHJl
dHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6QFt0eXBlXSBvd25lcjpuZXdPd25lcl07CiB9CiAKIEBl
bmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395864</attachid>
            <date>2020-04-08 13:51:48 -0700</date>
            <delta_ts>2020-04-08 14:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210138-20200408135147.patch</filename>
            <type>text/plain</type>
            <size>478509</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NzI5N2EwYzBkYjNlNjEyODVjMTI3ZDdlYzhlZWJjZmUwMjRiZjVjLi4zNmNhY2QxMWI5NmQ5M2Uw
YzRkYzA1MzNiY2JlNDA5ZTE2MTQ2NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0V2l0aG91dENvcHkpOiBVc2UgQCgpLgorICAgICAgICAodmFsdWVUb051bWJlcik6IERp
dHRvLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAoLVtUZXN0T2Jq
ZWN0IGNhbGxiYWNrOl0pOiBVc2UgQFtdLCBAKCksIGFuZCBAe30uCisgICAgICAgICgtW1RleHRY
WVogY2xpY2tdKTogRGl0dG8uCisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOiBEaXR0
by4KKwogMjAyMC0wNC0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIFRocmVhZGluZyBKU0dsb2JhbE9iamVjdCBpbiBSZWdFeHA6Om1hdGNoIHBy
b3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGFmM2E5YThhZjVjNDQyYzY0YjI2YzYwNmQzOWRhN2FkN2YwYjk3MjcuLjQy
ZjA1MDNkNGNmZTM5ZGU2ZjgwOWJiODA4MzFlNzlhY2FkNmE1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRp
b21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBWZWN0
b3JDb2NvYS5oLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZTogRGl0dG8uCisKKyAg
ICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVk
ZS4KKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2EubW06IERpdHRvLgorCisgICAgICAgICog
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg6IEFkZGVkLiBDb250YWlucyBjcmVhdGVOU0FycmF5IGFu
ZCBtYWtlVmVjdG9yCisgICAgICAgIGZ1bmN0aW9uIHRlbXBsYXRlcyBmb3IgY29udmVydGluZyBO
U0FycmF5IHRvIGFuZCBmcm9tIFZlY3Rvci4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOiBBZGRlZCBtYWtlTlNBcnJheUVsZW1lbnQgYW5kIG1ha2VWZWN0b3JFbGVtZW50CisgICAg
ICAgIGZ1bmN0aW9ucywgbWFraW5nIGNyZWF0ZU5TQXJyYXkgYW5kIG1ha2VWZWN0b3IgY29tcGF0
aWJsZSB3aXRoIFN0cmluZy4KKyAgICAgICAgKiB3dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5t
bToKKyAgICAgICAgKFdURjo6bWFrZU5TQXJyYXlFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChX
VEY6Om1ha2VWZWN0b3JFbGVtZW50KTogQWRkZWQuCisKIDIwMjAtMDQtMDggIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVhcnJhbmdlIGFuZCBzaW1w
bGlmeSBzb21lIEpTQyBmZWF0dXJlIGZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2MDMzMThhZmJkZjRh
ZDQ1ZjM1NTMyYjNhNWU3YjRjYzE0MzM1Mi4uOTM0NjlmMTY3NWZhOWM1ZjRiZWZkYmQyMzY0YmVh
NjgyOTI3OGIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1OCBAQAorMjAyMC0wNC0wNyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBO
U0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRk
ZWQgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZlY3Rvci4KKyAgICAgICAgLSBVc2UgY3JlYXRlTlNB
cnJheSBhbmQgbWFrZVZlY3RvcjxTdHJpbmc+IGluIG1hbnkgcGxhY2VzIHdoZXJlIHdlIGNvbnZl
cnQKKyAgICAgICAgICBiZXR3ZWVuIE5TQXJyYXkgYW5kIFZlY3RvciwgcmVwbGFjaW5nIG11bHRp
cGxlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0IHdlcmUKKyAgICAgICAgICBkb2luZyB0aGUgc2Ft
ZSBqb2IgYmVmb3JlOyBsYXRlciBjYW4gdXNlIHRoZW0gZXZlbiBtb3JlLgorICAgICAgICAtIFVz
ZSBAW10gbWFueSBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU0FycmF5
LgorICAgICAgICAtIFVzZSBAe30gbWFueSBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9y
ZWxlYXNlZCBOU0RpY3Rpb25hcnkuCisgICAgICAgIC0gVXNlIEAoKSBtYW55IHBsYWNlcyB3aGVy
ZSB3ZSBjcmVhdGUgYW4gYXV0b3JlbGVhc2VkIE5TTnVtYmVyLgorCisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6IE1vdmVkIEZsb2F0L0ludFJlY3RNYWMubW0gdG8gRmxvYXQvSW50UmVjdENv
Y29hLm1tLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IERpdHRvLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAg
ICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKTogVXNlIEAoKS4KKyAgICAg
ICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKTogVXNlIEAoKS4KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0
aW9uXSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IF9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6dG9FbmRNYXJrZXI6YXR0cmlidXRlZDpdKTogVXNlIEBb
XS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZWxlbWVudHNGb3JS
YW5nZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgdGV4dE1hcmtlcnNGb3JSYW5nZTpdKTogVXNlIEBbXS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UmVw
bGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KTogVXNlIEAoKS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlQb3N0ZWRO
b3RpZmljYXRpb246dXNlckluZm86XSk6CisgICAgICAgIFVzZSBAe30uCisgICAgICAgIChtYWtl
VmVjdG9yRWxlbWVudCk6IEFkZWQgb3ZlcmxvYWQgZm9yIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXku
CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8QWNjZXNzaWJp
bGl0eVNlYXJjaEtleT4uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlUZXh0Q3Jp
dGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4K
KyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVk
QXR0cmlidXRlKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUpOiBVc2UgQCgpLgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRC
bG9ja3F1b3RlTGV2ZWwpOiBVc2UgQCgpLgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRI
ZWFkaW5nTGV2ZWwpOiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdKTogVXNlIEBbXS4KKyAgICAgICAgKGNv
bnZlcnRTdHJpbmdzVG9OU0FycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAg
ICBVc2UgQCgpLCBAW10sIGFuZCBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1l
dGVyOl0pOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IF9jb252ZXJ0VmFsdWVUb09i
amNWYWx1ZTpvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6XSk6CisgICAgICAgIFVzZSBAKCku
CisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChkZWZhdWx0
UGFyYWdyYXBoU3R5bGUpOiBVc2UgQFtdLgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6Y29tcHV0
ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCk6IFVzZSBAKCkuCisgICAgICAgIChIVE1MQ29udmVydGVy
OjpfcHJvY2Vzc01ldGFFbGVtZW50V2l0aE5hbWUpOiBVc2UgQCgpLgorICAgICAgICAoSFRNTENv
bnZlcnRlcjo6X2FkZFRhYmxlRm9yRWxlbWVudCk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBwYWdl
L2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlv
bnNGb3JDdXJyZW50Um9vdCBjb25zdCk6IFVzZSBAW10uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOiBVc2UgbWFrZVZlY3RvcjxTdHJp
bmc+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0Lmg6IEFkZGVkIG1h
a2VOU0FycmF5RWxlbWVudCBvdmVybG9hZCBzbyB3ZSBjYW4KKyAgICAgICAgY29udmVydCBWZWN0
b3I8RmxvYXRSZWN0PiBpbnRvIE5TQXJyYXk8TlNWYWx1ZT4uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5oOiBTaW1pbGFybHkgZm9yIEludFJlY3QuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRl
T3B0aW9ucyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKTogVXNlIEBbXS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOiBVc2UgQCgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKTogVXNlIEAoKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNo
ZWNrUGxheWFiaWxpdHkpOiBVc2UgQFtdLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOiBVc2UgQHt9IGFuZCBA
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OnZhbHVlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hOjpjb3B5RnJvbVZhbHVlRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VG9WYWx1ZUZyb20pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VmFsdWVzRnJvbSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEtleVRpbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weUtleVRpbWVzRnJvbSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRpbWluZ0Z1
bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNv
cHlUaW1pbmdGdW5jdGlvbnNGcm9tKToKKyAgICAgICAgVXNlIEAoKSwgQFtdLCBtb2Rlcm4gZm9y
IGxvb3BzLCBhdXRvLCBhbmQgYWxsb2NhdGUgd2l0aCBjYXBhY2l0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24p
OiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0
Q29jb2EubW06IE1vdmVkIGZyb20gbWFjL0Zsb2F0UmVjdE1hYy5tbS4KKyAgICAgICAgKFdlYkNv
cmU6Om1ha2VOU0FycmF5RWxlbWVudCk6IEFkZGVkIHNvIHdlIGNhbiBjb252ZXJ0IFZlY3RvcjxG
bG9hdFJlY3Q+CisgICAgICAgIGludG8gTlNBcnJheTxOU1ZhbHVlPi4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW06IE1vdmVkIGZyb20gbWFjL0ludFJl
Y3RNYWMubW0uCisgICAgICAgIChXZWJDb3JlOjptYWtlTlNBcnJheUVsZW1lbnQpOiBTaW1pbGFy
bHkgZm9yIEludFJlY3QuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KTogVXNl
IGNsYW1wVG8gdG8gYmUgY29uc2lzdGVudCB3aXRoIHdoYXQKKyAgICAgICAgZW5jbG9zaW5nSW50
UmVjdChGbG9hdFJlY3QpIGRvZXMgKHdoaWxlIGZpeGluZyBjaGVjay13ZWJraXQtc3R5bGUgY29t
cGxhaW50KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW06CisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxheV0pOiBBZGQgV2ViQ29yZSBuYW1lc3Bh
Y2UgcHJlZml4OyBuZWVkZWQgZGVwZW5kaW5nIG9uCisgICAgICAgIGhvdyBzb3VyY2VzIGdldCB1
bmlmaWVkIChhbmQgd2FzIGFmZmVjdGluZyBteSBsb2NhbCBidWlsZCB3aGVuIGl0IHRlbXBvcmFy
aWx5CisgICAgICAgIGhhZCBhbiBhZGRpdGlvbmFsIHNvdXJjZSBmaWxlKS4KKyAgICAgICAgKC1b
V2ViR0xMYXllciBhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXplOnVzaW5nQWxw
aGE6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJHTExheWVyIGJpbmRGcmFtZWJ1ZmZlclRvTmV4
dEF2YWlsYWJsZVN1cmZhY2VdKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udE1vZGlm
aWNhdGlvbkF0dHJpYnV0ZXMpOiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6Z2V0VHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6IFVzZSBjcmVhdGVOU0FycmF5
LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSk6IFVzZSBAW10uCisgICAgICAgICog
cGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tOgorICAgICAgICAoLVtXQUtWaWV3IHN1YnZpZXdz
XSk6IERpdHR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKTog
VXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZSBjb25zdCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4u
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKTogVXNlIG1h
a2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0VHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5oOiBSZW1vdmVkCisgICAgICAgIHdlYkNvcmVTdHJpbmdWZWN0
b3JGcm9tTlNTdHJpbmdBcnJheSwgcmVwbGFjZWQgYnkgbWFrZVZlY3RvcjxTdHJpbmc+CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dCk6IFVzZSBAKCkuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24pOiBV
c2UgQCgpLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqIF9OdWxs
YWJsZSAgY29uc3QpOiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00gY29uc3QpOiBVc2UgQHt9LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QpOiBVc2UgQFlFUy9ATk8uCisKIDIwMjAtMDQtMDggIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlh
LmNvbT4KIAogICAgICAgICBNYWtlIG1vcmUgdXNlIG9mIEZyYW1lTG9hZGVyIHBhZ2VJRC9mcmFt
ZUlEIGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGQ1MWIyMmUzZjI2MzNiM2NlNmM4OTRiYzExODgyOTIy
NTU5ODFhYS4uNzAxOWEyNGM4NmMwYjg0MGVjZmM1ODQxZWM4OTVhNjQ1YTAxN2NmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNjAgQEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5
LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW06IFJlbW92ZSB1bmVlZGVkIGluY2x1ZGUuCisgICAgICAgICog
UGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbTogRGl0dG8uCisKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBs
YWNlZE5TQ29uY3JldGVUYXNrX2xhdW5jaCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAg
ICAgIChXZWJLaXQ6OnJlcGxhY2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9v
cHRpb25zX2NvbmZpZ3VyYXRpb25fZXJyb3IpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAq
IFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0Ojp0b1N1cHBvcnRlZE5ldHdvcmtzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJl
cXVlc3QpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJF
cnJvcnNDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTlNFcnJvcik6IFVzZSBAe30u
CisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKTogVXNlIEBbXS4KKyAgICAgICAgKFdl
YktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
UGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFz
dGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50
aWZpZXJzOl0pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2dldEFjdGl2
ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSk6
IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06
CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpm
b3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRl
bnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmpl
Y3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlz
dDphc3NvY2lhdGVkVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNj
cmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2Fj
eVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtX
S1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25s
eTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0ZWRVUkw6Y29udGVudFdv
cmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlv
blRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFz
c29jaWF0ZWRVUkw6Y29udGVudFdvcmxkOmRlZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uOl0p
OgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0dXBQYWdl
Q29uZmlndXJhdGlvbjpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX2NvcnNEaXNhYmxpbmdQYXR0ZXJuc10pOiBVc2UgY3JlYXRl
TlNBcnJheS4KKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06XSk6IFVzZSBAKCkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW06CisgICAgICAgICgt
W19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbiBub3RpZmljYXRpb25zXSk6IFVzZSBjcmVhdGVOU0Fy
cmF5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRz
Lm1tOgorICAgICAgICAoLVtfV0tDdXN0b21IZWFkZXJGaWVsZHMgdGhpcmRQYXJ0eURvbWFpbnNd
KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW19XS0N1c3RvbUhlYWRlckZpZWxkcyBz
ZXRUaGlyZFBhcnR5RG9tYWluczpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAg
ICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzXSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM6XSk6IFVzZSBtYWtlVmVj
dG9yPFN0cmluZz4uCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbHdh
eXNSZXZhbGlkYXRlZFVSTFNjaGVtZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgt
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXM6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oOgorICAgICAgICAoQVBJOjp0b1N0
cmluZ1ZlY3Rvcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0
aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6
dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdp
dGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0
OmJhc2VVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3Ry
aW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6IFVz
ZSBAW10uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlv
bik6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKTogVXNlIEBbXS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbGxlY3RLZXlib2FyZExheW91dENvbW1hbmRz
Rm9yRXZlbnQpOiBVc2UgQFtdLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1Bs
dWdpblByb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1By
b3h5OjpsYXVuY2hQcm9jZXNzKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgIChXZWJLaXQ6
OmlzSmF2YVVwZGF0ZXJVUkwpOiBVc2UgQFtdLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzUHJveHk6OmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwpOiBVc2UgQHt9IGFuZCBjcmVhdGVOU0Fy
cmF5LgorICAgICAgICAoV2ViS2l0Ojppc1NpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwpOiBVc2Ug
QFtdLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNl
cnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OkhpZFNlcnZpY2UpOiBVc2Ug
QCgpIGFuZCBmaXhlZCBhbiBvdmVyLXJlbGVhc2UgbWlzdGFrZS4KKyAgICAgICAgVGhpcyBjb2Rl
IHdhcyBkb2luZyBhZG9wdE5TIG9uIHRoZSByZXN1bHQgb2YgK1tOU051bWJlcldpdGhJbnQ6XSwg
d2hpY2ggaXMgaW5jb3JyZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xv
Y2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOiBVc2UgQFtdLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgdGV4dFN0eWxpbmdBdFBvc2l0aW9uOmluRGlyZWN0aW9uOl0pOiBVc2Ug
QCgpLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxl
Y3Rpb25Db21tYW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKTogVXNlIGNyZWF0ZU5TQXJyYXku
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nl
c3Npb25XaXRoUmVnaXN0cmF0aW9uTGlzdHM6c3RhZ2VkRHJhZ1NvdXJjZTpdKToKKyAgICAgICAg
Rml4ZWQgYSB3YXN0ZWZ1bCBjYWxsIHRvIGF1dG9yZWxlYXNlIHdoZXJlIHdlIGFyZSBhZGRpbmcg
YW4gaXRlbSB0byBhIGRpY3Rpb25hcnkuIENhbGxpbmcgZ2V0CisgICAgICAgIGlzIG1vcmUgZWZm
aWNpZW50IGFuZCBzdGlsbCBjb3JyZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgaW1h
Z2VQaWNrZXJDb250cm9sbGVyOmRpZEZpbmlzaFBpY2tpbmdNZWRpYVdpdGhJbmZvOl0pOiBVc2Ug
QFtdLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5t
bToKKyAgICAgICAgKC1bV0tDb2xvck1hdHJpeFZpZXcgaW5pdFdpdGhGcmFtZTpjb2xvck1hdHJp
eDpdKTogUmVtb3ZlZCB1bmVlZGVkIFJldGFpblB0cgorICAgICAgICBsb2NhbCB2YXJpYWJsZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAo
V2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OnNob3cpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBVc2UgY3Jl
YXRlTlNBcnJheS4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JX
b3JkKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW06CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hZGp1c3RQcmlu
dGluZ01hcmdpbnNGb3JIZWFkZXJBbmRGb290ZXJdKTogVXNlIEAoKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYXJyYXlGcm9tUmVj
dHMpOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmlu
Z01hdGNoZXNXaXRoUmVjdHM6ZGlkV3JhcEFyb3VuZDpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1h
Yy5tbToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBub3RpZnlB
Y2Nlc3NpYmlsaXR5Q2xpZW50czpdKTogVXNlIEB7fQorICAgICAgICBhbmQgZml4IGEgYnVnIHdo
ZXJlIHRoaXMgd2FzIGNyZWF0aW5nIGEgYmFja3dhcmRzIGRpY3Rpb25hcnkuIFNvIHRoaXMgbmV2
ZXIKKyAgICAgICAgY291bGQgaGF2ZSBiZWVuIHdvcmtpbmcgYmVmb3JlLCBtYWtpbmcgbWUgd29u
ZGVyIGhvdyB3ZSB0ZXN0IGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VhcmNoVGhlV2ViKTog
VXNlIEBbXS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTUludGVybmFscy5oOiBSZW1vdmVkIHRvTlNBcnJheS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJL
aXQ6OnRvTlNBcnJheSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgdGV4dFJl
Y3RzXSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIHRleHRS
ZWN0c10pOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFj
L0luamVjdGVkQnVuZGxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6
c2V0QnVuZGxlUGFyYW1ldGVyKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Om1h
a2VSZW5kZXJMYXllcik6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBVc2UgQCgpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQ
YWludGluZyk6IFVzZSBAe30uCisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6IFVzZSBAe30uCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgorICAg
ICAgICBSZW1vdmVkIGFuIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5QWN0aW9u
TmFtZXNdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCBhY2Nlc3NpYmlsaXR5Q2hpbGRyZW5dKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5n
Pi4KKwogMjAyMC0wNC0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXSBDcmFzaCB1bmRlciBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA4M2EwZDk1YzQ4MjA2NzFmNzNi
NjFiYTdiNjYwNTYwYmQ0YjFhNmRmLi5mNjY3ZDk5Y2NhNmU1MGM1YjQ3N2UzZmMwNDlhOTZlMTZm
MmY5NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRo
cm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudElPUzo6cnVuT3BlblBhbmVsKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAg
ICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRpb25QaHJhc2VB
bHRlcm5hdGl2ZXM6XSk6CisgICAgICAgIFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaDoKKyAgICAgICAgQWRk
ZWQgI2lmIHNvIHRoYXQgdGhpcyBjb3JyZWN0bHkgZG9lc24ndCBjb21waWxlIGFueXRoaW5nIG9u
IE1hYy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKCtb
V2ViUERGVmlldyBzdXBwb3J0ZWRNSU1FVHlwZXNdKTogVXNlIEBbXS4KKwogMjAyMC0wNC0wNCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBsaXZl
IHJhbmdlcyBpbiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCA1ODJjMDRlNDQ0NzE2YWFjMzRkMzdhZTZhMzEzYzhiYzU2NDY0NjM4Li44NTY5
M2VhOWI3MTAyMDg0MGFlMjQwZTRlYTYzOGUyMzgyZGQ5NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDIwLTA0LTA3ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXksIE5TRGlj
dGlvbmFyeSwgYW5kIE5TTnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAg
ICAgICAoa2l0KTogRGVsZXRlZCBvdmVybG9hZCB0aGF0IHRha2VzIFZlY3RvcjxJbnRSZWN0Pi4K
KyAgICAgICAgKC1bRE9NTm9kZSB0ZXh0UmVjdHNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAg
ICAgICgtW0RPTVJhbmdlIHRleHRSZWN0c10pOiBEaXR0by4KKworICAgICAgICAqIERPTS9FeGNl
cHRpb25IYW5kbGVycy5tbToKKyAgICAgICAgKHJhaXNlRE9NRXJyb3JFeGNlcHRpb24pOiBVc2Ug
QCgpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAg
ICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dKTogVXNlIEB7
fS4KKworICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKCtbV2ViSGlz
dG9yeVByaXZhdGUgaW5pdGlhbGl6ZV0pOiBVc2UgQHt9LgorICAgICAgICAoLVtXZWJIaXN0b3J5
IF9zZW5kTm90aWZpY2F0aW9uOmVudHJpZXM6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBIaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJv
bURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAg
ICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOiBVc2Ug
Y3JlYXRlTlNBcnJheSBhbmQgQCgpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJVUkxzV2l0aFRp
dGxlcy5tOgorICAgICAgICAoK1tXZWJVUkxzV2l0aFRpdGxlcyBhcnJheVdpdGhJRlVSTHNXaXRo
VGl0bGVzUGJvYXJkVHlwZV0pOiBVc2UgQFtdLgorICAgICAgICAoK1tXZWJVUkxzV2l0aFRpdGxl
cyB3cml0ZVVSTHM6YW5kVGl0bGVzOnRvUGFzdGVib2FyZDpdKTogVXNlIEBbXS4KKworICAgICAg
ICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIHN0YXRpc3RpY3NdKTog
VXNlIEBbXSwgQHt9LCBhbmQgQCgpLgorICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
bW06CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIG1lbW9yeVN0YXRpc3RpY3NdKTogRGl0
dG8uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdEVycm9ycy5tOgorICAgICAgICAoLVtOU0Vycm9y
IF93ZWJraXRfaW5pdFdpdGhEb21haW46Y29kZTpVUkw6XSk6IFVzZSBAe30uCisgICAgICAgICgr
W05TRXJyb3IgX3JlZ2lzdGVyV2ViS2l0RXJyb3JzXSk6IFVzZSBAKCkuCisgICAgICAgICgtW05T
RXJyb3IgX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOmNvbnRlbnRVUkw6cGx1Z2luUGFnZVVSTDpw
bHVnaW5OYW1lOk1JTUVUeXBlOl0pOiBVc2UgQCgpLgorCisgICAgICAgICogTWlzYy9XZWJLaXRO
U1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2ludDpm
b250OnRleHRDb2xvcjpdKTogVXNlIEB7fS4KKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl93aWR0
aFdpdGhGb250Ol0pOiBVc2UgQHt9LgorCisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBNaXNjL1dl
Yk5TUGFzdGVib2FyZEV4dHJhcy5tbToKKyAgICAgICAgKCtbTlNQYXN0ZWJvYXJkIF93ZWJfZHJh
Z1R5cGVzRm9yVVJMXSk6IFVzZSBAW10uCisgICAgICAgICgtW05TUGFzdGVib2FyZCBfd2ViX3dy
aXRlVVJMOmFuZFRpdGxlOnR5cGVzOl0pOiBVc2UgQFtdLgorICAgICAgICAoK1tOU1Bhc3RlYm9h
cmQgX3dlYl9zZXRGaW5kUGFzdGVib2FyZFN0cmluZzp3aXRoT3duZXI6XSk6IFVzZSBAW10uCisK
KyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1
ZGUuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBs
dWdpbkhvc3QpOiBVc2UgQHt9LgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChXS1BDSWRlbnRpZmllckluZm8pOiBVc2UgQCgp
LgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmFkZFZh
bHVlVG9BcnJheSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAg
ICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tOiBEaXR0by4KKworICAgICAgICAq
IFBsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW06CisgICAgICAgICgtW1dlYlBsdWdp
bkNvbnRhaW5lckNoZWNrIF9hY3Rpb25JbmZvcm1hdGlvbldpdGhVUkw6XSk6IFVzZSBAe30uCisK
KyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJQ
bHVnaW5EYXRhYmFzZSBfZGVmYXVsdFBsdWdJblBhdGhzXSk6IFVzZSBAW10uCisKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VN
YW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoQ29ycmVj
dGlvblBhbmVsOjpzaG93KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOiBVc2UgQCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJp
bmdDb252ZXJzaW9uKTogVXNlIEAoKS4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vl
c3Nlc0ZvcldvcmQpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSBjb25zdCk6IFVzZSBAKCkuCisgICAgICAgIChraXQp
OiBEZWxldGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChw
bHVnaW5WaWV3KTogVXNlIEB7fS4KKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQbHVnaW4pOiBVc2UgY3JlYXRlTlNBcnJheSwgQHt9LCBhbmQgQCgpLgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOiBVc2UgY3JlYXRlTlNB
cnJheS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLm1tOgorICAgICAgICAoLVtXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxl
bmFtZXM6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgtW1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyIGNob29zZUZpbGVuYW1lOmRpc3BsYXlTdHJpbmc6aWNvbkltYWdlOl0p
OiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBjaG9vc2VG
aWxlbmFtZXM6ZGlzcGxheVN0cmluZzppY29uSW1hZ2U6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmlu
Zz4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlci5tbToKKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVT
ZWxlY3Rpb25TZXJ2aWNlQ2xpY2spOgorICAgICAgICBDb21tZW50IG91dCBhbiB1bnVzZWQgYXJn
dW1lbnQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfcmVjdHNGb3JSYW5nZTpdKTogVXNlIGNyZWF0ZU5TQXJycmF5LgorICAgICAgICAoLVtX
ZWJGcmFtZSBfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOnBhZ2VTaXplOl0p
OiBVc2UgY3JlYXRlTlNBcnJheSBhbmQgQFtdLgorICAgICAgICAoLVtXZWJGcmFtZSBjaGlsZEZy
YW1lc10pOiBVc2UgQFtdLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAg
ICAgICAgKCtbV2ViSFRNTFZpZXcgX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBlc10pOiBVc2UgQFtd
LgorICAgICAgICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERl
c3RpbmF0aW9uOl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBrbm93c1BhZ2VS
YW5nZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjb3B5Rm9u
dDpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ludGVycHJldEtleUV2ZW50
OnNhdmluZ0NvbW1hbmRzOl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxl
Y3Rpb25UZXh0UmVjdHNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW1dlYkhUTUxW
aWV3IHJlY3RzRm9yVGV4dE1hdGNoZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkgYW5kIEBbXS4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW06IFJlbW92ZWQgdW5uZWVk
ZWQgaW5jbHVkZS4KKyAgICAgICAgKCtbV2ViUERGUmVwcmVzZW50YXRpb24gcG9zdFNjcmlwdE1J
TUVUeXBlc10pOiBVc2UgQFtdLgorICAgICAgICAoK1tXZWJQREZSZXByZXNlbnRhdGlvbiBzdXBw
b3J0ZWRNSU1FVHlwZXNdKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmll
dy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBlbGVtZW50QXRQb2ludDpdKTogVXNlIEB7fSBh
bmQgQCgpLgorICAgICAgICAoLVtXZWJQREZWaWV3IHZpZXdTdGF0ZV0pOiBVc2UgQCgpLgorICAg
ICAgICAoLVtXZWJQREZWaWV3IHNlbGVjdGlvblRleHRSZWN0c10pOiBVc2UgQFtdLgorICAgICAg
ICAoLVtXZWJQREZWaWV3IHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbl0pOiBVc2UgQFtdLgor
ICAgICAgICAoLVtXZWJQREZWaWV3IF9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZlbnQ6XSk6IFVz
ZSBAKCkuCisgICAgICAgICgtW1dlYlBERlZpZXcgX29wZW5XaXRoRmluZGVyOl0pOiBVc2UgQHt9
IGFuZCBAKCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6IFVzZSBAKCkuCisgICAgICAgICgtW1dl
YlByZWZlcmVuY2VzIF9zZXRVbnNpZ25lZEludFZhbHVlOmZvcktleTpdKTogVXNlIEAoKS4KKyAg
ICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9T
eXN0ZW1FbmNvZGluZ10pOiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3k6XSk6IFVzZSBAe30gYW5kIEAoKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6
c291cmNlUGFyc2VkKTogVXNlIEAoKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIgX3BsYWNlUG9wdXBXaW5kb3c6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogVXNl
IG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKC1bV2ViVmlldyBfY29udGVudHNPZlVzZXJJ
bnRlcmZhY2VJdGVtOl0pOiBVc2UgQCgpLgorICAgICAgICAodG9TdHJpbmdWZWN0b3IpOiBEZWxl
dGVkLgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3Vy
Y2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpd
KToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKCtbV2ViVmlldyBf
YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNr
bGlzdDppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4K
KyAgICAgICAgKC1bV2ViVmlldyBfZWxlbWVudEF0V2luZG93UG9pbnQ6XSk6IFVzZSBAe30uCisg
ICAgICAgICgtW1dlYlZpZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10u
CisgICAgICAgICgtW1dlYlZpZXcgcGFzdGVib2FyZFR5cGVzRm9yRWxlbWVudDpdKTogVXNlIEBb
XS4KKyAgICAgICAgKC1bV2ViVmlldyByZWN0c0ZvclRleHRNYXRjaGVzXSk6IFVzZSBAW10uCisg
ICAgICAgICgtW1dlYlZpZXcgX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTpdKTogVXNlIEBbXS4K
KyAgICAgICAgKC1bV2ViVmlldyBfc2V0Rm9udFdoaXRlbGlzdDpdKTogVXNlIG1ha2VWZWN0b3I8
U3RyaW5nPi4KKwogMjAyMC0wNC0wOCAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjU5NzA4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGY2MGQxZmIzM2U0NmM1MzczM2MwOTAzMTIzOWQ4ZjY5
YjRhYjEzZDguLmM5MWU2ZWEyNzhhYjE5NmE2MWViZmZhYzRjOGMwODA0ZGY3MzExNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbXBvcnQg
PHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL0xv
Y2suaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CkBAIC03NDIsNyArNzQxLDcgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29u
dmVydG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0dsb2JhbENvbnRleHRSZWYg
Y28KICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgbnVtYmVyLCBzbyBpdCB3aWxsIHVuaXF1
ZSBjb3JyZWN0bHkgaW4gdGhlIGhhc2ggbWFwIC0KICAgICAgICAgICAgIC8vIGl0J3MgbmljZXIg
bm90IHRvIGxlYWsgdGhpcyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwhCiAgICAgICAg
ICAgICB2YWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJpbWl0aXZlID0gW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCAwKV07CisgICAg
ICAgICAgICBwcmltaXRpdmUgPSBAKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgMCkp
OwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB2YWx1ZSkpIHsK
ICAgICAgICAgICAgIC8vIFdvdWxkIGJlIG5pY2UgdG8gdW5pcXVlIHN0cmluZ3MsIHRvby4KICAg
ICAgICAgICAgIGF1dG8ganNzdHJpbmcgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIHZhbHVlLCAwKSk7CkBAIC04MzcsNyArODM2LDcgQEAgaWQgdmFsdWVUb051bWJlcihK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXAKICAgICAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpID8g
QFlFUyA6IEBOTzsKIAogICAgIGRvdWJsZSByZXN1bHQgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4
dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOipleGNlcHRpb24gPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigp
IDogcmVzdWx0XTsKKyAgICByZXR1cm4gQCgqZXhjZXB0aW9uID8gc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKSA6IHJlc3VsdCk7CiB9CiAKIGlkIHZhbHVlVG9TdHJpbmco
SlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpp
bmRleCBlZmFmMzBkZDQ0ZTYyYzNmOTE3ZmI2YmVlNmViMWI4ZjBhYzYxNjU2Li40MjJjYmE1N2Y5
NDE1MDc3MzAyNzQ0MjlhMThjNDQxODlkOTczMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAgLSAoTlNTdHJpbmcgKil0
ZXN0QXJndW1lbnRUeXBlc1dpdGhJbnQ6KGludClpIGRvdWJsZTooZG91YmxlKWQgYm9vbGVhbjoo
Qk9PTCliIHMKIH0KIC0gKHZvaWQpY2FsbGJhY2s6KEpTVmFsdWUgKilmdW5jdGlvbgogewotICAg
IFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6NDJdXV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1l
bnRzOkBbQCg0MildXTsKIH0KIC0gKHZvaWQpYm9ndXNDYWxsYmFjazoodm9pZCheKShpbnQpKWZ1
bmN0aW9uCiB7CkBAIC0xOTksNyArMTk5LDcgQEAgLSAodm9pZCljbGljawogICAgICAgICByZXR1
cm47CiAKICAgICBKU1ZhbHVlICpmdW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsK
LSAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKKyAgICBb
ZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6QFtdXTsKIH0KIEBlbmQKIApAQCAtMTE3MSwxMCAr
MTE3MSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgY29u
dGV4dFtAImhhbmRsZVRoZURpY3Rpb25hcnkiXSA9IF4oTlNEaWN0aW9uYXJ5ICpkaWN0KSB7CiAg
ICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmV4cGVjdGVkRGljdCA9IEB7Ci0gICAgICAgICAgICAg
ICAgQCJmb28iIDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sCi0gICAgICAgICAgICAgICAg
QCJiYXIiIDogQHsKLSAgICAgICAgICAgICAgICAgICAgQCJiYXoiOiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDoyXQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBAImZvbyI6IEAo
MSksCisgICAgICAgICAgICAgICAgQCJiYXIiOiBAeyBAImJheiI6IEAoMikgfQogICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAicmVjdXJzaXZlbHkgY29udmVydCBuZXN0
ZWQgZGljdGlvbmFyaWVzIiwgW2RpY3QgaXNFcXVhbFRvRGljdGlvbmFyeTpleHBlY3RlZERpY3Rd
KTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGJhMjVlOTM0YTExNjIxZDM4ODg1YzUwODA3YmNhYTg5N2MyOWE4OGMuLmU0M2IzYjRjMmE5
OGZmNWFhNTNlNjg0ODFjM2EzMTI0NmM2MDZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDc3LDYgKzQ3Nyw3IEBACiAJCTgzRjJCQURFMUNGOTUyNEUw
MDNFOTlDMyAvKiBGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3
MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkY0NkY1RjFBMjg0
MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMjQxNjU3
MjQzQkMyRTUwMDMyRkFBRSAvKiBWZWN0b3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMxOTFGQ0I2QUI5MDAz
MkVDRDYgLyogU3RyaW5nSGFzaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0cmluZ0hhc2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzg0QjczRTIw
REVBMjg0MDA1QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0ZYUENC
cmlkZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDIxOEExRThD
MzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1MjQsNiArMTUyNSw3IEBACiAJCQkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0
IC8qIFNvZnRMaW5raW5nLmggKi8sCiAJCQkJRUI2MUVEQzYyNDA5Q0NDMDAwMUVGRTM2IC8qIFN5
c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi8sCiAJCQkJNUNDMEVFODYyMTYyQkMyMjAwQTFBODQyIC8q
IFVSTENvY29hLm1tICovLAorCQkJCTkzMjQxNjU3MjQzQkMyRTUwMDMyRkFBRSAvKiBWZWN0b3JD
b2NvYS5oICovLAogCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCA2ZTg2MzMyY2UyM2ZmMmUzM2ZjMTYzNjY1MjczMmQ4MDU5ZjZkZWRiLi5iNzRhMjc3
MjhlYzU1MDA3NTU4N2UwYTQ4MjVjMjE4MWZiOTU5MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMTgsNiArMTgsNyBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAg
ICBjb2NvYS9OU1VSTEV4dHJhcy5oCiAgICAgY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Q29jb2EuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKKyAgICBjb2NvYS9WZWN0b3JDb2NvYS5o
CiAKICAgICBkYXJ3aW4vV2Vha0xpbmtpbmcuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFz
Lm1tCmluZGV4IDNhNGZjYTk5MWY0NmJmZmJhNzQyZDZiNTkxM2NkZGQ4NWIxZGU1MDUuLjQ3ZGVl
NjI5NTZhMzM0NGY2OTUxMzhmZTY4M2I4NGI2Yzc4MzEzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05T
VVJMRXh0cmFzLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgog
CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1VSTEhlbHBlcnMu
aD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KaW5k
ZXggMjNlZTllNmU4ZDBjMTI5Y2U1M2RlYzlhNGY4Mzc0NzY0NDBlMDY4Yy4uNmJkYWU4MGJkNjc2
MTZhMTQ4OTIxYmZmNjM5MGJkMDEzYmExOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Y29jb2EvVVJMQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0K
QEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCA8d3RmL1VSTC5o
PgogCi0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9VUkxQ
YXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL2Nv
Y29hL05TVVJMRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNjI5YzJmM2MxODQwZWUwMWNlMDRhOTZlN2JmNzI4OWUzYjQ2OWQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApAQCAtMCwwICsxLDc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8v
IFNwZWNpYWxpemUgdGhlIGJlaGF2aW9yIG9mIHRoZXNlIGZ1bmN0aW9ucyBieSBvdmVybG9hZGlu
ZyB0aGUgbWFrZU5TQXJyYXlFbGVtZW50CisvLyBmdW5jdGlvbnMgYW5kIG1ha2VWZWN0b3JFbGVt
ZW50IGZ1bmN0aW9ucy4gVGhlIG1ha2VOU0FycmF5RWxlbWVudCBmdW5jdGlvbiB0YWtlcworLy8g
YSBjb25zdCYgdG8gYSB2ZWN0b3IgZWxlbWVudCBhbmQgY2FuIHJldHVybiBlaXRoZXIgYSBSZXRh
aW5QdHI8aWQ+IG9yIGFuIGlkCisvLyBpZiB0aGUgdmFsdWUgaXMgYXV0b3JlbGVhc2VkLiBUaGUg
bWFrZVZlY3RvckVsZW1lbnQgZnVuY3Rpb24gdGFrZXMgYW4gaWdub3JlZAorLy8gcG9pbnRlciB0
byB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZSwgbWFraW5nIGFyZ3VtZW50LWRlcGVuZGVudCBsb29r
dXAgd29yaywgYW5kIGFuCisvLyBpZCBmb3IgdGhlIGFycmF5IGVsZW1lbnQsIGFuZCByZXR1cm5z
IGFuIE9wdGlvbmFsPFQ+IG9mIHRoZSB0aGUgdmVjdG9yIGVsZW1lbnQsCisvLyBhbGxvd2luZyB1
cyB0byBmaWx0ZXIgb3V0IGFycmF5IGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBvZiB0aGUgZXhwZWN0
ZWQgdHlwZS4KKy8vCisvLyAgICBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25z
dCBWZWN0b3JFbGVtZW50VHlwZSYgdmVjdG9yRWxlbWVudCk7CisvLyAgICAgICAgLW9yLQorLy8g
ICAgaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFZlY3RvckVsZW1lbnRUeXBlJiB2ZWN0b3JF
bGVtZW50KTsKKy8vCisvLyAgICBPcHRpb25hbDxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3Rv
ckVsZW1lbnQoY29uc3QgVmVjdG9yRWxlbWVudFR5cGUqLCBpZCBhcnJheUVsZW1lbnQpOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNB
cnJheShjb25zdCBWZWN0b3JUeXBlJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JFbGVtZW50
VHlwZT4gVmVjdG9yPFZlY3RvckVsZW1lbnRUeXBlPiBtYWtlVmVjdG9yKE5TQXJyYXkgKik7CisK
Ky8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlcyBhYm92
ZS4KKwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4gUmV0YWluUHRyPE5TQXJyYXk+IGNy
ZWF0ZU5TQXJyYXkoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKQoreworICAgIGF1dG8gc2l6ZSA9
IHZlY3Rvci5zaXplKCk7CisgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogdmVjdG9yKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmdldFB0cihtYWtlTlNBcnJheUVs
ZW1lbnQoZWxlbWVudCkpXTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFZlY3RvckVsZW1lbnRUeXBlPiBWZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0
b3IoTlNBcnJheSAqYXJyYXkpCit7CisgICAgVmVjdG9yPFZlY3RvckVsZW1lbnRUeXBlPiB2ZWN0
b3I7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOworICAg
IGZvciAoaWQgZWxlbWVudCBpbiBhcnJheSkgeworICAgICAgICBjb25zdGV4cHIgY29uc3QgVmVj
dG9yRWxlbWVudFR5cGUqIHR5cGVkTnVsbCA9IG51bGxwdHI7CisgICAgICAgIGlmIChhdXRvIHZl
Y3RvckVsZW1lbnQgPSBtYWtlVmVjdG9yRWxlbWVudCh0eXBlZE51bGwsIGVsZW1lbnQpKQorICAg
ICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2ZWN0b3JFbGVtZW50KSk7
CisgICAgfQorICAgIHJldHVybiB2ZWN0b3I7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6Om1ha2VWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBjMmFkZmJl
NjgwMjVhZWFhZmZkNmU2NmQzZjFhMGM3OTRiZDRkYjBjLi5hMjM3MGM3OWI2OGI0MjMwNjQ2YWU0
N2Q0YWZjM2U2ZTU1NDRhNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ1NCw2ICs0
NTQsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0
PFN0cmluZz4gewogICAgIHN0YXRpYyBTdHJpbmcgZmx1c2goTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgdm9pZCopIHsgcmV0dXJuIHsgY2hhcmFjdGVycywgbGVuZ3RoIH07IH0K
IH07CiAKKyNpZmRlZiBfX09CSkNfXworCitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPGlk
PiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
T3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBTdHJpbmcqLCBpZCk7CisK
KyNlbmRpZgorCiAvLyBEZWZpbml0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBpbmxpbmUg
U3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29j
b2EvU3RyaW5nQ29jb2EubW0KaW5kZXggMWJmYzUyOGEyMWZhNTQ0YWI1YzQzNjM0NDYzNTQ2ZWI2
OThiODc3Yy4uOTU4YmNmMDdiODY2NDcwNDFiMzM2MjYxMDhjODc2ZTNkOTQ2NzI3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCkBAIC00OCw0ICs0OCwxNiBAQCBT
dHJpbmc6OlN0cmluZyhOU1N0cmluZyAqc3RyKQogICAgIH0KIH0KIAorUmV0YWluUHRyPGlkPiBt
YWtlTlNBcnJheUVsZW1lbnQoY29uc3QgU3RyaW5nJiB2ZWN0b3JFbGVtZW50KQoreworICAgIHJl
dHVybiBhZG9wdE5TKChfX2JyaWRnZV90cmFuc2ZlciBpZCl2ZWN0b3JFbGVtZW50LmNyZWF0ZUNG
U3RyaW5nKCkubGVha1JlZigpKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxl
bWVudChjb25zdCBTdHJpbmcqLCBpZCBhcnJheUVsZW1lbnQpCit7CisgICAgaWYgKCFbYXJyYXlF
bGVtZW50IGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiB7IHsgYXJyYXlFbGVtZW50IH0gfTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBjMjNlNDk0NzA0OGY5OGZjZjQ4ZTFhYTNjZGYwYTVh
YjkwOTIyYzVmLi42MjJiNDNhZDA5ZmM0Mzc0MmQ0YjVlMWZiZDNhODY3MzQyYzA1MWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzA3LDE2ICszMDcsMTggQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25N
YXRyaXhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKIAot
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlw
dGlvbkNvY29hLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YUNvY29hLm1tCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KQEAgLTMz
NSw3ICszMzcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0Zsb2F0UmVjdE1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMu
bW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0zNDMsNyArMzQ0
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ljb25NYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMubW0KLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW50UmVjdE1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXpl
TWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGZmYzYxYjQ4NjU1MjBkZmE3N2VkYTRiYTRkMDk3NjJk
NjJlZWIzMTYuLjBiYWZkMzZmYTY1ODc3NjAyMzU4ZjdmZWY5YTdkYjU0MmMxZDZiZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtMzE1LDYgKzMxNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1VUSVJlZ2lzdHJ5LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YXNjYWRlQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQpAQCAt
MzI0LDYgKzMyNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQpAQCAtMzY3LDcgKzM2OSw2IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db2xvck1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UG9pbnRNYWMubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9GbG9hdFNpemVNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzc1
LDcgKzM3Niw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMubW0KLXBsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbnRSZWN0TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50U2l6ZU1h
Yy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZDUzY2Y1
ZDJkNzc4ZmQ4YzZiZDZhYTI2NmUwZTcxODRiMDE3MDUuLjdhY2RjNGRjMmM2MTBkNTkxMTU3MmZk
ZjM3NjliY2ZhNDc2NDg1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzY5LDExICsxMjc2OSwxMSBAQAogCQlCMjc1MzU0
ODBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludFNpemVIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjI3NTM1NEIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmxvYXRQb2ludE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1NEMwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UmVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGbG9hdFJlY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyNzUz
NTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFJlY3RDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFNpemVN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTRFMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEYw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEludFBvaW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnRSZWN0TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVj
dENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFJl
Y3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NTEwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFNpemVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW50U2l6ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjI3NTM1NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUx
NDcsNyArMjUxNDcsNiBAQAogCQkJCTQ5QUYyRDZCMTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuY3BwICovLAogCQkJCTJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLywKIAkJCQlCMjc1MzU0QjBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLywKLQkJCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2
NEYgLyogRmxvYXRSZWN0TWFjLm1tICovLAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJDRTY0RiAv
KiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzQwRDAwQTVDMTAwMzAwNzREIC8qIEZv
bnRDYWNoZU1hYy5tbSAqLywKIAkJCQlCMkFGRkM3NTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAgKi8sCkBAIC0yNTE1Niw3ICsyNTE1NSw2IEBACiAJCQkJQjI3
NTM1OEQwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25NYWMubW0gKi8sCiAJCQkJQjI3NTM1NEUwQjA1
MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tICovLAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRQb2ludE1hYy5tbSAqLywKLQkJCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYg
LyogSW50UmVjdE1hYy5tbSAqLywKIAkJCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50
U2l6ZU1hYy5tbSAqLywKIAkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1l
bnRJbWFnZU1hYy5tbSAqLywKIAkJCQkxNjNFODhGNTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCkBAIC0yNTUxMyw2ICsyNTUxMSw3IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQlGNDhEMkFBMzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICov
LAogCQkJCUY0OEQyQUE0MjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLm1tICovLAorCQkJ
CUIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDb2NvYS5tbSAqLywKIAkJCQkx
QzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovLAogCQkJ
CUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovLAogCQkJ
CUIyQUZGQzc4MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tICovLApAQCAt
MjU1MjUsNiArMjU1MjQsNyBAQAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLAorCQkJCUIyNzUzNTUwMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbnRSZWN0Q29jb2EubW0gKi8sCiAJCQkJMkQwQjRBQTkxOERBMUNDRDAwNDM0
REUxIC8qIElPU3VyZmFjZS5oICovLAogCQkJCTJEMEI0QUFBMThEQTFDQ0QwMDQzNERFMSAvKiBJ
T1N1cmZhY2UubW0gKi8sCiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFj
ZVBvb2xDb2NvYS5tbSAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
aW5kZXggMTQ5YTZmMjY5ODcwM2U5M2FjNzExNjFmOTIzYzBlOWE0ZjFkYThhNi4uYWQ0NzFjYzI4
NjhlMjMwYWNjNDYxYjMzNWYzNDQzYjVmM2Y3M2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTIxMzYsNyArMjEzNiw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0
cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcq
IGF0dHJTCiAgICAgaW50IHF1b3RlTGV2ZWwgPSBibG9ja3F1b3RlTGV2ZWwocmVuZGVyZXIpOwog
ICAgIAogICAgIGlmIChxdW90ZUxldmVsKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgdmFsdWU6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAgICAgICBbYXR0clN0cmlu
ZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgdmFsdWU6
QChxdW90ZUxldmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQogICAgICAgICBbYXR0clN0cmlu
ZyByZW1vdmVBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgcmFu
Z2U6cmFuZ2VdOwogfQpAQCAtMjE1MCw3ICsyMTUwLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmkKICAgICBpbnQgcGFyZW50SGVhZGluZ0xldmVsID0gcGFyZW50T2JqZWN0LT5oZWFkaW5nTGV2
ZWwoKTsKICAgICAKICAgICBpZiAocGFyZW50SGVhZGluZ0xldmVsKQotICAgICAgICBbYXR0clN0
cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5IZWFkaW5nTGV2ZWwgdmFsdWU6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cGFyZW50SGVhZGluZ0xldmVsXSByYW5nZTpyYW5nZV07
CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhl
YWRpbmdMZXZlbCB2YWx1ZTpAKHBhcmVudEhlYWRpbmdMZXZlbCkgcmFuZ2U6cmFuZ2VdOwogICAg
IGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0
eVRva2VuSGVhZGluZ0xldmVsIHJhbmdlOnJhbmdlXTsKIH0KQEAgLTI0NDMsNyArMjQ0Myw3IEBA
IC0gKE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb24KICAgICBpZiAoIXN0YXJ0
TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJrZXIsIGVuZE1hcmtlciwgbmls
XTsKKyAgICByZXR1cm4gQFtzdGFydE1hcmtlciwgZW5kTWFya2VyXTsKIH0KIAogLSAoV2ViQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyRm9yUG9zaXRpb246KE5TSW50ZWdlcilw
b3NpdGlvbgpAQCAtMjQ2OCw3ICsyNDY4LDcgQEAgLSAoaWQpX3N0cmluZ0Zyb21TdGFydE1hcmtl
cjooV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKXN0YXJ0TWFya2VyIHRvRW5kTWFya2UKICAg
ICBpZiAoIXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgCi0gICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRNYXJrZXJz
OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJrZXIsIGVuZE1hcmtlciwgbmlsXSBh
dHRyaWJ1dGVkOmF0dHJpYnV0ZWRdOworICAgIE5TQXJyYXkqIGFycmF5ID0gW3NlbGYgYXJyYXlP
ZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0TWFya2VyLCBlbmRNYXJrZXJdIGF0dHJpYnV0ZWQ6
YXR0cmlidXRlZF07CiAgICAgQ2xhc3MgcmV0dXJuQ2xhc3MgPSBhdHRyaWJ1dGVkID8gW05TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIDogW05TTXV0YWJsZVN0cmluZyBjbGFzc107CiAg
ICAgaWQgcmV0dXJuVmFsdWUgPSBbWyhOU1N0cmluZyAqKVtyZXR1cm5DbGFzcyBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwogICAgIApAQCAtMjU4Niw3ICsyNTg2LDcgQEAgLSAoTlNBcnJheSAq
KWVsZW1lbnRzRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKICAgICBpZiAoIXN0YXJ0TWFya2VyIHx8
ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNBcnJheSogYXJy
YXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOltOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6c3RhcnRNYXJrZXIsIGVuZE1hcmtlciwgbmlsXSBhdHRyaWJ1dGVkOk5PXTsKKyAgICBO
U0FycmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6QFtzdGFydE1h
cmtlciwgZW5kTWFya2VyXSBhdHRyaWJ1dGVkOk5PXTsKICAgICBOU011dGFibGVBcnJheSogZWxl
bWVudHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIGZvciAoaWQgZWxlbWVudCBpbiBh
cnJheSkgewogICAgICAgICBpZiAoIVtlbGVtZW50IGlzS2luZE9mQ2xhc3M6W0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGNsYXNzXV0pCkBAIC0yODUyLDcgKzI4NTIsNyBAQCAtIChOU0FycmF5
ICopdGV4dE1hcmtlcnNGb3JSYW5nZTooUmVmUHRyPFJhbmdlPilyYW5nZQogICAgIFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiBlbmQgPSBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3Rh
cnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTpyYW5nZSBpc1N0YXJ0Ok5PIGNhY2hlOnNlbGYuYXhC
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCldOwogICAgIGlmICghc3RhcnQgfHwgIWVuZCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czpzdGFydCwgZW5kLCBuaWxdOworICAgIHJldHVybiBAW3N0YXJ0LCBlbmRdOwogfQogCiAtIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlFeHBhbmRlZFRleHRWYWx1ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggNjg4
NzgyY2ZkZWQ3YWU1MzdkNGE3NGIyNmIyY2E4NDk1MjE0MTMyYi4uYjE1Y2QwNTgwNTJlNmJkNmNm
MzRkMTUzNGZhZmI4MTFmY2QwYTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC00NDUsNyArNDQ1LDcgQEAgc3Rh
dGljIE5TRGljdGlvbmFyeSAqdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeShBWENvcmVP
YmplY3QmIG9iamVjdCwgQVhUZXgKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpjaGFuZ2UgPSBb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NF07CiAgICAgW2No
YW5nZSBzZXRPYmplY3Q6QChwbGF0Zm9ybUVkaXRUeXBlRm9yV2ViQ29yZUVkaXRUeXBlKHR5cGUp
KSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRUeXBlXTsKICAgICBpZiAobGVuZ3RoID4g
QVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGgpIHsKLSAgICAgICAgW2NoYW5nZSBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGVuZ3RoXSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5
VGV4dENoYW5nZVZhbHVlTGVuZ3RoXTsKKyAgICAgICAgW2NoYW5nZSBzZXRPYmplY3Q6QChsZW5n
dGgpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVMZW5ndGhdOwogICAgICAg
ICB0ZXh0ID0gW3RleHQgc3Vic3RyaW5nVG9JbmRleDpBWFZhbHVlQ2hhbmdlVHJ1bmNhdGlvbkxl
bmd0aF07CiAgICAgfQogICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHQgZm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VWYWx1ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0KaW5kZXggMWFlNmFhOWM1OGU0ZmU0MWY1YWRkNThkYjU2NWE1M2E1YzI3OWM4OC4u
ZTBiYTBiZjQwOGJhMDUzOTc1ZGE0N2M4Yzg3ODFjNWUwZDk3NTA1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtNjUsNiArNjUsNyBAQAogI2ltcG9ydCAi
VGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW1wb3J0ICJWaXNpYmxlVW5pdHMuaCIKICNpbXBvcnQg
IldlYkNvcmVGcmFtZVZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgog
CiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5o
PgpAQCAtNjE0LDcgKzYxNSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjooTlNTdHJpbmcgKilub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOihOCiAgICAgaWYgKGFj
Y2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zKSB7CiAgICAgICAgIEFTU0VSVChu
b3RpZmljYXRpb25OYW1lKTsKICAgICAgICAgdXNlckluZm8gPSBkaWN0aW9uYXJ5UmVtb3ZpbmdO
b25TdXBwb3J0ZWRUeXBlcyh1c2VySW5mbyk7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9
IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpub3RpZmljYXRpb25O
YW1lLCBAIm5vdGlmaWNhdGlvbk5hbWUiLCB1c2VySW5mbywgQCJ1c2VySW5mbyIsIG5pbF07Cisg
ICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IEB7IEAibm90aWZpY2F0aW9uTmFtZSI6IG5vdGlm
aWNhdGlvbk5hbWUsIEAidXNlckluZm8iOiB1c2VySW5mbyB9OwogICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiQVhEUlRO
b3RpZmljYXRpb24iIG9iamVjdDpzZWxmIHVzZXJJbmZvOmluZm9dOwogICAgIH0KIH0KQEAgLTY5
MSw2ICs2OTIsMTMgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0
eVNlYXJjaEtleUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHUKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihzZWFyY2hLZXkpID8gc2VhcmNoS2V5IDogQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6QW55VHlwZTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+
IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkqLCBpZCBhcnJh
eUVsZW1lbnQpCit7CisgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6TlNTdHJp
bmcuY2xhc3NdKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IHsg
YWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhhcnJheUVsZW1lbnQpIH0gfTsKK30KKwog
QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZv
clNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5
ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlKQogewogICAgIE5TU3RyaW5nICpkaXJlY3Rpb25QYXJh
bWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWERpcmVjdGlv
biJdOwpAQCAtNzI5LDE2ICs3MzcsOSBAQCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNj
ZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldAogICAgIAog
ICAgIGlmIChbc2VhcmNoS2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCiAgICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMuYXBwZW5kKGFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXlGb3JTdHJpbmcoc2VhcmNoS2V5UGFyYW1ldGVyKSk7Ci0gICAgZWxzZSBpZiAoW3NlYXJj
aEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKLSAgICAgICAg
c2l6ZV90IHNlYXJjaEtleUNvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihbc2VhcmNoS2V5UGFy
YW1ldGVyIGNvdW50XSk7Ci0gICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzZWFyY2hLZXlDb3VudCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2VhcmNoS2V5Q291bnQ7ICsraSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKnNlYXJjaEtl
eSA9IFtzZWFyY2hLZXlQYXJhbWV0ZXIgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgICAgIGlm
IChbc2VhcmNoS2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAg
ICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy51bmNoZWNrZWRBcHBlbmQoYWNjZXNzaWJpbGl0eVNl
YXJjaEtleUZvclN0cmluZyhzZWFyY2hLZXkpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKKyAg
ICBlbHNlIGlmIChbc2VhcmNoS2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xh
c3NdXSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJp
bGl0eVNlYXJjaEtleT4oc2VhcmNoS2V5UGFyYW1ldGVyKTsKKwogICAgIHJldHVybiBjcml0ZXJp
YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAzNjQw
NDMzOGQ2NTczMzYwZGUyZWEwZTcyOWFhYjY4ZDllNTliZDY1Li5iNDAzZDNmNmM1MTZmYjZiZDYw
ZmE5Y2JjZmFmYzVhNDQ0MTUyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQpAQCAtNzgsNyArNzgsNyBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJh
cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC02NDUs
MTQgKzY0NSw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0
ZXJpYSwgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24+IGFjCiAgICAgaWYgKFtyZXBsYWNlbWVu
dFN0cmluZ1BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAg
ICBvcGVyYXRpb24ucmVwbGFjZW1lbnRUZXh0ID0gcmVwbGFjZW1lbnRTdHJpbmdQYXJhbWV0ZXI7
CiAKLSAgICBpZiAoW3NlYXJjaFN0cmluZ3NQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJh
eSBjbGFzc11dKSB7Ci0gICAgICAgIHNpemVfdCBzZWFyY2hTdHJpbmdzQ291bnQgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFtzZWFyY2hTdHJpbmdzUGFyYW1ldGVyIGNvdW50XSk7Ci0gICAgICAgIGNy
aXRlcmlhLnNlYXJjaFN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWFyY2hTdHJpbmdz
Q291bnQpOwotICAgICAgICBmb3IgKE5TU3RyaW5nICpzZWFyY2hTdHJpbmcgaW4gc2VhcmNoU3Ry
aW5nc1BhcmFtZXRlcikgewotICAgICAgICAgICAgaWYgKFtzZWFyY2hTdHJpbmcgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBjcml0ZXJpYS5zZWFyY2hT
dHJpbmdzLnVuY2hlY2tlZEFwcGVuZChzZWFyY2hTdHJpbmcpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGlmIChbc2VhcmNoU3RyaW5nc1BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pCisgICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MgPSBtYWtlVmVjdG9yPFN0cmlu
Zz4oc2VhcmNoU3RyaW5nc1BhcmFtZXRlcik7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
Y3JpdGVyaWEsIG9wZXJhdGlvbik7CiB9CkBAIC02NjUsMTQgKzY1OSw4IEBAIHN0YXRpYyBBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVy
aWFGb3JQYXJhbWV0CiAgICAgTlNTdHJpbmcgKnN0YXJ0ID0gW3BhcmFtcyBvYmplY3RGb3JLZXk6
TlNBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbV07CiAgICAgTlNTdHJpbmcgKmRpcmVj
dGlvbiA9IFtwYXJhbXMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJl
Y3Rpb25dOwogCi0gICAgaWYgKFtzZWFyY2hTdHJpbmdzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSkgewotICAgICAgICBzaXplX3Qgc2VhcmNoU3RyaW5nc0NvdW50ID0gc3RhdGljX2Nh
c3Q8c2l6ZV90Pihbc2VhcmNoU3RyaW5ncyBjb3VudF0pOwotICAgICAgICBjcml0ZXJpYS5zZWFy
Y2hTdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VhcmNoU3RyaW5nc0NvdW50KTsKLSAg
ICAgICAgZm9yIChOU1N0cmluZyAqc2VhcmNoU3RyaW5nIGluIHNlYXJjaFN0cmluZ3MpIHsKLSAg
ICAgICAgICAgIGlmIChbc2VhcmNoU3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCi0gICAgICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5ncy51bmNoZWNrZWRBcHBl
bmQoc2VhcmNoU3RyaW5nKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoW3NlYXJjaFN0cmlu
Z3MgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICBjcml0ZXJpYS5zZWFy
Y2hTdHJpbmdzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHNlYXJjaFN0cmluZ3MpOwogCiAgICAgaWYg
KFtzdGFydCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAgICAgIGlmIChb
c3RhcnQgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb21C
ZWdpbl0pCkBAIC0xMDE5LDkgKzEwMDcsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmlu
Z1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbgogICAg
IC8vIHNldCBzdXBlci9zdWIgc2NyaXB0aW5nCiAgICAgVmVydGljYWxBbGlnbiBhbGlnbm1lbnQg
PSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CiAgICAgaWYgKGFsaWdubWVudCA9PSBWZXJ0aWNhbEFs
aWduOjpTdWIpCi0gICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcs
IE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6KC0xKV0sIHJhbmdlKTsKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlLCBA
KC0xKSwgcmFuZ2UpOwogICAgIGVsc2UgaWYgKGFsaWdubWVudCA9PSBWZXJ0aWNhbEFsaWduOjpT
dXBlcikKLSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDoxXSwgcmFuZ2UpOworICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRy
U3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIEAoMSksIHJh
bmdlKTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0Fj
Y2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAgIApA
QCAtMTA3NCw3ICsxMDYyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9j
a3F1b3RlTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clMKICAgICBpbnQgcXVv
dGVMZXZlbCA9IG9iai0+YmxvY2txdW90ZUxldmVsKCk7CiAgICAgCiAgICAgaWYgKHF1b3RlTGV2
ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlCbG9j
a1F1b3RlTGV2ZWxBdHRyaWJ1dGUgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cXVvdGVM
ZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6TlNB
Y2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlIHZhbHVlOkAocXVvdGVMZXZlbCkg
cmFuZ2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmli
dXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07
CiB9CkBAIC0xMTUzLDcgKzExNDEsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dEhlYWRpbmdMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaQogICAgIH0K
ICAgICAKICAgICBpZiAocGFyZW50SGVhZGluZ0xldmVsKQotICAgICAgICBbYXR0clN0cmluZyBh
ZGRBdHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6cGFyZW50SGVhZGluZ0xldmVsXSByYW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3RyaW5n
IGFkZEF0dHJpYnV0ZTpAIkFYSGVhZGluZ0xldmVsIiB2YWx1ZTpAKHBhcmVudEhlYWRpbmdMZXZl
bCkgcmFuZ2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHJhbmdlOnJhbmdlXTsKIH0KQEAgLTEzMTIsMTcgKzEz
MDAsMTcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICAvLyBB
bGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQgU2Nyb2xsVG9WaXNpYmxlLgogICAg
IC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZlcnNpb25zIGRvIG5vdCBzdXBwb3J0
IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMgdGhlbSB0byBzZWUgaXQgaW4gdGhl
IGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0aW9ucyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9u
LCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rpb24sIG5pbF07CisgICAgc3RhdGlj
IE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dN
ZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07
CiAKICAgICAvLyBBY3Rpb24gZWxlbWVudHMgYWxsb3cgUHJlc3MuCiAgICAgLy8gVGhlIG9yZGVy
IGlzIGltcG9ydGFudCB0byBWb2ljZU92ZXIsIHdoaWNoIGV4cGVjdHMgdGhlICdkZWZhdWx0JyBh
Y3Rpb24gdG8gYmUgdGhlIGZpcnN0IGFjdGlvbi4gSW4gdGhpcyBjYXNlIHRoZSBkZWZhdWx0IGFj
dGlvbiBzaG91bGQgYmUgcHJlc3MuCi0gICAgc3RhdGljIE5TQXJyYXkgKmFjdGlvbkVsZW1lbnRB
Y3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmlsaXR5
UHJlc3NBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlTY3JvbGxUb1Zpc2libGVBY3Rpb24sIG5pbF07CisgICAgc3RhdGljIE5TQXJyYXkgKmFjdGlv
bkVsZW1lbnRBY3Rpb25zID0gW0BbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNz
aWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rp
b25dIHJldGFpbl07CiAKICAgICAvLyBNZW51IGVsZW1lbnRzIGFsbG93IFByZXNzIGFuZCBDYW5j
ZWwuCiAgICAgc3RhdGljIE5TQXJyYXkgKm1lbnVFbGVtZW50QWN0aW9ucyA9IFtbYWN0aW9uRWxl
bWVudEFjdGlvbnMgYXJyYXlCeUFkZGluZ09iamVjdDpOU0FjY2Vzc2liaWxpdHlDYW5jZWxBY3Rp
b25dIHJldGFpbl07CiAKICAgICAvLyBTbGlkZXIgZWxlbWVudHMgYWxsb3cgSW5jcmVtZW50L0Rl
Y3JlbWVudC4KLSAgICBzdGF0aWMgTlNBcnJheSAqc2xpZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVs
ZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OltOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBY3Rpb24sIG5pbF1dIHJldGFpbl07CisgICAgc3RhdGljIE5TQXJyYXkgKnNs
aWRlckFjdGlvbnMgPSBbW2RlZmF1bHRFbGVtZW50QWN0aW9ucyBhcnJheUJ5QWRkaW5nT2JqZWN0
c0Zyb21BcnJheTpAW05TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlvbiwgTlNBY2Nlc3NpYmls
aXR5RGVjcmVtZW50QWN0aW9uXV0gcmV0YWluXTsKIAogICAgIE5TQXJyYXkgKmFjdGlvbnM7CiAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzUHJlc3NBY3Rpb24oKSkKQEAgLTE4ODgsMTQg
KzE4NzYsNiBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogICAgIH0KIH0KIAotc3RhdGljIE5T
TXV0YWJsZUFycmF5ICpjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmVjdG9yKQotewotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IHN0cmluZyA6IHZlY3RvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpzdHJpbmddOwotICAg
IHJldHVybiBhcnJheTsKLX0KLQogLSAoaWQpdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uCiB7
CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
c2VsZWN0aW9uKCk7CkBAIC0yNDAyLDkgKzIzODIsOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYTG9hZGVkIl0pCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOmJhY2tpbmdPYmplY3QtPmlzTG9hZGVkKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMYXlvdXRDb3VudCJdKQotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPmxheW91dENvdW50KCldOwor
ICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+bGF5b3V0Q291bnQoKSk7CiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TG9h
ZGluZ1Byb2dyZXNzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTpiYWNraW5nT2JqZWN0LT5lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKV07
CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5lc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MoKSk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZV0pCiAg
ICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3Qt
PnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKV07CiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJs
ZWRBdHRyaWJ1dGVdKQpAQCAtMjQxOCw3ICsyMzk4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gYmFja2luZ09iamVjdC0+
dGV4dExlbmd0aCgpOwogICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDApCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVu
c2lnbmVkSW50Omxlbmd0aF07CisgICAgICAgICAgICByZXR1cm4gQChsZW5ndGgpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNz
aWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0pIHsKICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFRleHQgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHQoKTsKQEAgLTI0NDcsNyArMjQy
Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAg
aWYgKGxpbmVOdW1iZXIgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsaW5lTnVtYmVyXTsKKyAgICAg
ICAgICAgIHJldHVybiBAKGxpbmVOdW1iZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTA2
LDE2ICsyNDg2LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICBpZiAoYmFja2luZ09iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlNsaWRlclRodW1iKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxv
YXQ6YmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCktPnZhbHVlRm9yUmFuZ2UoKV07CiAgICAg
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0hlYWRpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5oZWFkaW5nTGV2ZWwoKV07Cisg
ICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSk7CiAKICAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwgYmFja2luZ09i
amVjdC0+aXNNZW51SXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzU3dpdGNoKCkgfHwgYmFja2lu
Z09iamVjdC0+aXNUb2dnbGVCdXR0b24oKSkgewogICAgICAgICAgICAgc3dpdGNoIChiYWNraW5n
T2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOgotICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDowXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQCgwKTsKICAgICAg
ICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIEAoMSk7CiAgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4
ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjJdOwor
ICAgICAgICAgICAgICAgIHJldHVybiBAKDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
QEAgLTI1MzUsNyArMjUxNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFiSXRlbSgpKQot
ICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3Qt
PmlzU2VsZWN0ZWQoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5pc1Nl
bGVjdGVkKCkpOwogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0NvbG9yV2VsbCgpKSB7
CiAgICAgICAgICAgICBpbnQgciwgZywgYjsKQEAgLTI2OTEsNyArMjY3MSw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
VGFibGVDb2x1bW4oKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmJhY2tpbmdPYmplY3QtPmNvbHVtbkluZGV4
KCldOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+Y29sdW1uSW5kZXgoKSk7
CiAKICAgICAgICAgLy8gcm93cyBhdHRyaWJ1dGUgZm9yIGEgY29sdW1uIGlzIHRoZSBsaXN0IG9m
IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhhdCBjb2x1bW4gYXQgZWFjaCByb3cKICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmli
dXRlXQpAQCAtMjc0Miw3ICsyNzIyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAKICAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0IGNvbHVtbnMsIGJ1
dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1bW5zIGF0IHRoZSBs
ZWFzdC4KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBh
cnJheV07CisgICAgICAgICAgICByZXR1cm4gQFtdOwogICAgIH0KIAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdKSB7
CkBAIC0yNzYwLDEzICsyNzQwLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gcm93c0NvcHkuc2l6ZSgpOwogICAgICAg
ICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBjb3VudDsgKytrKQogICAgICAgICAgICAgICAg
IGlmIChyb3dzQ29weVtrXS0+d3JhcHBlcigpID09IHNlbGYpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmtdOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQChrKTsKIAogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlUm93KCkpCi0gICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+cm93SW5kZXgo
KV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5yb3dJbmRleCgpKTsKICAg
ICB9CiAKICAgICAvLyBUaGUgcm93cyB0aGF0IGFyZSBjb25zaWRlcmVkIGluc2lkZSB0aGlzIHJv
dy4KQEAgLTI4MDEsNyArMjc4MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICBpbnQgbGV2ZWwgPSBiYWNraW5nT2JqZWN0LT5oaWVyYXJjaGljYWxMZXZl
bCgpOwogICAgICAgICBpZiAobGV2ZWwgPiAwKQogICAgICAgICAgICAgbGV2ZWwgLT0gMTsKLSAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxldmVsXTsKKyAgICAgICAgcmV0
dXJuIEAobGV2ZWwpOwogICAgIH0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3QtPmlzRXhwYW5kZWQoKV07CkBA
IC0yODMyLDkgKzI4MTIsOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmJhY2tpbmdPYmplY3QtPmJsb2NrcXVvdGVMZXZlbCgp
XTsKKyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YmxvY2txdW90ZUxldmVsKCkpOwog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRhYmxlTGV2ZWwiXSkK
LSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPnRh
YmxlTGV2ZWwoKV07CisgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnRhYmxlTGV2ZWwo
KSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2li
aWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50czsKQEAg
LTI4NTEsNyArMjgzMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNl
cnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXSAmJiBiYWNraW5nT2JqZWN0LT5pc01l
bnVCdXR0b24oKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB1aUVsZW1lbnQgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0PigqYmFja2luZ09iamVjdCkubWVudUZv
ck1lbnVCdXR0b24oKTsKICAgICAgICAgaWYgKHVpRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dWlFbGVtZW50LT53cmFwcGVyKCldOworICAgICAg
ICAgICAgcmV0dXJuIEBbdWlFbGVtZW50LT53cmFwcGVyKCldOwogICAgIH0KIAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1l
bnRBdHRyaWJ1dGVdKSB7CkBAIC0yOTIxLDE3ICsyOTAxLDE1IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0cmlidXRlXSkKLSAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPnBvc0luU2V0
KCldOworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wb3NJblNldCgpKTsKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFTZXRT
aXplQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJh
Y2tpbmdPYmplY3QtPnNldFNpemUoKV07CisgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3Qt
PnNldFNpemUoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3QtPmlzQVJJQUdyYWJiZWQoKV07CiAKLSAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZl
Y3RzQXR0cmlidXRlXSkgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkcm9wRWZmZWN0cyA9IGJh
Y2tpbmdPYmplY3QtPmRldGVybWluZUFSSUFEcm9wRWZmZWN0cygpOwotICAgICAgICByZXR1cm4g
Y29udmVydFN0cmluZ3NUb05TQXJyYXkoZHJvcEVmZmVjdHMpOwotICAgIH0KKyAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0
cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZGV0
ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVB
dHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+cGxhY2Vob2xkZXJWYWx1
ZSgpOwpAQCAtMzAxNiw3ICsyOTk0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlET01DbGFzc0xpc3RBdHRyaWJ1dGVdKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNs
YXNzTGlzdDsKICAgICAgICAgYmFja2luZ09iamVjdC0+Y2xhc3NMaXN0KGNsYXNzTGlzdCk7Ci0g
ICAgICAgIHJldHVybiBjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShjbGFzc0xpc3QpOworICAgICAg
ICByZXR1cm4gY3JlYXRlTlNBcnJheShjbGFzc0xpc3QpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gY29ubmVjdCB0byBhIHBsdWdpbiB0aGF0IGNyZWF0
ZXMgYSBzaGFkb3cgbm9kZSBmb3IgZWRpdGluZyAobGlrZSBQREZzKS4KQEAgLTQxMDEsNyArNDA3
OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbcHJvdGVjdGVkU2VsZiB2aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdP
YmplY3QtPmxpbmVGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsKICAgICAgICAgfSk7Ci0gICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpyZXN1bHRdOworICAgICAgICByZXR1cm4g
QChyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYVGV4dE1hcmtlclJhbmdlRm9yTGluZSJdKSB7CkBAIC00MzI5LDcgKzQzMDcsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfSk7CiAgICAgICAgIGlm
IChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoSW50Omxlbmd0aF07CisgICAgICAgIHJldHVybiBAKGxlbmd0aCk7
CiAgICAgfQogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIChzbyBmYXIpLgpA
QCAtNDM3OSw3ICs0MzU3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IGJhY2tpbmdPYmplY3QtPmRvQVhMaW5lRm9y
SW5kZXgoW251bWJlciBpbnRWYWx1ZV0pOwogICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAw
KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpsaW5lTnVtYmVyXTsKKyAgICAgICAgICAgIHJldHVy
biBAKGxpbmVOdW1iZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcgKilrQVhSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCmluZGV4IGRlM2E0M2RlZjBiOTc4YzA3ODEzZDgwMDQ3MmU5Zjk5YWVmNzg0Y2UuLmU5MDYy
MjFjYTk4YzNkYWZjNzMzMzBlNTgyYTRkMWY2NmRiZjg4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTU4Niw3ICs1ODYsNyBAQCArIChp
ZClfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6KEpTQzo6SlNWYWx1ZSl2YWx1ZSBvcmlnaW5Sb290
T2JqZWN0OihSb290T2JqZWN0KgogICAgICAgICByZXR1cm4gYXNTdHJpbmcodmFsdWUpLT52YWx1
ZShyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmFzTnVt
YmVyKCldOworICAgICAgICByZXR1cm4gQCh2YWx1ZS5hc051bWJlcigpKTsKIAogICAgIGlmICh2
YWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDp2YWx1ZS5hc0Jvb2xlYW4oKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCmluZGV4IDUwNzJkNmIz
MmFjNzVkNzFjYjhmYmU1MzhjZTg3ZTE1NjM5NzI2YTMuLmU1OGVhZWRlYzAwN2U0Yjk5YzY4Mjcx
NDcyNWRlMWEyNWQ1MDk3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0yOCw3ICsyOCw4
IEBACiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKIAotI2ltcG9ydCA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L05TU3Bl
bGxDaGVja2VyLmg+CkBAIC00NywxMiArNDgsNyBAQCB1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZQog
CiBWZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKIHsKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMg
KnRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNv
bnRleHQoY29udGV4dCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVTdHJpbmdzOwot
ICAgIGFsdGVybmF0aXZlU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRleHRBbHRlcm5h
dGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpzdHJp
bmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCi0gICAgICAgIGFsdGVy
bmF0aXZlU3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoc3RyaW5nKTsKLSAgICByZXR1cm4gYWx0ZXJu
YXRpdmVTdHJpbmdzOworICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmluZz4obV9jb250ZXh0Q29u
dHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpLmFsdGVybmF0aXZlU3RyaW5n
cyk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYTU0M2Fj
MmQxYWUyYWMzOGY4Y2QyN2ZiMjU3ZmUyZDE2MjQwZGNlZi4uNGY0NjM1MjgwZDY0NTgxNDM5YWY3
Y2I1MmFlNjE1YzhlMTMzZjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1BhcmFncmFwaFN0
eWxlICpkZWZhdWx0UGFyYWdyYXBoU3R5bGUoKQogICAgIGlmICghZGVmYXVsdFBhcmFncmFwaFN0
eWxlKSB7CiAgICAgICAgIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZSA9IFtbUGxhdGZvcm1OU1BhcmFn
cmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldOwogICAgICAgICBb
ZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldERlZmF1bHRUYWJJbnRlcnZhbDozNl07Ci0gICAgICAg
IFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUgc2V0VGFiU3RvcHM6W05TQXJyYXkgYXJyYXldXTsKKyAg
ICAgICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXRUYWJTdG9wczpAW11dOwogICAgIH0KICAg
ICByZXR1cm4gZGVmYXVsdFBhcmFncmFwaFN0eWxlOwogfQpAQCAtMTAyNyw3ICsxMDI3LDcgQEAg
TlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgZmxvYXQgc3Ryb2tlV2lkdGggPSAwLjA7CiAgICAgaWYg
KF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoKSkgewogICAgICAgICBmbG9hdCB0ZXh0
U3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aCAvIChbZm9udCBwb2ludFNpemVdICogMC4wMSk7Ci0g
ICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dGV4dFN0
cm9rZVdpZHRoXSBmb3JLZXk6TlNTdHJva2VXaWR0aEF0dHJpYnV0ZU5hbWVdOworICAgICAgICBb
YXR0cnMgc2V0T2JqZWN0OkAodGV4dFN0cm9rZVdpZHRoKSBmb3JLZXk6TlNTdHJva2VXaWR0aEF0
dHJpYnV0ZU5hbWVdOwogICAgIH0KICAgICBpZiAoc3Ryb2tlQ29sb3IpCiAgICAgICAgIFthdHRy
cyBzZXRPYmplY3Q6c3Ryb2tlQ29sb3IgZm9yS2V5Ok5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1l
XTsKQEAgLTEwNDIsNyArMTA0Miw3IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29t
cHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAg
aWYgKFVJRmxvYXRJc1plcm8oa2VyblZhbCkpCiAgICAgICAgICAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRyaWJ1dGVOYW1lXTsgLy8gYXV0byBhbmQgbm9ybWFs
LCB0aGUgb3RoZXIgcG9zc2libGUgdmFsdWVzLCBhcmUgYm90aCAia2VybmluZyBlbmFibGVkIgog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6a2VyblZhbF0gZm9yS2V5Ok5TS2VybkF0dHJpYnV0ZU5hbWVd
OworICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6QChrZXJuVmFsKSBmb3JLZXk6TlNL
ZXJuQXR0cmlidXRlTmFtZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNzQsNyArMTA3NCw3
IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50KQogCiAgICAgZmxvYXQgYmFzZWxpbmVPZmZzZXQgPSAwLjA7
CiAgICAgaWYgKF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduLCBiYXNlbGluZU9mZnNldCkpCi0gICAgICAgIFthdHRycyBz
ZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YmFzZWxpbmVPZmZzZXRdIGZvcktl
eTpOU0Jhc2VsaW5lT2Zmc2V0QXR0cmlidXRlTmFtZV07CisgICAgICAgIFthdHRycyBzZXRPYmpl
Y3Q6QChiYXNlbGluZU9mZnNldCkgZm9yS2V5Ok5TQmFzZWxpbmVPZmZzZXRBdHRyaWJ1dGVOYW1l
XTsKIAogICAgIFN0cmluZyB0ZXh0U2hhZG93ID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5v
ZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlUZXh0U2hhZG93KTsKICAgICBpZiAodGV4dFNoYWRvdy5s
ZW5ndGgoKSA+IDQpIHsKQEAgLTE1NTYsNyArMTU1Niw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6
X3Byb2Nlc3NNZXRhRWxlbWVudFdpdGhOYW1lKE5TU3RyaW5nICpuYW1lLCBOU1N0cmluZyAqY29u
dGVuCiAgICAgICAgIGlmICh2ZXJzaW9uTnVtYmVyID4gMC4wKSB7CiAgICAgICAgICAgICAvLyA/
Pz8gdGhpcyBzaG91bGQgYmUga2V5ZWQgb2ZmIG9mIHZlcnNpb24gbnVtYmVyIGluIGZ1dHVyZQog
ICAgICAgICAgICAgW19kb2N1bWVudEF0dHJzIHJlbW92ZU9iamVjdEZvcktleTpOU0NvbnZlcnRl
ZERvY3VtZW50QXR0cmlidXRlXTsKLSAgICAgICAgICAgIFtfZG9jdW1lbnRBdHRycyBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmVyc2lvbk51bWJlcl0gZm9yS2V5Ok5TQ29j
b2FWZXJzaW9uRG9jdW1lbnRBdHRyaWJ1dGVdOworICAgICAgICAgICAgW19kb2N1bWVudEF0dHJz
IHNldE9iamVjdDpAKHZlcnNpb25OdW1iZXIpIGZvcktleTpOU0NvY29hVmVyc2lvbkRvY3VtZW50
QXR0cmlidXRlXTsKICAgICAgICAgfQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfSBl
bHNlIGlmIChOU09yZGVyZWRTYW1lID09IFtAIkdlbmVyYXRvciIgY29tcGFyZTpuYW1lIG9wdGlv
bnM6TlNDYXNlSW5zZW5zaXRpdmVTZWFyY2hdKSB7CkBAIC0xNjcyLDggKzE2NzIsOCBAQCB2b2lk
IEhUTUxDb252ZXJ0ZXI6Ol9hZGRUYWJsZUZvckVsZW1lbnQoRWxlbWVudCAqdGFibGVFbGVtZW50
KQogICAgIH0KICAgICAKICAgICBbX3RleHRUYWJsZXMgYWRkT2JqZWN0OnRhYmxlLmdldCgpXTsK
LSAgICBbX3RleHRUYWJsZVNwYWNpbmdzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTpjZWxsU3BhY2luZ1ZhbF1dOwotICAgIFtfdGV4dFRhYmxlUGFkZGluZ3MgYWRkT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmNlbGxQYWRkaW5nVmFsXV07CisgICAgW190ZXh0
VGFibGVTcGFjaW5ncyBhZGRPYmplY3Q6QChjZWxsU3BhY2luZ1ZhbCldOworICAgIFtfdGV4dFRh
YmxlUGFkZGluZ3MgYWRkT2JqZWN0OkAoY2VsbFBhZGRpbmdWYWwpXTsKICAgICBbX3RleHRUYWJs
ZVJvd3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjowXV07CiAgICAgW190
ZXh0VGFibGVSb3dBcnJheXMgYWRkT2JqZWN0OltOU011dGFibGVBcnJheSBhcnJheV1dOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCBjMGYzMWMyZWJjOWRkZWU5ZGM5OTQ4
Y2FmNjgwNDNlOTFmZDkwM2I0Li5hMjA3Y2IwOWI4MDYxZTdkMTk0OTk1NDVmY2QxNWNhZmZkM2Q0
MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtNzMwLDcgKzczMCw3IEBA
IE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAK
ICAgICAvLyBUaGVyZSBhcmUgbm8gcGhyYXNlcyB3aXRoIGFsdGVybmF0aXZlcywgc28gdGhlcmUg
aXMganVzdCBvbmUgaW50ZXJwcmV0YXRpb24uCiAgICAgaWYgKG1hcmtlcnNJblJvb3QuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnBsYWluVGV4dChy
YW5nZU9mUm9vdENvbnRlbnRzKV07CisgICAgICAgIHJldHVybiBAW3BsYWluVGV4dChyYW5nZU9m
Um9vdENvbnRlbnRzKV07CiAKICAgICAvLyBUaGUgbnVtYmVyIG9mIGludGVycHJldGF0aW9ucyB3
aWxsIGJlIGkxICogaTIgKiAuLi4gKiBpTiwgd2hlcmUgaVggaXMgdGhlIG51bWJlciBvZiBpbnRl
cnByZXRhdGlvbnMgZm9yIHRoZSBYdGggcGhyYXNlIHdpdGggYWx0ZXJuYXRpdmVzLgogICAgIHNp
emVfdCBpbnRlcnByZXRhdGlvbnNDb3VudCA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KaW5kZXggYTg3Y2Y1YzRl
OGY4NTZkZjdjNzkwMDExNDNmM2M3NDRjN2ZmODA2YS4uMmIzZmUwNTU4NGY5NjRlMDk5NzY4NDZh
YTEyOTgwNzZlYTRiZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwxMCArMjQsMTEgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogCi0j
aW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwx
NiArMzksNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIFZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVn
aXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0g
ICAgTlNBcnJheSAqc3RyaW5nc0FycmF5ID0gW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hhcmVk
TWFwcGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTooTlNTdHJpbmcgKil0eXBlXTsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBzdHJpbmdzVmVjdG9yID0gVmVjdG9yPFN0cmluZz4oKTsKLSAgICB1bnNp
Z25lZCBjb3VudCA9IFtzdHJpbmdzQXJyYXkgY291bnRdOwotICAgIGlmIChjb3VudCA+IDApIHsK
LSAgICAgICAgTlNFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gW3N0cmluZ3NBcnJheSBvYmplY3RF
bnVtZXJhdG9yXTsKLSAgICAgICAgTlNTdHJpbmcqIHN0cmluZzsKLSAgICAgICAgd2hpbGUgKChz
dHJpbmcgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKQotICAgICAgICAgICAgc3Ry
aW5nc1ZlY3Rvci5hcHBlbmQoc3RyaW5nKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZ3NWZWN0
b3I7CisgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihbW05TVVJMRmlsZVR5cGVNYXBwaW5n
cyBzaGFyZWRNYXBwaW5nc10gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlOnR5cGVdKTsKIH0KIAogU3Ry
aW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaAppbmRleCA0NTViYjI1MWEyNGQ0ZTY2Yzc1NTlmMDIwYTlmMzlmNTAzZDdjZmZm
Li43NWM5MjhkYTdhYTM3NDY2YjE0NmMxYzc4ZWMxMDBiNjUwY2YzMTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC0zMCwxMCArMzAsNiBA
QAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAot
I2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwotI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU0dlb21ldHJ5Lmg+Ci0jZW5kaWYKLQogI2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENH
UG9pbnQgQ0dQb2ludDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuaAppbmRleCAzMzE3MGViYzQ1NmJlODQ2YjMxN2FjMTM0YzMxNTA0NWQ3NjVl
M2ZjLi4xYjZkNDkzZTkyNmJmZWFhYTkyOWUyNjQyOGJjZDA3YWJhMjllOGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaApAQCAtMjc5LDUgKzI3OSw4
IEBAIFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgcm91bmRlZEludFJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotfQorI2lmZGVmIF9fT0JKQ19fCitXRUJD
T1JFX0VYUE9SVCBpZCBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgRmxvYXRSZWN0Jik7CisjZW5k
aWYKIAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKaW5k
ZXggZDM0ODgwYTJiMjU0N2EyODBjYjBkN2QyZjk3MzIyNTIzZGZhNmRlMi4uMTZjOTIzNjE2Y2Q1
ZGE2YzQ4ODJiYzczZTY5YTdmMjljZTEwN2MxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRQb2ludC5oCkBAIC0yOCwxNSArMjgsMTAgQEAKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAKLSNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQg
X19PQkpDX18KLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNHZW9tZXRyeS5oPgotI2VuZGlmCi0KICNp
ZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IENHUG9pbnQ7CiAjZW5kaWYKIAotCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgT1MoREFSV0lOKQogI2lmZGVmIE5TR0VPTUVU
UllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggMTIyZGQ1MDUzYjAyMWI1ZTFlMzljMDA4M2RlMWUy
NDBiNTk4ZDVlNC4uMDNjNWFhZjQ4YjBmYzM4MmMxZDkwYTBkYWIyOTZkY2JmMDFkMWNiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMjUwLDUgKzI1
MCw4IEBAIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1Jl
Y3QmKTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IEludFJlY3QmKTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
I2lmZGVmIF9fT0JKQ19fCitXRUJDT1JFX0VYUE9SVCBpZCBtYWtlTlNBcnJheUVsZW1lbnQoY29u
c3QgSW50UmVjdCYpOworI2VuZGlmCiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRleCBlZTdjNmMwYWRmZDdkM2Rl
YmRiZGM1ZGI5NWRkYjUxZDMxYjgwOTU1Li43NTY4MzQxYzc3NmQyZTAwNmJhZDBjMGFjNDNmODVi
NmE3NzA5YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5o
CkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNf
XwotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0dlb21ldHJ5Lmg+Ci0jZW5kaWYKLQogI2lmIFVTRShD
RykKIHR5cGVkZWYgc3RydWN0IENHU2l6ZSBDR1NpemU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQppbmRleCA4M2I2NDIxNzJlMTll
NjdiZTllYWJkOWE2Zjk5YWJjMzQ5MDQ4ZjIwLi44Zjg0N2I4MjczMzA4NmU4MmIyZjRlZjA1NWMz
MGEyNTJjZmU4ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQ
bGF5ZXJJdGVtLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9MYW5n
dWFnZS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdP
UkspCkBAIC0xMzIsMTAgKzEzMyw4IEBAIHZvaWQgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6
OnVwZGF0ZU9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzCiAgICAgaWYg
KCFtX3Nob3VsZFNlbGVjdE9wdGlvbkF1dG9tYXRpY2FsbHkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNMYW5ndWFnZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6dXNlclByZWZlcnJlZExhbmd1YWdl
cygpLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKCkpCi0gICAgICAgIFtuc0xhbmd1YWdlcyBhZGRPYmplY3Q6KE5TU3RyaW5nKilsYW5n
dWFnZV07Ci0gICAgTlNBcnJheSogZmlsdGVyZWRPcHRpb25zID0gW1BBTDo6Z2V0QVZNZWRpYVNl
bGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W21fbWVk
aWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXSBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJl
ZmVycmVkTGFuZ3VhZ2VzOm5zTGFuZ3VhZ2VzLmdldCgpXTsKKyAgICBOU0FycmF5KiBmaWx0ZXJl
ZE9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIG1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVjdGlvbkdyb3VwIG9wdGlvbnNdCisg
ICAgICAgIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6Y3Jl
YXRlTlNBcnJheSh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpLmdldCgpXTsKIAogICAgIGlmICgh
W2ZpbHRlcmVkT3B0aW9ucyBjb3VudF0gJiYgY2hhcmFjdGVyaXN0aWNzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ0LDExICsxNDMsNyBAQCB2b2lkIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJp
cwogICAgIGlmICghW2ZpbHRlcmVkT3B0aW9ucyBjb3VudF0pCiAgICAgICAgIGZpbHRlcmVkT3B0
aW9ucyA9IFttX21lZGlhU2VsZWN0aW9uR3JvdXAgb3B0aW9uc107CiAKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IG5zQ2hhcmFjdGVyaXN0aWNzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNoYXJhY3RlcmlzdGljcy5zaXplKCldKTsKLSAg
ICBmb3IgKGF1dG8mIGNoYXJhY3RlcmlzdGljIDogY2hhcmFjdGVyaXN0aWNzKQotICAgICAgICBb
bnNDaGFyYWN0ZXJpc3RpY3MgYWRkT2JqZWN0OihOU1N0cmluZyAqKWNoYXJhY3RlcmlzdGljXTsK
LQotICAgIE5TQXJyYXkqIG9wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzID0gW1BBTDo6Z2V0QVZN
ZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6
ZmlsdGVyZWRPcHRpb25zIHdpdGhNZWRpYUNoYXJhY3RlcmlzdGljczpuc0NoYXJhY3RlcmlzdGlj
cy5nZXQoKV07CisgICAgTlNBcnJheSogb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgPSBbUEFM
OjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIG1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zy
b21BcnJheTpmaWx0ZXJlZE9wdGlvbnMgd2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWNzOmNyZWF0ZU5T
QXJyYXkoY2hhcmFjdGVyaXN0aWNzKS5nZXQoKV07CiAgICAgaWYgKG9wdGlvbnNXaXRoQ2hhcmFj
dGVyaXN0aWNzICYmIFtvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyBjb3VudF0pCiAgICAgICAg
IGZpbHRlcmVkT3B0aW9ucyA9IG9wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCA1YTYyYTFlNDY3ZDg1NjZkMmI2YjM0MjJkNjRiOTQ4MjRkOWM2
OGQzLi44YTc3MTYyZDYzMDNlZWZmMzM3NjY4MGUzN2RhOTQwYTExOTYzNzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTY5Nyw3ICs2OTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAogfQogCiAj
aWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKLXN0YXRpYyBjb25zdCBOU0FycmF5KiBtZWRpYURlc2Ny
aXB0aW9uRm9yS2luZChQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tLaW5kIGtpbmQpCisKK3N0YXRp
YyBjb25zdCBOU0FycmF5ICptZWRpYURlc2NyaXB0aW9uRm9yS2luZChQbGF0Zm9ybVRleHRUcmFj
azo6VHJhY2tLaW5kIGtpbmQpCiB7CiAgICAgc3RhdGljIGJvb2wgbWFudWFsU2VsZWN0aW9uTW9k
ZSA9IE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0cigpICYmIE1URW5hYmxlQ2FwdGlvbjIw
MTVCZWhhdmlvclB0cigpKCk7CiAgICAgaWYgKG1hbnVhbFNlbGVjdGlvbk1vZGUpCkBAIC03MDUs
MTggKzcwNiwxOCBAQCBzdGF0aWMgY29uc3QgTlNBcnJheSogbWVkaWFEZXNjcmlwdGlvbkZvcktp
bmQoUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCBraW5kKQogCiAgICAgLy8gRklYTUU6IE1h
dGNoIHRoZXNlIHRvIGNvcnJlY3QgdHlwZXM6CiAgICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0
VHJhY2s6OkNhcHRpb24pCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2li
aWxpdHksIG5pbF07CisgICAgICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFu
c2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgXTsKIAogICAgIGlmIChraW5kID09
IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRsZSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlh
bG9nRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKKyAgICAgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBdOwogCiAg
ICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uKQotICAgICAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJh
bnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKKyAgICAgICAg
cmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9y
QWNjZXNzaWJpbGl0eSwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3Vu
ZEZvckFjY2Vzc2liaWxpdHkgXTsKIAogICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNr
OjpGb3JjZWQpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIG5pbF07CisgICAg
ICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMgXTsKIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIG5p
bF07CisgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2Vu
RGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBdOwogfQogICAgIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKQEAgLTc1NCw4ICs3
NTUsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNocm9u
aXplVGV4dFRyYWNrU3RhdGUoKQogICAgICAgICB9CiAgICAgfQogfQotI2VuZGlmCiAKKyNlbmRp
ZgogCiBzdGF0aWMgTlNVUkwgKmNhbm9uaWNhbFVSTChjb25zdCBVUkwmIHVybCkKIHsKQEAgLTc4
NSw3ICs3ODYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gb3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7ICAgIAogCi0gICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoSW50OkFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZFJlbW90ZVJl
ZmVyZW5jZVRvTG9jYWwgfCBBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRMb2NhbFJl
ZmVyZW5jZVRvUmVtb3RlXSBmb3JLZXk6QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tl
eV07CisgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OkAoQVZBc3NldFJlZmVyZW5jZVJlc3Ry
aWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9Mb2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0
cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9SZW1vdGUpIGZvcktleTpBVlVSTEFzc2V0UmVm
ZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiBoZWFkZXJGaWVsZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0pOwogCkBAIC05ODksNyArOTkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckl0ZW0oKQogCiAgICAgY29uc3QgTlNUaW1lSW50
ZXJ2YWwgYXZQbGF5ZXJPdXRwdXRBZHZhbmNlSW50ZXJ2YWwgPSAyOwogCi0gICAgUmV0YWluUHRy
PE5TQXJyYXk+IHN1YnR5cGVzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmtDTVN1YnRpdGxlRm9ybWF0VHlw
ZV9XZWJWVFRdLCBuaWxdKTsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3VidHlwZXMgPSBhZG9w
dE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkAoa0NNU3VidGl0bGVGb3JtYXRU
eXBlX1dlYlZUVCksIG5pbF0pOwogICAgIG1fbGVnaWJsZU91dHB1dCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhU3Vi
dHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbjpzdWJ0eXBlcy5nZXQoKV0pOwogICAgIFttX2xl
Z2libGVPdXRwdXQuZ2V0KCkgc2V0U3VwcHJlc3Nlc1BsYXllclJlbmRlcmluZzpZRVNdOwogCkBA
IC0xMDI4LDcgKzEwMjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNoZWNrUGxheWFiaWxpdHkoKQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAg
IGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAKLSAgICBbbV9hdkFzc2V0Lmdl
dCgpIGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6W05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czpAInBsYXlhYmxlIiwgQCJ0cmFja3MiLCBuaWxdIGNvbXBsZXRpb25IYW5kbGVyOl57Cisg
ICAgW21fYXZBc3NldC5nZXQoKSBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJw
bGF5YWJsZSIsIEAidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAg
ICAgICAgICAgICB3ZWFrVGhpcy0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uOjpBc3NldFBsYXlhYmlsaXR5
S25vd24pOwpAQCAtMjE3MSw3ICsyMTcyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCgpCiAjaWYgVVNFKFZJREVPVE9PTEJPWCkK
ICAgICBOU0RpY3Rpb25hcnkqIGF0dHJpYnV0ZXMgPSBuaWw7CiAjZWxzZQotICAgIE5TRGljdGlv
bmFyeSogYXR0cmlidXRlcyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmtDVlBpeGVsRm9ybWF0VHlwZV8z
MkJHUkFdLCBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXTsKKyAgICBOU0Rp
Y3Rpb25hcnkqIGF0dHJpYnV0ZXMgPSBAeyBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtl
eTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9OwogI2VuZGlmCiAgICAgbV92aWRlb091
dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNl
KCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6YXR0cmlidXRlc10pOwogICAgIEFTU0VS
VChtX3ZpZGVvT3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5t
bQppbmRleCBkOTdjY2IzYmRhYmFlNTMzNTdkNTI4MTljNzg4MjE3MTlmMTVlYjdmLi40ODE2YjAw
NGYxNDgxODBmYjkwMTU3OTE5Y2ViZTdiNWVkZGY1NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hLm1tCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgV0tFeHBsaWNpdEJlZ2luVGltZUZsYWcg
PSBAIldLUGxhdGZvcm1DQUFuaW1hdGlvbkV4cGxpY2l0QmVnaW5UaW1lRmxhZyI7Citjb25zdGV4
cHIgTlNTdHJpbmcgKiBjb25zdCBXS0V4cGxpY2l0QmVnaW5UaW1lRmxhZyA9IEAiV0tQbGF0Zm9y
bUNBQW5pbWF0aW9uRXhwbGljaXRCZWdpblRpbWVGbGFnIjsKIAogYm9vbCBoYXNFeHBsaWNpdEJl
Z2luVGltZShDQUFuaW1hdGlvbiAqYW5pbWF0aW9uKQogewpAQCAtMzYyLDggKzM2Miw3IEBAIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRBZGRpdGl2ZShib29sIHZhbHVlKQogCiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OnZhbHVlRnVuY3Rpb24oKSBjb25zdAogewotICAgIENBVmFsdWVGdW5jdGlvbiogdmYg
PSBbbV9hbmltYXRpb24gdmFsdWVGdW5jdGlvbl07Ci0gICAgcmV0dXJuIGZyb21DQVZhbHVlRnVu
Y3Rpb25UeXBlKFt2ZiBuYW1lXSk7CisgICAgcmV0dXJuIGZyb21DQVZhbHVlRnVuY3Rpb25UeXBl
KFtbbV9hbmltYXRpb24gdmFsdWVGdW5jdGlvbl0gbmFtZV0pOwogfQogCiB2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVGdW5jdGlvbihWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1
ZSkKQEAgLTM3NSwxNCArMzc0LDEzIEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpz
ZXRGcm9tVmFsdWUoZmxvYXQgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dmFsdWVdXTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9u
LmdldCgpKSBzZXRGcm9tVmFsdWU6QCh2YWx1ZSldOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1
ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCiAg
ICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0
RnJvbVZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6dmFsdWVdXTsKIH0KIApA
QCAtMzkwLDMyICszODgsMTkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEZy
b21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0Fu
aW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBOU0FycmF5KiBhcnJheSA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlLngoKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnko
KV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnooKV0sCi0gICAg
ICAgIG5pbF07Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlv
bi5nZXQoKSkgc2V0RnJvbVZhbHVlOmFycmF5XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6QFsgQCh2YWx1ZS54KCkp
LCBAKHZhbHVlLnkoKSksIEAodmFsdWUueigpKSBdXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OnNldEZyb21WYWx1ZShjb25zdCBDb2xvciYgdmFsdWUpCiB7CiAgICAgaWYg
KCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIE5TQXJyYXkqIGFy
cmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWUucmVkKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTp2YWx1ZS5ncmVlbigpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dmFsdWUuYmx1ZSgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUu
YWxwaGEoKV0sCi0gICAgICAgIG5pbF07Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRp
b24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOmFycmF5XTsKKyAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6
QFtAKHZhbHVlLnJlZCgpKSwgQCh2YWx1ZS5ncmVlbigpKSwgQCh2YWx1ZS5ibHVlKCkpLCBAKHZh
bHVlLmFscGhhKCkpXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRG
cm9tVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBvcGVyYXRpb24sIGludCBpbnRlcm5hbEZp
bHRlclByb3BlcnR5SW5kZXgpCiB7Ci0gICAgUmV0YWluUHRyPGlkPiB2YWx1ZSA9IFBsYXRmb3Jt
Q0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihvcGVyYXRpb24sIGludGVybmFsRmls
dGVyUHJvcGVydHlJbmRleCk7CisgICAgYXV0byB2YWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpm
aWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihvcGVyYXRpb24sIGludGVybmFsRmlsdGVyUHJvcGVydHlJ
bmRleCk7CiAgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5n
ZXQoKSkgc2V0RnJvbVZhbHVlOnZhbHVlLmdldCgpXTsKIH0KIApAQCAtNDIzLDggKzQwOCw3IEBA
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1CiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkg
fHwgIXZhbHVlLmlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgQ0FC
YXNpY0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0
aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRp
b24uZ2V0KCkpOworICAgIGF1dG8gb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2lj
QW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9h
bmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbb3RoZXJBbmltYXRpb24gZnJvbVZhbHVlXV07
CiB9CiAKQEAgLTQzMiwxNCArNDE2LDEzIEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpzZXRUb1ZhbHVlKGZsb2F0IHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigp
KQogICAgICAgICByZXR1cm47Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPiht
X2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2
YWx1ZV1dOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24u
Z2V0KCkpIHNldFRvVmFsdWU6QCh2YWx1ZSldOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYTo6c2V0VG9WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7
CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIFtz
dGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFs
dWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQogCkBAIC00NDcs
MzIgKzQzMCwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9WYWx1ZShj
b25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigp
KQogICAgICAgICByZXR1cm47Ci0KLSAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLngo
KV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnkoKV0sCi0gICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnooKV0sCi0gICAgICAgIG5pbF07
Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkg
c2V0VG9WYWx1ZTphcnJheV07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPiht
X2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpAWyBAKHZhbHVlLngoKSksIEAodmFsdWUueSgp
KSwgQCh2YWx1ZS56KCkpIF1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6
c2V0VG9WYWx1ZShjb25zdCBDb2xvciYgdmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFs
dWUucmVkKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ncmVl
bigpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuYmx1ZSgpXSwK
LSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuYWxwaGEoKV0sCi0gICAg
ICAgIG5pbF07Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlv
bi5nZXQoKSkgc2V0VG9WYWx1ZTphcnJheV07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmlt
YXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpAW0AodmFsdWUucmVkKCkpLCBA
KHZhbHVlLmdyZWVuKCkpLCBAKHZhbHVlLmJsdWUoKSksIEAodmFsdWUuYWxwaGEoKSldXTsKIH0K
IAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUoY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiBvcGVyYXRpb24sIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpCiB7
Ci0gICAgUmV0YWluUHRyPGlkPiB2YWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1
ZUZvck9wZXJhdGlvbihvcGVyYXRpb24sIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCk7Cisg
ICAgYXV0byB2YWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlv
bihvcGVyYXRpb24sIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCk7CiAgICAgW3N0YXRpY19j
YXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTp2YWx1
ZS5nZXQoKV07CiB9CiAKQEAgLTQ4MSw3ICs0NTEsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYTo6Y29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVl
KQogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpIHx8ICF2YWx1ZS5pc0Jhc2ljQW5pbWF0aW9u
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENBQmFzaWNBbmltYXRpb24qIG90aGVyQW5pbWF0
aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBhdXRvIG90aGVy
QW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3Rh
dGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVl
OltvdGhlckFuaW1hdGlvbiB0b1ZhbHVlXV07CiB9CiAKQEAgLTQ5Miw5ICs0NjIsOSBAQCB2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZhbHVlKQogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKLSAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXV1d
OworICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFs
dWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8gbnVtYmVyIDogdmFsdWUpCisgICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6QChudW1iZXIpXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1h
dGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOwogfQogCkBAIC01MDMs
MTEgKzQ3Myw5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPFRyYW5zZm9ybWF0aW9uTWF0cml4PiYgdmFsCiAgICAgaWYgKGFuaW1hdGlvblR5
cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkq
IGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFs
dWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZVtpXV1dOwotCisgICAgYXV0byBhcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZv
ciAoYXV0byYgbWF0cml4IDogdmFsdWUpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFs
dWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDptYXRyaXhdXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FL
ZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOwog
fQogCkBAIC01MTYsMTYgKzQ4NCw5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mIHZhbHVlKQogICAgIGlmIChhbmlt
YXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJs
ZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5TQXJyYXkqIG9iamVj
dCA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp2YWx1ZVtpXS54KCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWVbaV0ueSgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRG91YmxlOnZhbHVlW2ldLnooKV0sCi0gICAgICAgICAgICBuaWxdOwotICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0Om9iamVjdF07Ci0gICAgfQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHBv
aW50IDogdmFsdWUpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QFtAKHBvaW50LngoKSksIEAo
cG9pbnQueSgpKSwgQChwb2ludC56KCkpXV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVB
bmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIApAQCAt
NTM0LDE3ICs0OTUsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVz
KGNvbnN0IFZlY3RvcjxDb2xvcj4mIHZhbHVlKQogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
S2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZh
bHVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5TQXJyYXkqIG9iamVjdCA9IFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2
YWx1ZVtpXS5yZWQoKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2
YWx1ZVtpXS5ncmVlbigpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlW2ldLmJsdWUoKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZVtpXS5hbHBoYSgpXSwKLSAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6b2JqZWN0XTsKLSAgICB9CisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byYgY29sb3Ig
OiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAW0AoY29sb3IucmVkKCkpLCBAKGNv
bG9yLmdyZWVuKCkpLCBAKGNvbG9yLmJsdWUoKSksIEAoY29sb3IuYWxwaGEoKSldXTsKICAgICBb
c3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRW
YWx1ZXM6YXJyYXldOwogfQogCkBAIC01NTMsMTIgKzUwNiw5IEBAIHZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+PiYKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1
cm47CiAKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgUmV0YWluUHRyPGlkPiB2YWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1
ZUZvck9wZXJhdGlvbih2YWx1ZXNbaV0uZ2V0KCksIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRl
eCk7Ci0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmFsdWUuZ2V0KCldOwotICAgIH0KKyAgICBh
dXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlcy5zaXpl
KCldOworICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1ZXMpCisgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6UGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKHZhbHVlLmdl
dCgpLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpLmdldCgpXTsKICAgICBbc3RhdGljX2Nh
c3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJy
YXldOwogfQogCkBAIC01NjcsMzkgKzUxNywzNSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiAg
ICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSB8fCB2YWx1ZS5hbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIENBS2V5ZnJhbWVBbmltYXRp
b24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRv
d25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgp
KTsKKyAgICBhdXRvIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1h
dGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0
aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5p
bWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6W290aGVyQW5pbWF0aW9uIHZhbHVlc11dOwogfQogCiB2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZs
b2F0PiYgdmFsdWUpCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDp2
YWx1ZVtpXV1dOwotCisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhD
YXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byB0aW1lIDogdmFsdWUpCisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6QCh0aW1lKV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJh
bWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0S2V5VGltZXM6YXJyYXldOwogfQog
CiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weUtleVRpbWVzRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBv
dGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0byBv
dGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRp
Y19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0S2V5VGlt
ZXM6W290aGVyIGtleVRpbWVzXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4m
IHZhbHVlLCBib29sIHJldmVyc2UpCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05T
TXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUu
c2l6ZSgpOyArK2kpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6dG9DQU1lZGlhVGltaW5nRnVu
Y3Rpb24odmFsdWVbaV0sIHJldmVyc2UpXTsKLQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIGZ1
bmN0aW9uIDogdmFsdWUpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dG9DQU1lZGlhVGltaW5n
RnVuY3Rpb24oZnVuY3Rpb24sIHJldmVyc2UpXTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFt
ZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUaW1pbmdGdW5jdGlvbnM6YXJyYXld
OwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weVRpbWluZ0Z1bmN0aW9u
c0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgQ0FLZXlmcmFt
ZUFuaW1hdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkp
OworICAgIGF1dG8gb3RoZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkp
OwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0
KCkpIHNldFRpbWluZ0Z1bmN0aW9uczpbb3RoZXIgdGltaW5nRnVuY3Rpb25zXV07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FGaWx0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCmluZGV4IGUxYWU1ZDliNzcxMjA0MzIw
NmZjZWZhZDQ5ZTRhYmYwNTY4MDc4ZWIuLjNjNGRjZTJhYjNiMmUwOTM1NGI4Yjc0NGU5MTNjMzA2
ZjYwNzc2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQpAQCAtMzI0
LDcgKzMyNCw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVy
VmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlmIChvcGVyYXRp
b24pCiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCi0gICAgICAgIHZhbHVl
ID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKKyAgICAgICAgdmFsdWUgPSBA
KGFtb3VudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6U0VQSUE6IHsKQEAgLTM2Myw3ICszNjMsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZv
cm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAog
ICAgICAgICBpZiAob3BlcmF0aW9uKQogICAgICAgICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7CiAgICAg
ICAgIAotICAgICAgICB2YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07
CisgICAgICAgIHZhbHVlID0gQChhbW91bnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKQEAgLTM3NCw3ICszNzQsNyBAQCBS
ZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0
aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7CiAgICAg
ICAgIAogICAgICAgICBhbW91bnQgPSBkZWcycmFkKGFtb3VudCk7Ci0gICAgICAgIHZhbHVlID0g
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKKyAgICAgICAgdmFsdWUgPSBAKGFt
b3VudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
SU5WRVJUOiB7CkBAIC00NTIsNyArNDUyLDcgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3Jt
Q0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAg
ICAgICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwog
ICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91
bnRdOworICAgICAgICB2YWx1ZSA9IEAoYW1vdW50KTsKICNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC00NjMsNyArNDYzLDcgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FG
aWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAg
ICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgoZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikuc3RkRGV2aWF0aW9u
KCksIDApOwogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTphbW91bnRdOworICAgICAgICB2YWx1ZSA9IEAoYW1vdW50KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1ZmEwN2Y2
ZDhmZmFiODdkZDg5ZDlhYmNmMjA2ZjFkM2IwYTk2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbQpAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorCisjaWYgIVBMQVRG
T1JNKE1BQykKKyNpbXBvcnQgPFVJS2l0L1VJR2VvbWV0cnkuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2lkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHJlY3QpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBbTlNWYWx1ZSB2
YWx1ZVdpdGhSZWN0OnJlY3RdOworI2Vsc2UKKyAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
Q0dSZWN0OnJlY3RdOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVk
KE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQorCitGbG9hdFJlY3Q6
OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHJlY3QpCisgICAgOiBtX2xvY2F0aW9uKHJlY3Qub3Jp
Z2luKQorICAgICwgbV9zaXplKHJlY3Quc2l6ZSkKK3sKK30KKworRmxvYXRSZWN0OjpvcGVyYXRv
ciBOU1JlY3QoKSBjb25zdAoreworICAgIHJldHVybiBOU01ha2VSZWN0KHgoKSwgeSgpLCB3aWR0
aCgpLCBoZWlnaHQoKSk7Cit9CisKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDUzY2FmYTUyYTk1NmEzN2ZiYjY1MTRkNTAwNjQ2OTdhZDhjMTQ3MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCisK
KyNpZiAhUExBVEZPUk0oTUFDKQorI2ltcG9ydCA8VUlLaXQvVUlHZW9tZXRyeS5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBbTlNWYWx1ZSB2
YWx1ZVdpdGhSZWN0OnJlY3RdOworI2Vsc2UKKyAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
Q0dSZWN0OnJlY3RdOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVk
KE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQorCitJbnRSZWN0Ojpv
cGVyYXRvciBOU1JlY3QoKSBjb25zdAoreworICAgIHJldHVybiBOU01ha2VSZWN0KHgoKSwgeSgp
LCB3aWR0aCgpLCBoZWlnaHQoKSk7Cit9CisKK0ludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25z
dCBOU1JlY3QmIHJlY3QpCit7CisgICAgaW50IGxlZnQgPSBjbGFtcFRvPGludD4oc3RkOjpmbG9v
cihyZWN0Lm9yaWdpbi54KSk7CisgICAgaW50IHRvcCA9IGNsYW1wVG88aW50PihzdGQ6OmZsb29y
KHJlY3Qub3JpZ2luLnkpKTsKKyAgICBpbnQgcmlnaHQgPSBjbGFtcFRvPGludD4oc3RkOjpjZWls
KE5TTWF4WChyZWN0KSkpOworICAgIGludCBib3R0b20gPSBjbGFtcFRvPGludD4oc3RkOjpjZWls
KE5TTWF4WShyZWN0KSkpOworICAgIHJldHVybiB7IGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBi
b3R0b20gLSB0b3AgfTsKK30KKworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmluZGV4IDAwOGRiZDdkMzll
MDI0NmE3OTgxZjViNDUyM2IyYmNkYzAzOWMxZDAuLjNmZWMzNzgzMjI5MWY4YmEzZjY4N2NjMGEy
MmJiNmI2MjViMmQ1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIC0gKHZvaWQpZGlz
cGxheQogICAgICAgICBpZiAoX2xhdGNoZWRQYnVmZmVyKSB7CiAKICAgICAgICAgICAgIEdDR0xl
bnVtIHRleHR1cmUgPSBfY29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCk7Ci0gICAgICAgICAgICBn
bDo6QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQs
IHRleHR1cmUpOworICAgICAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKICAgICAgICAgICAg
IGlmICghRUdMX1JlbGVhc2VUZXhJbWFnZShfZWdsRGlzcGxheSwgX2xhdGNoZWRQYnVmZmVyLCBF
R0xfQkFDS19CVUZGRVIpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBlcnJv
ci4KICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMjI2LDcgKzIyNiw3IEBA
IC0gKHZvaWQpYWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmVXaXRoU2l6ZTooV2ViQ29yZTo6
SW50U2l6ZSlzaXplIHVzaW5nQWxwaGE6CiAgICAgICAgIEVHTF9XSURUSCwgc2l6ZS53aWR0aCgp
LAogICAgICAgICBFR0xfSEVJR0hULCBzaXplLmhlaWdodCgpLAogICAgICAgICBFR0xfSU9TVVJG
QUNFX1BMQU5FX0FOR0xFLCAwLAotICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsIEdyYXBoaWNz
Q29udGV4dEdMOjpFR0xJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LAorICAgICAgICBFR0xfVEVYVFVS
RV9UQVJHRVQsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpFR0xJT1N1cmZhY2VUZXh0dXJl
VGFyZ2V0LAogICAgICAgICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIHVzaW5n
QWxwaGEgPyBHTF9CR1JBX0VYVCA6IEdMX1JHQiwKICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFU
LCBFR0xfVEVYVFVSRV9SR0JBLAogICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCBHTF9V
TlNJR05FRF9CWVRFLApAQCAtMjYwLDcgKzI2MCw3IEBAIC0gKHZvaWQpYmluZEZyYW1lYnVmZmVy
VG9OZXh0QXZhaWxhYmxlU3VyZmFjZQogI2VsaWYgVVNFKEFOR0xFKQogICAgIEdDR0xlbnVtIHRl
eHR1cmUgPSBfY29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCk7CiAKLSAgICBnbDo6QmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQsIHRleHR1cmUpOwor
ICAgIGdsOjpCaW5kVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNl
VGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CiAKICAgICBpZiAoX2xhdGNoZWRQYnVmZmVyKSB7CiAg
ICAgICAgIGlmICghRUdMX1JlbGVhc2VUZXhJbWFnZShfZWdsRGlzcGxheSwgX2xhdGNoZWRQYnVm
ZmVyLCBFR0xfQkFDS19CVUZGRVIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQppbmRleCBjZTNmOGRiMWMxMmEwOTA5ZGJm
NTVkYzg1ZDY0OTBlOWM4ODliNjJlLi40ZjA4Y2EwNmQyNGU5ZGMzZmEwNDM0MThjM2NiZmMyODI3
NmVlMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
Rm9udENhY2hlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9Gb250Q2FjaGVJT1MubW0KQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
RGljdGlvbmFyeT4gc3lzdGVtRm9udE1vZGlmaWNhdGlvbkF0dHJpYnV0ZXMoRm9udFNlbGVjdGlv
blZhbAogICAgIFt0cmFpdHNEaWN0aW9uYXJ5IHNldE9iamVjdDpAWUVTIGZvcktleTpzdGF0aWNf
Y2FzdDxOU1N0cmluZyAqPihrQ1RGb250VUlGb250RGVzaWduVHJhaXQpXTsKIAogICAgIGlmIChp
dGFsaWMpCi0gICAgICAgIFt0cmFpdHNEaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDprQ1RGb250SXRhbGljVHJhaXRdIGZvcktleTpzdGF0aWNfY2FzdDxOU1N0cmlu
ZyAqPihrQ1RGb250U3ltYm9saWNUcmFpdCldOworICAgICAgICBbdHJhaXRzRGljdGlvbmFyeSBz
ZXRPYmplY3Q6QChrQ1RGb250SXRhbGljVHJhaXQpIGZvcktleTpzdGF0aWNfY2FzdDxOU1N0cmlu
ZyAqPihrQ1RGb250U3ltYm9saWNUcmFpdCldOwogCiAgICAgcmV0dXJuIEB7IHN0YXRpY19jYXN0
PE5TU3RyaW5nICo+KGtDVEZvbnRUcmFpdHNBdHRyaWJ1dGUpIDogdHJhaXRzRGljdGlvbmFyeS5n
ZXQoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0UmVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9GbG9hdFJlY3RNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZDM0OGFj
Y2JiZTQ0MTg1MWVhZWFhZWNhYzllZGI2NmRmZTExZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0UmVjdE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNSBOb2tpYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0j
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCi0KLUZsb2F0UmVjdDo6RmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYg
cikgOiBtX2xvY2F0aW9uKHIub3JpZ2luKSwgbV9zaXplKHIuc2l6ZSkKLXsKLX0KLQotRmxvYXRS
ZWN0OjpvcGVyYXRvciBOU1JlY3QoKSBjb25zdAotewotICAgIHJldHVybiBOU01ha2VSZWN0KHgo
KSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci19Ci0KLSNlbmRpZgotI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbnRSZWN0TWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
Yjk2MWViODM3MDQ5NTY5MTYzZTY5MWQ3MDEzMjNlY2EwNTYzNjJlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbnRSZWN0TWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWZuZGVmIE5TR0VPTUVUUllfVFlQ
RVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCi0KLUludFJlY3Q6Om9wZXJhdG9yIE5TUmVjdCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE5TTWFrZVJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdo
dCgpKTsKLX0KLQotSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5TUmVjdCYgcmVjdCkK
LXsKLSAgICBpbnQgbCA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKHJlY3Qub3JpZ2luLngpKTsK
LSAgICBpbnQgdCA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKHJlY3Qub3JpZ2luLnkpKTsKLSAg
ICBpbnQgciA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYoTlNNYXhYKHJlY3QpKSk7Ci0gICAgaW50
IGIgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKE5TTWF4WShyZWN0KSkpOwotICAgIHJldHVybiBJ
bnRSZWN0KGwsIHQsIHIgLSBsLCBiIC0gdCk7Ci19Ci0KLSNlbmRpZgotI2VuZGlmCi0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IGMwZTFmMmRhNmIzMjk4Yzc2MGFjYzU1MTFlNDZlODkxYmIyY2U5OWQuLmJhYTI1
NTUwOGMzODA4NmFjNjBjNGUxMDI5MWExM2M3MzYxNTFkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzksMTMg
KzM5LDE1IEBACiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUlt
YWdlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVBhc3RlYm9hcmQuaD4KLSNpbXBvcnQgPHBhbC9pb3Mv
VUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBv
cnQgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorI2ltcG9ydCA8cGFsL2lvcy9VSUtp
dFNvZnRMaW5rLmg+CisKICNkZWZpbmUgUEFTVEVCT0FSRF9TVVBQT1JUU19JVEVNX1BST1ZJREVS
UyAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9S
TShBUFBMRVRWKSkpCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NU
WUxFX0FORF9URUFNX0RBVEEgKFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgJiYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKICNkZWZpbmUgTlNVUkxfU1VQUE9SVFNfVElUTEUgKCFQ
TEFURk9STShNQUNDQVRBTFlTVCkpCkBAIC03NCw4ICs3Niw3IEBAIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiB7Ci0gICAgZm9yIChOU1N0
cmluZyAqcGFzdGVib2FyZFR5cGUgaW4gW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKQot
ICAgICAgICB0eXBlcy5hcHBlbmQocGFzdGVib2FyZFR5cGUpOworICAgIHR5cGVzID0gbWFrZVZl
Y3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCkBAIC01ODcsMTAgKzU4OCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJh
CiAgICAgICAgICAgICAvLyBldmVudHMsIHdlIG5lZWQgYW4gYWRkaXRpb25hbCBpbi1tZW1vcnkg
cmVwcmVzZW50YXRpb24gb2YgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJyYXkgdGhhdCBjb250YWlu
cwogICAgICAgICAgICAgLy8gYWxsIG9mIHRoZSBjdXN0b20gdHlwZXMuIFdlIHVzZSB0aGUgdGVh
bURhdGEgcHJvcGVydHksIGF2YWlsYWJsZSBvbiBOU0l0ZW1Qcm92aWRlciBvbiBpT1MsIHRvIHN0
b3JlCiAgICAgICAgICAgICAvLyB0aGlzIGluZm9ybWF0aW9uLCBzaW5jZSB0aGUgY29udGVudHMg
b2YgdGVhbURhdGEgYXJlIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSBwcmlvciB0byB0aGUgZHJvcC4K
LSAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICp0eXBlc0FzTlNBcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBk
YXRhLm9yZGVyZWRUeXBlcygpKQotICAgICAgICAgICAgICAgIFt0eXBlc0FzTlNBcnJheSBhZGRP
YmplY3Q6dHlwZV07Ci0gICAgICAgICAgICBOU0RpY3Rpb25hcnkgKnRlYW1EYXRhRGljdGlvbmFy
eSA9IEB7IEAob3JpZ2luS2V5Rm9yVGVhbURhdGEpIDogZGF0YS5vcmlnaW4oKSwgQChjdXN0b21U
eXBlc0tleUZvclRlYW1EYXRhKSA6IHR5cGVzQXNOU0FycmF5IH07CisgICAgICAgICAgICBOU0Rp
Y3Rpb25hcnkgKnRlYW1EYXRhRGljdGlvbmFyeSA9IEB7IEAob3JpZ2luS2V5Rm9yVGVhbURhdGEp
IDogZGF0YS5vcmlnaW4oKSwgQChjdXN0b21UeXBlc0tleUZvclRlYW1EYXRhKSA6IGNyZWF0ZU5T
QXJyYXkoZGF0YS5vcmRlcmVkVHlwZXMoKSkuZ2V0KCkgfTsKICAgICAgICAgICAgIGlmIChOU0Rh
dGEgKnRlYW1EYXRhID0gW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVj
dDp0ZWFtRGF0YURpY3Rpb25hcnkgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxs
cHRyXSkgewogICAgICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFRl
YW1EYXRhOnRlYW1EYXRhXTsKICAgICAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOnNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIuZ2V0KCkgZm9yVHlwZTpAKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwpAQCAtNzUzLDExICs3NTEsNyBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0eQogICAgIGlmICghW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczopXSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVzQXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dHlwZXMuc2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OihOU1N0cmlu
ZyAqKXR5cGVdOwotCi0gICAgW21fcGFzdGVib2FyZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnM6dHlwZXNBcnJheV07CisgICAgW21fcGFzdGVib2FyZCB1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnM6Y3JlYXRlTlNBcnJheSh0eXBlcykuZ2V0KCldOwogfQogCiBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDcxOTNiNjViZWJlNDlhNTA0MGRkOGQ4MTE4ZWJhMGZlZjVi
MmE4NmEuLmI4MTYzMDhiNTk2ZWM5M2YzY2M4NDlhMTI5ZDBlOTMxMTI1ZjgyNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tCkBAIC01MTgsNyArNTE4LDcgQEAgLSAoTlNBcnJheTxfX2tpbmRvZiBOU0l0ZW1Q
cm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIAogLSAodm9pZClzZXRJdGVtUHJvdmlkZXJzOihO
U0FycmF5PF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycwogewotICAg
IGl0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJzID86IFtOU0FycmF5IGFycmF5XTsKKyAgICBp
dGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVycyA/OiBAWyBdOwogICAgIGlmIChfaXRlbVByb3Zp
ZGVycyA9PSBpdGVtUHJvdmlkZXJzIHx8IFtfaXRlbVByb3ZpZGVycyBpc0VxdWFsVG9BcnJheTpp
dGVtUHJvdmlkZXJzXSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1ZpZXcubW0KaW5kZXggZTMzNWQ3NWJkY2E0ZmE3OWU1ZjNkZDAyOWEwNjhj
MzRiNjdkMzYxZi4uMjQ3ZjkyZmU5YWQzM2YzMzY5NGMzOTJiNWEyYjliOTYwYjU2YTgwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQpAQCAtMjg0LDE1ICsy
ODQsMTUgQEAgLSAoTlNBcnJheSAqKXN1YnZpZXdzCiB7CiAgICAgQ0ZBcnJheVJlZiBzdWJ2aWV3
cyA9IFdLVmlld0dldFN1YnZpZXdzKFtzZWxmIF92aWV3UmVmXSk7CiAgICAgaWYgKCFzdWJ2aWV3
cykKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbIF07
CiAgICAgCiAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChzdWJ2aWV3cyk7CiAg
ICAgaWYgKGNvdW50ID09IDApCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAg
ICAgIHJldHVybiBAWyBdOwogICAgIAogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y291bnRdOwogICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFsgXTsKICAg
ICAKICAgICBDRkFycmF5QXBwbHlGdW5jdGlvbihzdWJ2aWV3cywgQ0ZSYW5nZU1ha2UoMCwgY291
bnQpLCBfV0FLQ29weVdyYXBwZXIsICh2b2lkKilyZXN1bHQpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXgg
Yzk2NGY0MWY0MTkxZGRhMTQxYmIyZGRjMDI0NjEwYWNhMDJmNGZjNC4uMDc2MjdmMWNiNDI0Nzhi
ZDYzMzE5ZGU2Y2ZiYTMzZjczNjlkZGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbXBv
cnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nywx
MCArNTgsNyBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewotICAgIE5TQXJyYXkgKnBhc3RlYm9hcmRUeXBl
cyA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdOwotCi0gICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgW3Bhc3RlYm9hcmRUeXBlcyBjb3VudF07IGkrKykKLSAgICAgICAgdHlwZXMuYXBw
ZW5kKFtwYXN0ZWJvYXJkVHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgdHlwZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZC5nZXQoKSB0eXBlc10pOwogfQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKQEAgLTk1LDEzICs5MywxMiBAQCBpbnQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKIHsKLSAgICBOU0FycmF5KiBwYXRocyA9IFttX3Bh
c3RlYm9hcmQuZ2V0KCkgcHJvcGVydHlMaXN0Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAg
aWQgcGF0aHMgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHByb3BlcnR5TGlzdEZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdOwogICAgIGlmIChbcGF0aHMgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkgewogICAgICAgICBwYXRobmFtZXMuYXBwZW5kKChOU1N0cmluZyAqKXBhdGhzKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbcGF0aHMg
Y291bnRdOyBpKyspCi0gICAgICAgIHBhdGhuYW1lcy5hcHBlbmQoW3BhdGhzIG9iamVjdEF0SW5k
ZXg6aV0pOworICAgIHBhdGhuYW1lcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihwYXRocyk7CiB9CiAK
IHN0YXRpYyBib29sIHBhc3RlYm9hcmRNYXlDb250YWluRmlsZVBhdGhzKE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCkKQEAgLTMxNywyNCArMzE0LDE2IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpCiAKIGludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBhc3RlYm9hcmRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgW3R5cGVzLmdldCgpIGFkZE9i
amVjdDpwYXN0ZWJvYXJkVHlwZXNbaV1dOwotCi0gICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQuZ2V0
KCkgYWRkVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6bmlsXTsKKyAgICByZXR1cm4gW21fcGFzdGVi
b2FyZC5nZXQoKSBhZGRUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkg
b3duZXI6bmlsXTsKIH0KIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7Ci0gICAgYXV0byB0eXBlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoYXV0byYg
cGFzdGVib2FyZFR5cGUgOiBwYXN0ZWJvYXJkVHlwZXMpIHsKLSAgICAgICAgaWYgKCFjYW5Xcml0
ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkgewotICAgICAgICAgICAgW3R5cGVzIHJl
bW92ZUFsbE9iamVjdHNdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
W3R5cGVzIGFkZE9iamVjdDpwYXN0ZWJvYXJkVHlwZV07CisgICAgICAgIGlmICghY2FuV3JpdGVQ
YXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gW21fcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6QFtdIG93bmVyOm5pbF07CiAgICAgfQotICAgIHJldHVybiBb
bV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpuaWxdOworICAgIHJl
dHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRU
eXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3Ry
aW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLmgKaW5kZXggYWJmMmJmMTMwOGFmZGNlZGVkYjUzYTUxMTkxY2VmYzQxMWNlYmJhNS4uY2Jj
NjY2ZTVlYzdiMDQ2ODlkNzcwMDJkNzMxMThlZjUyNGJjYzg2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaApAQCAtMzIsOCArMzIsNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRj
YXJkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nVG9CZU1hdGNoZWQsIGNvbnN0IFN0cmluZyYg
d2lsZGNhcmRTdHJpbmcpOwogCi0jaWZkZWYgX19PQkpDX18KLVdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5T
U3RyaW5nICo+ICopOwotI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCi0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IGYxZjU2YjMw
ODdkMGUwOTExZjE4MGU1NTMyMDY2ZmIwZGExZTZhOWUuLjdjZDFiZDgwYWU5ZTMzZTc1NmY2NTkx
MjI0MGY3ZWQ2Y2MzM2M1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5tbQpAQCAtNTksMTUgKzU5LDQgQEAgYm9vbCBzdHJpbmdNYXRjaGVzV2ls
ZGNhcmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgd2lsZGNhcmRT
dHIKICAgICByZXR1cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbih3aWxkY2FyZFJlZ2V4
UGF0dGVyblN0cmluZyh3aWxkY2FyZFN0cmluZyksIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNp
dGl2ZSkubWF0Y2goc3RyaW5nKSAhPSAtMTsKIH0KIAotVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0
cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5zU3RyaW5n
QXJyYXkpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nVmVjdG9yOwotICAgIHN0cmluZ1Zl
Y3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtuc1N0cmluZ0FycmF5IGNvdW50XSk7Ci0KLSAg
ICBmb3IgKE5TU3RyaW5nICpuc1N0cmluZyBpbiBuc1N0cmluZ0FycmF5KQotICAgICAgICBzdHJp
bmdWZWN0b3IudW5jaGVja2VkQXBwZW5kKG5zU3RyaW5nKTsKLQotICAgIHJldHVybiBzdHJpbmdW
ZWN0b3I7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLm1tCmluZGV4IDM4MzY4ZWMyNDdkZDAwNDRhYjlkYWFlOGRmNjQwNTkwZGQw
MjAyOGIuLmM3NWQyMGYwZjc3NTYxNzlkNGY5ZDgwMjgxZWNhNDQ4ZWQyMDBiOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQpAQCAt
MzEsNyArMzEsNiBAQAogCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2lt
cG9ydCA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBv
cnQgPHVuaWNvZGUvdWNoYXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1
YjI2YTVlMjIxMWFjLi40NGZmZGMwYjc1M2YzZjdkMjhmYzZmZDQ3ODY5OWQ3MmU0ZWRkN2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgQVNTRVJUKCFtX3ZpZGVv
SW5wdXQpOwogICAgIAogICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0g
QHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCisgICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0
ZUtleSA6IEAod2lkdGggKiBoZWlnaHQgKiAxMiksCiAgICAgICAgIEFWVmlkZW9FeHBlY3RlZFNv
dXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAogICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRl
cnZhbEtleSA6IEAoMTIwKSwKICAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlk
ZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbApAQCAtMTcwLDggKzE3MCw4IEBAIGJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogCiAgICAgTlNEaWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKICAgICAgICAg
QVZWaWRlb0NvZGVjS2V5OiBBVlZpZGVvQ29kZWNIMjY0LAotICAgICAgICBBVlZpZGVvV2lkdGhL
ZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OndpZHRoXSwKLSAgICAgICAgQVZWaWRlb0hlaWdo
dEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aGVpZ2h0XSwKKyAgICAgICAgQVZWaWRlb1dp
ZHRoS2V5OiBAKHdpZHRoKSwKKyAgICAgICAgQVZWaWRlb0hlaWdodEtleTogQChoZWlnaHQpLAog
ICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3Bl
cnRpZXMKICAgICB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDEz
ZWRjMzU1YTUzNTgzNmE2Njg1MDEyNzg4MzliMjkwZjQ3ODM1MmMuLmYxNzdlMDk2N2FmNzU5ZDg1
OWNkZWI1ODk0ODQ5NmQwNWYyNDY4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0K
QEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1
cmVTZXNzaW9uKCkKICAgICBbc2Vzc2lvbigpIGFkZElucHV0OnZpZGVvSW4uZ2V0KCldOwogCiAg
ICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkNhcHR1cmVWaWRlb0RhdGFP
dXRwdXRJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDphdlZpZGVvQ2FwdHVyZVBpeGVsQnVmZmVyRm9ybWF0
KCldLCBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7CisgICAgYXV0byBz
ZXR0aW5nc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzQW5kS2V5czogQChhdlZpZGVvQ2FwdHVyZVBpeGVsQnVmZmVyRm9ybWF0
KCkpLCBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7CiAKICAgICBbbV92
aWRlb091dHB1dCBzZXRWaWRlb1NldHRpbmdzOnNldHRpbmdzRGljdGlvbmFyeS5nZXQoKV07CiAg
ICAgW21fdmlkZW9PdXRwdXQgc2V0QWx3YXlzRGlzY2FyZHNMYXRlVmlkZW9GcmFtZXM6WUVTXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2ll
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNv
Y29hLm1tCmluZGV4IGY2NzZhMjQ1NThkODk4MGZmMjEyNTIxMzg0NDQxYTNmNGViZTMxOTEuLmM5
N2FlYmQ3ZGY4ZjBiYWQyNjkxNDJhZWUzZjUyZDNiZTA3ZDMxODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpAQCAtMTc1
LDcgKzE3NSw3IEBAIENvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICogX051bGxhYmxlICgp
IGNvbnN0CiAgICAgfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW3By
b3BlcnRpZXMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmNyZWF0ZWQgLyAx
MDAwLjAgLSBOU1RpbWVJbnRlcnZhbFNpbmNlMTk3MF0gZm9yS2V5OkAiQ3JlYXRlZCJdOworICAg
IFtwcm9wZXJ0aWVzIHNldE9iamVjdDpAKGNyZWF0ZWQgLyAxMDAwLjAgLSBOU1RpbWVJbnRlcnZh
bFNpbmNlMTk3MCkgZm9yS2V5OkAiQ3JlYXRlZCJdOwogI2VuZGlmCiAKICAgICBhdXRvKiBwb3J0
U3RyaW5nID0gcG9ydFN0cmluZ0Zyb21WZWN0b3IocG9ydHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0KaW5kZXggYmQwZmQ2NzUzODgyNWJlMDgxYzc5NWM0ODdmMjYxMDFk
OGMzNGZkNS4uYzRiZDVlZmJhY2JhZGEwY2VhMmU4MGZjODU3MThkNmExNjc2ZTJmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVMKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gY29va2llU3Ry
LmNvbnRhaW5zKCc9JykgPyBjb29raWVTdHIgOiBjb29raWVTdHIgKyAiPSI7CiAKICAgICBOU1VS
TCAqY29va2llVVJMID0gdXJsOwotICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0
LUNvb2tpZSJdOworICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gQHsgQCJTZXQtQ29v
a2llIjogY29va2llU3RyaW5nIH07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNBcnJheSAq
dW5maWx0ZXJlZENvb2tpZXMgPSBbTlNIVFRQQ29va2llIF9wYXJzZWRDb29raWVzV2l0aFJlc3Bv
bnNlSGVhZGVyRmllbGRzOmhlYWRlckZpZWxkcyBmb3JVUkw6Y29va2llVVJMXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tCmluZGV4IGQ2ZWVlZmRkOGM5NmQzODg5Y2ZlNmRlOTRmMjVkNWJjYWNm
ZWNmNzIuLjc2NmVhM2I4MmY1ODVhZjE2YWZkYWJlMTJhY2E4NzI4NjI0NDBiZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpzaXRlRm9yQ29va2llcyhtX3Nh
bWVTaXRlRGlzcG9zaXRpb24sIG5zUmVxdWVzdC5VUkwpIGZvcktleTpAIl9rQ0ZIVFRQQ29va2ll
UG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyJdOwotICAgIFtuc1JlcXVlc3QgX3NldFByb3Bl
cnR5OltOU051bWJlciBudW1iZXJXaXRoQm9vbDptX2lzVG9wU2l0ZV0gZm9yS2V5OkAiX2tDRkhU
VFBDb29raWVQb2xpY3lQcm9wZXJ0eUlzVG9wTGV2ZWxOYXZpZ2F0aW9uIl07CisgICAgW25zUmVx
dWVzdCBfc2V0UHJvcGVydHk6bV9pc1RvcFNpdGUgPyBAWUVTIDogQE5PIGZvcktleTpAIl9rQ0ZI
VFRQQ29va2llUG9saWN5UHJvcGVydHlJc1RvcExldmVsTmF2aWdhdGlvbiJdOwogI2VuZGlmCiAK
ICAgICAvLyBDYW5ub3QganVzdCB1c2Ugc2V0QWxsSFRUUEhlYWRlckZpZWxkcyBoZXJlLCBiZWNh
dXNlIGl0IGRvZXMgbm90IHJlbW92ZSBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDQz
ZGY1MmRhZTVmYTAzODg1ZDA3MDlhN2U3NGQzOGM4MjgyNzNkMmQuLjYyNmZlYjUyMjhjMWRmODIx
MjBjNDljNjhhZmMxZTA0NDI3ZDIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTUyLDcgKzUy
LDYgQEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmFrZWRSZWYu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50
aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggZWNiYjc5Nzc3NmMyYjhmOTcx
NjVjMzM5ZWYwNGZmYmY0OTRhNjhkOS4uNjg0ZmQ4ODc5NzY1M2Y0OGNiMzZjNDVkYjIwODE3ZjRj
MmFlODQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5tbQpAQCAtMjksNyArMjksNiBAQAogI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW1w
b3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZWd1bGFyRXhwcmVz
c2lvbi5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CmluZGV4IDEzYjlhZGE2MTAyYzY0MWUyMjc3MWFlZWE0NjRkMWQwYmFkNjQ3NjIuLjI3MDNiMjhi
MWYzNjRjMmNiMTMxZWMxMDFkYjcwMjFkZjAyYzJmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTU2LDYgKzU2LDcg
QEAKICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2Eu
aD4KIAogY29uc3QgQ0ZTdHJpbmdSZWYga0xTUGx1Z0luQnVuZGxlSWRlbnRpZmllcktleSA9IENG
U1RSKCJMU1BsdWdJbkJ1bmRsZUlkZW50aWZpZXJLZXkiKTsKIApAQCAtMjU2LDEyICsyNTcsNyBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlZE5TQ29uY3JldGVUYXNrX2xhdW5jaChOU1Rhc2sgKnNlbGYs
IFNFTCBfY21kKQogewogICAgIFN0cmluZyBsYXVuY2hQYXRoID0gc2VsZi5sYXVuY2hQYXRoOwog
Ci0gICAgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNlbGYuYXJndW1lbnRzLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICph
cmd1bWVudCBpbiBzZWxmLmFyZ3VtZW50cykKLSAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFw
cGVuZChhcmd1bWVudCk7Ci0KLSAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkubGF1
bmNoUHJvY2VzcyhsYXVuY2hQYXRoLCBhcmd1bWVudHMpKQorICAgIGlmIChQbHVnaW5Qcm9jZXNz
OjpzaW5nbGV0b24oKS5sYXVuY2hQcm9jZXNzKGxhdW5jaFBhdGgsIG1ha2VWZWN0b3I8U3RyaW5n
PihzZWxmLmFyZ3VtZW50cykpKQogICAgICAgICByZXR1cm47CiAKICAgICBOU0NvbmNyZXRlVGFz
a19sYXVuY2goc2VsZiwgX2NtZCk7CkBAIC0yNzEsMTYgKzI2Nyw4IEBAIHN0YXRpYyBOU1J1bm5p
bmdBcHBsaWNhdGlvbiAqKCpOU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlv
bnNfY29uZmlnCiAKIHN0YXRpYyBOU1J1bm5pbmdBcHBsaWNhdGlvbiAqcmVwbGFjZWROU1dvcmtz
cGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcihO
U1dvcmtzcGFjZSAqc2VsZiwgU0VMIF9jbWQsIE5TVVJMICp1cmwsIE5TV29ya3NwYWNlTGF1bmNo
T3B0aW9ucyBvcHRpb25zLCBOU0RpY3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24sIE5TRXJyb3IgKipl
cnJvcikKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHM7CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBpZiAoTlNBcnJheSAqYXJndW1lbnRzQXJyYXkg
PSBbY29uZmlndXJhdGlvbiBvYmplY3RGb3JLZXk6TlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0
aW9uQXJndW1lbnRzXSkgewotICAgICAgICBpZiAoW2FyZ3VtZW50c0FycmF5IGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgYXJyYXldXSkgewotICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqYXJndW1l
bnQgaW4gYXJndW1lbnRzQXJyYXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoW2FyZ3VtZW50IGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoYXJndW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQor
ICAgIGF1dG8gYXJndW1lbnRzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFtjb25maWd1cmF0aW9uIG9i
amVjdEZvcktleTpOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25Bcmd1bWVudHNdKTsKICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGlmIChQbHVnaW5Qcm9j
ZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFVSTCh1cmwpLnN0cmluZygp
LCBhcmd1bWVudHMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQppbmRleCBmMjMzOGI4Y2MwMTc1YzJkMDZlNjdjOThjMzU0NDU4NzZiNDQ0OThkLi4zMTMwODg2
NjUyNWY2MThiOGY2MThhNmQ1NzlkYjg3MzYwNzAwZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTMyLDEwICszMiwxMiBAQAogI2ltcG9ydCAiV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KLSNp
bXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBv
cnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2Vi
S2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2FBZGRpdGlvbnMubW0+
CkBAIC0xMzEsMTQgKzEzMyw2IEBAIHN0YXRpYyBQS01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVy
Y2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b1N1cHBvcnRlZE5ldHdv
cmtzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWROZXR3b3JrcykKLXsKLSAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzdXBwb3J0ZWROZXR3b3Jrcy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8mIHN1cHBvcnRlZE5l
dHdvcmsgOiBzdXBwb3J0ZWROZXR3b3JrcykKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6c3Vw
cG9ydGVkTmV0d29ya107Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIFBLU2hpcHBp
bmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OlNoaXBwaW5nVHlwZSBzaGlwcGluZ1R5cGUpCiB7CiAgICAgc3dpdGNoIChzaGlwcGlu
Z1R5cGUpIHsKQEAgLTIxMiw3ICsyMDYsNyBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4g
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QoYwogICAg
IFtyZXN1bHQgc2V0UmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczp0b1BLQ29udGFjdEZpZWxk
cyhwYXltZW50UmVxdWVzdC5yZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKCkpLmdldCgpXTsK
ICAgICBbcmVzdWx0IHNldFJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOnRvUEtDb250YWN0
RmllbGRzKHBheW1lbnRSZXF1ZXN0LnJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKCkpLmdl
dCgpXTsKIAotICAgIFtyZXN1bHQgc2V0U3VwcG9ydGVkTmV0d29ya3M6dG9TdXBwb3J0ZWROZXR3
b3JrcyhwYXltZW50UmVxdWVzdC5zdXBwb3J0ZWROZXR3b3JrcygpKS5nZXQoKV07CisgICAgW3Jl
c3VsdCBzZXRTdXBwb3J0ZWROZXR3b3JrczpjcmVhdGVOU0FycmF5KHBheW1lbnRSZXF1ZXN0LnN1
cHBvcnRlZE5ldHdvcmtzKCkpLmdldCgpXTsKICAgICBbcmVzdWx0IHNldE1lcmNoYW50Q2FwYWJp
bGl0aWVzOnRvUEtNZXJjaGFudENhcGFiaWxpdGllcyhwYXltZW50UmVxdWVzdC5tZXJjaGFudENh
cGFiaWxpdGllcygpKV07CiAKICAgICBbcmVzdWx0IHNldFNoaXBwaW5nVHlwZTp0b1BLU2hpcHBp
bmdUeXBlKHBheW1lbnRSZXF1ZXN0LnNoaXBwaW5nVHlwZSgpKV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJFcnJvcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tCmluZGV4IDZmOWZkYjAwZWNkNGFhYzMzMTc5
MjY4OGI3MjA1YzRhMGQwNjQ2YjcuLjc0ZWM5YWMyYWQ5MTYyNWFhMGZlNzQxZWMyNzdkNGZiMmM1
ZDNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkVycm9yc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1t
CkBAIC0yNiwzMyArMjYsMjggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViRXJy
b3JzLmgiCiAKLSNpbXBvcnQgIkFQSUVycm9yLmgiCi0jaW1wb3J0ICJXS0Vycm9yUmVmLmgiCi0j
aW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIFJl
dGFpblB0cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yKE5TU3RyaW5nKiBkb21haW4sIGludCBjb2Rl
LCBOU1VSTCAqVVJMKQorc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yKE5T
U3RyaW5nICpkb21haW4sIGludCBjb2RlLCBOU1VSTCAqVVJMKQogewotICAgIE5TRGljdGlvbmFy
eSAqdXNlckluZm8gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
Ci0gICAgICAgIFVSTCwgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCi0gICAgICAgIFtVUkwgYWJz
b2x1dGVTdHJpbmddLCBAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5IiwKLSAgICAgICAgbmls
XTsKLQorICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBAeworICAgICAgICBAIk5TRXJyb3JG
YWlsaW5nVVJMS2V5IjogVVJMLAorICAgICAgICBAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5
IjogVVJMLmFic29sdXRlU3RyaW5nLAorICAgIH07CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vy
cm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpkb21haW4gY29kZTpjb2RlIHVzZXJJbmZvOnVzZXJJ
bmZvXSk7CiB9CiAKLVJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoY3JlYXRlTlNFcnJvcihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9yQ2Fu
Y2VsbGVkLCByZXF1ZXN0LnVybCgpKS5nZXQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZU5TRXJyb3Io
TlNVUkxFcnJvckRvbWFpbiwgTlNVUkxFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSkuZ2V0
KCk7CiB9CiAKLVJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxlRG9lc05v
dEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoY3JlYXRlTlNFcnJvcihOU1VSTEVycm9yRG9tYWlu
LCBOU1VSTEVycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkpLmdldCgpKTsKKyAg
ICByZXR1cm4gY3JlYXRlTlNFcnJvcihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9yRmlsZURv
ZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlw
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCmluZGV4
IDcwMTMyODFlYzM0YmJmNGE1OGUwMjMwZjRlOGY0NDljZjQ5ZDQ0MzEuLmRmZDRiNjBlYjllOGRm
MWVhZGFmMDI0N2U5YjJkMmIwZDQ2YzgyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1Bhc3RlYm9hcmRUeXBlcy5tbQpAQCAtNDYsMzIgKzQ2LDMyIEBAIHN0YXRpYyBpbmxpbmUgTlNB
cnJheSAqcmV0YWluKE5TQXJyYXkgKmFycmF5KQogICAgIAogTlNBcnJheSogUGFzdGVib2FyZFR5
cGVzOjpmb3JFZGl0aW5nKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4o
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVi
b2FyZFR5cGUoKSwKLSAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVBORywgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBb
V2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNo
aXZlLCBXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5
RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksCisgICAgICAgIFdlYkNv
cmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lDb2xvclBhc3RlYm9h
cmRUeXBlKCksIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsKICAgICByZXR1cm4g
dHlwZXM7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBz
dGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpX
ZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRU
eXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFz
dGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUo
KSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0
cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKTsKICAg
ICByZXR1cm4gdHlwZXM7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2Vz
KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0g
cmV0YWluKEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRo
VGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2Vi
VVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCldKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKIE5TQXJyYXkqIFBh
c3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUoKQogewotICAgIHN0YXRpYyBOU0Fy
cmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkNvcmU6Omxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdl
YkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVS
TE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUs
IG5pbF0pOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkNvcmU6Omxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdl
YkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVS
TE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGVd
KTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9y
U2VsZWN0aW9uKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMg
PSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RT
dG9yZS5tbQppbmRleCAxZDAwODNjNTdjYmVhOTdkZWI3YjkwZWRjYjE3OGQwM2ZmZTQyZGUzLi4x
NjRmNjBlY2NjYzVkNjc2M2Y1YTkzZDA3M2MyOGEyNzUyMGRiYjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RT
dG9yZS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIHN0YXRpYyBXS0Vycm9yQ29k
ZSB0b1dLRXJyb3JDb2RlKGNvbnN0IHN0ZDo6ZXJyb3JfY29kZSYgZXJyb3IpCiB7CkBAIC05Mywx
MCArOTQsNyBAQCAtICh2b2lkKWxvb2tVcENvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uSGFuZAogLSAodm9pZClnZXRBdmFpbGFibGVD
b250ZW50UnVsZUxpc3RJZGVudGlmaWVyczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiop
KWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX2NvbnRlbnRSdWxlTGlzdFN0b3JlLT5nZXRBdmFp
bGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykg
ewotICAgICAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqbnNJZGVudGlmaWVycyA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTppZGVudGlmaWVycy5zaXplKCldOwotICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykKLSAgICAgICAg
ICAgIFtuc0lkZW50aWZpZXJzIGFkZE9iamVjdDppZGVudGlmaWVyXTsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnNJZGVudGlmaWVycyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNy
ZWF0ZU5TQXJyYXkoaWRlbnRpZmllcnMpLmdldCgpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAw
MzI1ODQ1NzFjYjYzZGJlNmI0OWE3OTUzZjZlOGQ2ZDdlODNlMzc1Li5mNWVhY2VlMGU4Y2UzYjMx
NDkzNDU0MTBmOWEyNjFkNTI3ZTM5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5
c3RlbUludGVyZmFjZS5oPgpAQCAtNjEwLDEwICs2MTEsNyBAQCAtIChfV0tEb3dubG9hZCAqKV9y
ZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3Rv
cmU6KAogLSAodm9pZClfZ2V0QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGlu
ZzoocGlkX3QpcGlkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfcHJvY2Vzc1Bvb2wtPmFjdGl2ZVBhZ2Vz
T3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3RpbmcocGlkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFN0cmluZz4mJiBhY3RpdmVQ
YWdlc09yaWdpbnMpIHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKmFycmF5
ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YWN0aXZlUGFnZXNP
cmlnaW5zLnNpemUoKV0gYXV0b3JlbGVhc2VdOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IGFjdGl2ZVBhZ2VzT3JpZ2lucykKLSAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6b3JpZ2lu
XTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXJyYXkpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjcmVhdGVOU0FycmF5KGFjdGl2ZVBhZ2VzT3JpZ2lucykuZ2V0KCkpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyU2NyaXB0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdC5tbQppbmRleCA1ODhhODZiNDIwYzQwMmQxOTRiODBlOWM2ODYwNzNmNzczMDFkNDcyLi44
ZTEwZWZmZWJlNzVhZjJlNmVhYjVhNzE5YTM2ZmRjYzEwYzhiZjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KQEAgLTI3LDYgKzI3
LDcgQEAKICNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAKICNpbXBvcnQgIl9XS1Vz
ZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29h
Lmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1VzZXJTY3JpcHQKIApAQCAtODQsNyArODUsNyBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rp
b25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmlu
Zyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNl
KSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBtYWtlVmVjdG9yPFN0cmlu
Zz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCks
IEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZv
ck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0
aW5nOjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3Js
ZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDcgKzk1LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tV
c2VyU2NyaXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgbWFrZVZl
Y3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lC
bGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMTAsNyArMTExLDcgQEAg
LSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0
aW9uVGltZTooV0tVc2VyU2NyaXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJp
bmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0
OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0
KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTIwLDcg
KzEyMSw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291
cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3Ry
dWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7
IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1Zl
Y3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlz
dCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6
VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgbWFr
ZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdh
Y3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVj
dGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlv
bkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEzMCw3ICsxMzEsNyBAQCAtIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJT
Y3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3Jp
cHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwo
YXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgZGVmZXJS
dW5uaW5nVW50aWxOb3RpZmljYXRpb24gPyBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVm
b3JlSW5qZWN0aW5nOjpZZXMgOiBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6
VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgbWFr
ZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdh
Y3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVj
dGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRp
b24gPyBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgOiBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYWVmNjc1ZGVh
Y2RlOWM0YTJkOWE2OGE5ZmFjNzFlZDdlNjBiOTRjZS4uMjNhMmJlYTA5OTU2NjlkNDEwYjdhYTM0
Yjg5ZDdjZDdhOGNlNWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0xMzYsNiArMTM2LDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25h
bC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4v
ZHlsZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC00MzcsNyAr
NDM4LDcgQEAgLSAodm9pZClfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JilwYWdlQ29uZmlndXJhdGlvbgogICAgICAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFBhZ2VHcm91cChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGdyb3VwSWRl
bnRpZmllcikucHRyKCkpOwogICAgIH0KIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhXZWJDb3JlOjp3ZWJDb3JlU3RyaW5nVmVjdG9yRnJv
bU5TU3RyaW5nQXJyYXkoW19jb25maWd1cmF0aW9uIF9hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlc10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0QWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMobWFrZVZlY3RvcjxTdHJpbmc+KFtfY29uZmlndXJhdGlvbiBfYWRkaXRpb25hbFN1
cHBvcnRlZEltYWdlVHlwZXNdKSk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKS0+c2V0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCEhW19jb25maWd1cmF0aW9u
IHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CmluZGV4IDdhYTdkMTFlYTA3YzZlNDIyNjUzN2IxY2YwMWEzODMwYzljZTFkYzAuLjliYWI4Yzhk
MzZkNmU4MTVmMjgxMTRjYTBiY2ZiMTQ0OWM1NmQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvVVJMUGFyc2VyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCkBAIC04OTcsMjAgKzg5OCwxMiBAQCAtIChXS1dlYnNpdGVEYXRhU3Rv
cmUgKilfd2Vic2l0ZURhdGFTdG9yZUlmRXhpc3RzCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KilfY29yc0Rpc2FibGluZ1BhdHRlcm5zCiB7Ci0gICAgYXV0byYgdmVjdG9yID0gX3BhZ2VDb25m
aWd1cmF0aW9uLT5jb3JzRGlzYWJsaW5nUGF0dGVybnMoKTsKLSAgICBOU011dGFibGVBcnJheSAq
YXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmVjdG9yLnNpemUoKV07
Ci0gICAgZm9yIChhdXRvJiBwYXR0ZXJuIDogdmVjdG9yKQotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OnBhdHRlcm5dOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJh
eShfcGFnZUNvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilwYXR0ZXJucwogewotICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKLSAgICB2
ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwYXR0ZXJucy5jb3VudCk7Ci0gICAgZm9yIChO
U1N0cmluZyAqcGF0dGVybiBpbiBwYXR0ZXJucykKLSAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFw
cGVuZChwYXR0ZXJuKTsKLSAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQ
YXR0ZXJucyhXVEZNb3ZlKHZlY3RvcikpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09S
U0Rpc2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOwogfQogCiAt
ICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3JrOihCT09MKWxvYWRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmluZGV4IDE5
ZmE0ZjBlMTA2OGE0Y2E4NmVjODk4NGMyZGJhOTUyNGY1MzQyOTkuLjlhZDAzZDU5MmI4MWUzMzNh
ZGU4ZWU3Yjk4ODE0YzI1MWU0ZmE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC02Niw3ICs2Niw3IEBAIC0g
KE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06KE5TU3RyaW5nICop
dXNlckludGVyZmFjZUl0ZW0KICAgICAgICAgYXV0byogdmFsaWRhdGlvbkJ1YmJsZSA9IF9wYWdl
LT52YWxpZGF0aW9uQnViYmxlKCk7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gdmFsaWRhdGlv
bkJ1YmJsZSA/IHZhbGlkYXRpb25CdWJibGUtPm1lc3NhZ2UoKSA6IGVtcHR5U3RyaW5nKCk7CiAg
ICAgICAgIGRvdWJsZSBmb250U2l6ZSA9IHZhbGlkYXRpb25CdWJibGUgPyB2YWxpZGF0aW9uQnVi
YmxlLT5mb250U2l6ZSgpIDogMDsKLSAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRlcmZhY2VJdGVt
OiBAeyBAIm1lc3NhZ2UiOiAoTlNTdHJpbmcgKiltZXNzYWdlLCBAImZvbnRTaXplIjogW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6Zm9udFNpemVdIH0gfTsKKyAgICAgICAgcmV0dXJuIEB7IHVz
ZXJJbnRlcmZhY2VJdGVtOiBAeyBAIm1lc3NhZ2UiOiAoTlNTdHJpbmcgKiltZXNzYWdlLCBAImZv
bnRTaXplIjogQChmb250U2l6ZSkgfSB9OwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29u
dGVudFJ1bGVMaXN0QWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQppbmRleCAyNGQ0Njc4YzllNmRlMzhhOGMxY2Rj
ZjliMDk1YzVkMWE5YjQ2YmU3Li4yN2ExMzViMmRmYzMxZGQwYjM5ODBmNGE3ZDU4ODBjMjY2ZjUz
M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29u
dGVudFJ1bGVMaXN0QWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0KQEAgLTI2LDYgKzI2LDggQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwu
aCIKIAorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CisKIEBpbXBsZW1lbnRhdGlv
biBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24KIAogLSAodm9pZClkZWFsbG9jCkBAIC01MiwxNCAr
NTQsMTAgQEAgLSAoQk9PTCltYWRlSFRUUFMKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKW5v
dGlmaWNhdGlvbnMKIHsKLSAgICBjb25zdCBhdXRvJiB2ZWN0b3IgPSBfYWN0aW9uLT5ub3RpZmlj
YXRpb25zKCk7CisgICAgYXV0byYgdmVjdG9yID0gX2FjdGlvbi0+bm90aWZpY2F0aW9ucygpOwog
ICAgIGlmICh2ZWN0b3IuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNN
dXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKmFycmF5ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6dmVjdG9yLnNpemUoKV0gYXV0b3JlbGVhc2VdOwotICAgIGZvciAo
Y29uc3QgYXV0byYgbm90aWZpY2F0aW9uIDogdmVjdG9yKQotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0Om5vdGlmaWNhdGlvbl07Ci0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KHZlY3RvcikuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tD
dXN0b21IZWFkZXJGaWVsZHMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tCmluZGV4IGRkZWY3MWY4ZTQ0MzUwZTIwYmYxYmQ3NjRi
OGE5YWU2ZmRjNmQyMWMuLjUwZWU4NDViYmQ1OGQxZDBlODIxM2Q0YmE5M2Y1Y2VlODc4ZjllOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21I
ZWFkZXJGaWVsZHMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0N1c3RvbUhlYWRlckZpZWxkcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJfV0tD
dXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS0N1
c3RvbUhlYWRlckZpZWxkcwogCkBAIC02OCwyMCArNjksMTIgQEAgLSAodm9pZClzZXRGaWVsZHM6
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWZpZWxkcwogCiAtIChOU0Fy
cmF5PE5TU3RyaW5nICo+ICopdGhpcmRQYXJ0eURvbWFpbnMKIHsKLSAgICBhdXRvJiBkb21haW5z
ID0gX2ZpZWxkcy0+dGhpcmRQYXJ0eURvbWFpbnMoKTsKLSAgICBOU011dGFibGVBcnJheSAqYXJy
YXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6ZG9tYWlucy5zaXplKCldOwot
ICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKLSAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpkb21haW5dOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShf
ZmllbGRzLT50aGlyZFBhcnR5RG9tYWlucygpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lk
KXNldFRoaXJkUGFydHlEb21haW5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopdGhpcmRQYXJ0eURv
bWFpbnMKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwotICAgIGRvbWFpbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSh0aGlyZFBhcnR5RG9tYWlucy5jb3VudCk7Ci0gICAgZm9yIChOU1N0
cmluZyAqZG9tYWluIGluIHRoaXJkUGFydHlEb21haW5zKQotICAgICAgICBkb21haW5zLnVuY2hl
Y2tlZEFwcGVuZChkb21haW4pOwotICAgIF9maWVsZHMtPnNldFRoaXJkUGFydHlEb21haW5zKFdU
Rk1vdmUoZG9tYWlucykpOworICAgIF9maWVsZHMtPnNldFRoaXJkUGFydHlEb21haW5zKG1ha2VW
ZWN0b3I8U3RyaW5nPih0aGlyZFBhcnR5RG9tYWlucykpOwogfQogCiAtIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggMThkYWUxYzUw
NWEyZDA2ODc0MGQ1NTljZjBhZDMxZWExNzJjN2MwNy4uYWQzNjViY2IxZjUxYWRiMDZlNzYyNjE2
MzNlMTg1ZDhjMTVjYWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW1wb3J0ICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgogI2ltcG9ydCA8
b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbgogCkBAIC0xNzYsNTEgKzE3NywyMiBAQCAtICh2b2lkKXNldFdpcmVsZXNzQ29u
dGV4dElkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbnRpZmllcgogCiAtIChOU0FycmF5ICopY2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMKIHsKLSAgICBhdXRvIHNjaGVtZXMgPSBfcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLT5jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpOwotICAgIGlmIChz
Y2hlbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEBbXTsKLQotICAgIE5TTXV0YWJsZUFy
cmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzY2hlbWVzLnNp
emUoKV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBzY2hlbWVzKQotICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXNjaGVtZV07Ci0KLSAgICByZXR1cm4gYXJyYXk7
CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClz
ZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczooTlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRV
UkxTY2hlbWVzCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2NoZW1lczsKLSAgICBmb3IgKGlkIHVy
bFNjaGVtZSBpbiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykgewotICAgICAgICBpZiAoW3Vy
bFNjaGVtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgc2No
ZW1lcy5hcHBlbmQoU3RyaW5nKChOU1N0cmluZyAqKXVybFNjaGVtZSkpOwotICAgIH0KLSAgICAK
LSAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2No
ZW1lcyhXVEZNb3ZlKHNjaGVtZXMpKTsKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5z
ZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyhtYWtlVmVjdG9yPFN0cmluZz4oY2FjaGVQYXJ0
aXRpb25lZFVSTFNjaGVtZXMpKTsKIH0KIAogLSAoTlNBcnJheSAqKWFsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lcwogewotICAgIGF1dG8mIHNjaGVtZXMgPSBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLT5hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMoKTsKLSAgICBpZiAoc2NoZW1lcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBAW107Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2NoZW1lcy5zaXplKCldOwotICAg
IGZvciAoYXV0byYgc2NoZW1lIDogc2NoZW1lcykKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDoo
TlNTdHJpbmcgKilzY2hlbWVdOwotCi0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJM
U2NoZW1lcygpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldEFsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lczooTlNBcnJheSAqKWFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcwogewot
ICAgIFZlY3RvcjxTdHJpbmc+IHNjaGVtZXM7Ci0gICAgc2NoZW1lcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5jb3VudCk7Ci0gICAgZm9yIChpZCBz
Y2hlbWUgaW4gYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKSB7Ci0gICAgICAgIGlmIChbc2No
ZW1lIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBzY2hlbWVz
LmFwcGVuZCgoTlNTdHJpbmcgKilzY2hlbWUpOwotICAgIH0KLQotICAgIF9wcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24tPnNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyhXVEZNb3ZlKHNjaGVt
ZXMpKTsKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRBbHdheXNSZXZhbGlkYXRl
ZFVSTFNjaGVtZXMobWFrZVZlY3RvcjxTdHJpbmc+KGFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1l
cykpOwogfQogCiAtIChOU1N0cmluZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJD
b250ZW50V29ybGRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCmluZGV4IDc1OTFiZWNlZTE0ZjAzNDg2NmIx
NzE3NGI5ZTczMjUzNjhmMGI0NDkuLjI4NmQyYjMyNDYxY2RhODIzNTJlOWJmYmFkMjU0NWI2NGUz
MmM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgKQEAgLTI3LDI2ICsyNyw2IEBA
CiAKIEBjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIAotbmFtZXNwYWNlIEFQSSB7Ci0KLWlubGluZSBW
ZWN0b3I8V1RGOjpTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkgKmlucHV0KQotewotICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gdmVjdG9yOwotCi0gICAgTlNVSW50ZWdlciBzaXplID0gaW5w
dXQuY291bnQ7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gdmVjdG9yOwotCi0gICAg
dmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0gICAgZm9yIChpZCBzdHJpbmcg
OiBpbnB1dCkgewotICAgICAgICBpZiAoW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQotICAgICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdHJpbmcpOwotICAg
IH0KLSAgICByZXR1cm4gdmVjdG9yOwotfQotCi19Ci0KIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRl
bnRXb3JsZCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgUmV0YWluUHRyPFdLQ29udGVu
dFdvcmxkPiBfY29udGVudFdvcmxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDY0MjNiY2I5NWM3NjNmNDBm
NzU0YjI5ZTAxMzFlYTg0ZmMwZTEzYjguLjQ2YWY4YWQyYmM0OTI2ZmFlODEyOTRhZTZiYTI4OTMx
N2E4NDcwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldlYktp
dDJJbml0aWFsaXplLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIl9XS1Vz
ZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29h
Lmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tVc2VyU3R5bGVTaGVldAogCkBAIC03MSw3ICs3Miw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9y
TWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVz
dCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2Jq
ZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5
IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0
OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlz
dCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25s
eSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFt
ZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdElu
V3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVl
dCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5p
cXVlVVJMKCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9y
PFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVz
ZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg0LDcgKzg1LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJh
bWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBj
YW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29u
c3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAg
ICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFz
ZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3Rv
cihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJD
b250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpT
dHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIG1ha2VWZWN0
b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5Qmxh
Y2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9
LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAg
ICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggNzZkZmZmZTczY2NkMDczNGFjMGY5MjM3MDBhYWVmNzc3MDViZWE5NC4u
NDZhZjczYjQzNzlmYzc3NjFmMDRkMzI0YmM2YmJhZDdkZmYxNDg4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEyNiw2ICsxMjYsNyBAQAog
I2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
ICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYg
SEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikK
QEAgLTM2NjgsNyArMzY2OSw3IEBAIGlkIFdlYlZpZXdJbXBsOjphY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0ZSwgaWQgcGFyYW1ldGVyKQogCiAgICAgICAgICAg
ICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6Y2hpbGRdOworICAgICAgICByZXR1cm4gQFtjaGls
ZF07CiAgICAgfQogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZTsKQEAgLTQwNDMsMTEgKzQwNDQsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVO
YW1lczsKLQotICAgICAgICBmb3IgKE5TU3RyaW5nICpmaWxlIGluIGZpbGVzKQotICAgICAgICAg
ICAgZmlsZU5hbWVzLmFwcGVuZChmaWxlKTsKLSAgICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94
RXh0ZW5zaW9uc0lmTmVlZGVkKGZpbGVOYW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2Fu
ZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgICAgIG1fcGFnZS0+Y3JlYXRlU2FuZGJveEV4
dGVuc2lvbnNJZk5lZWRlZChtYWtlVmVjdG9yPFN0cmluZz4oZmlsZXMpLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICB9CiAKICAgICBTdHJp
bmcgZHJhZ2dpbmdQYXN0ZWJvYXJkTmFtZSA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9h
cmQubmFtZTsKQEAgLTQzMzUsNyArNDMzMiw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1l
c09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAg
ICAgaWYgKCFtX3Byb21pc2VkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgRmlsZVN5c3RlbTo6c2V0
TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKIAotICAgIHJldHVybiBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKKyAgICBy
ZXR1cm4gQFtbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQogCiB2b2lkIFdlYlZpZXdJbXBs
OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlKT4mJiBjb21wbGV0aW9uKQpAQCAtNDc0OSw3ICs0NzQ2LDcg
QEAgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gV2ViVmlld0ltcGw6OmNvbGxlY3RL
ZXlib2FyZExheW91dENvbW1hbmRzRm9yRXYKICAgICBpZiAoTlNUZXh0SW5wdXRDb250ZXh0ICpj
b250ZXh0ID0gaW5wdXRDb250ZXh0KCkpCiAgICAgICAgIFtjb250ZXh0IGhhbmRsZUV2ZW50QnlL
ZXlib2FyZExheW91dDpldmVudF07CiAgICAgZWxzZQotICAgICAgICBbbV92aWV3IGludGVycHJl
dEtleUV2ZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZXZlbnRdXTsKKyAgICAgICAgW21f
dmlldyBpbnRlcnByZXRLZXlFdmVudHM6QFtldmVudF1dOwogCiAgICAgbV9jb2xsZWN0ZWRLZXlw
cmVzc0NvbW1hbmRzID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IGE4
YTdiNjVmNDZmMDkwZTczMGZhYzI5ZDliMWEzZDExZTM0MzQ3YmYuLjU2ZjdlZDI0ODI2ZjQ5NzQ2
NzYzOWYwMWNmMDk4MjFlNWVmNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTQw
LDYgKzQwLDcgQEAKICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUHJv
Y2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIEBpbnRlcmZh
Y2UgV0tQbGFjZWhvbGRlck1vZGFsV2luZG93IDogTlNXaW5kb3cgCkBAIC0yNTEsMTEgKzI1Miw3
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFN0cmluZyYg
bGF1bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0CiAgICAgaWYgKCFzaG91bGRMYXVuY2hQcm9jZXNz
KG1fcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMsIGxhdW5jaFBhdGgsIGFyZ3VtZW50cykpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IGFyZ3VtZW50c0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OmFyZ3VtZW50cy5zaXplKCldKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgW2FyZ3VtZW50c0Fy
cmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKilhcmd1bWVudHNbaV1dOwotCi0gICAgW05TVGFzayBs
YXVuY2hlZFRhc2tXaXRoTGF1bmNoUGF0aDpsYXVuY2hQYXRoIGFyZ3VtZW50czphcmd1bWVudHNB
cnJheS5nZXQoKV07CisgICAgW05TVGFzayBsYXVuY2hlZFRhc2tXaXRoTGF1bmNoUGF0aDpsYXVu
Y2hQYXRoIGFyZ3VtZW50czpjcmVhdGVOU0FycmF5KGFyZ3VtZW50cykuZ2V0KCldOwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCkBAIC0yNjUsMTAgKzI2MiwxMCBAQCBzdGF0aWMg
Ym9vbCBpc0phdmFVcGRhdGVyVVJMKGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVn
aW5Qcm9jZXNzQXR0cmlidQogICAgIGlmICghW3VybCBpc0ZpbGVVUkxdKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBOU0FycmF5ICpqYXZhVXBkYXRlckFwcE5hbWVzID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czpAIkphdmEgVXBkYXRlci5hcHAiLCBAIkphdmFVcGRhdGVyLmFwcCIs
IG5pbF07CisgICAgTlNBcnJheSAqamF2YVVwZGF0ZXJBcHBOYW1lcyA9IEBbQCJKYXZhIFVwZGF0
ZXIuYXBwIiwgQCJKYXZhVXBkYXRlci5hcHAiXTsKIAogICAgIGZvciAoTlNTdHJpbmcgKmphdmFV
cGRhdGVyQXBwTmFtZSBpbiBqYXZhVXBkYXRlckFwcE5hbWVzKSB7Ci0gICAgICAgIE5TU3RyaW5n
ICpqYXZhVXBkYXRlclBhdGggPSBbTlNTdHJpbmcgcGF0aFdpdGhDb21wb25lbnRzOltOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6KE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9k
dWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291cmNlcyIsIGphdmFVcGRhdGVyQXBwTmFtZSwg
bmlsXV07CisgICAgICAgIE5TU3RyaW5nICpqYXZhVXBkYXRlclBhdGggPSBbTlNTdHJpbmcgcGF0
aFdpdGhDb21wb25lbnRzOkBbKE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9k
dWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291cmNlcyIsIGphdmFVcGRhdGVyQXBwTmFtZV1d
OwogICAgICAgICBpZiAoW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpqYXZhVXBkYXRlclBhdGhd
KQogICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICB9CkBAIC0yODksMjAgKzI4NiwxNiBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6bGF1bmNoQXBwbGljYXRpb25BdFVSTChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgVgogICAgIGlmICghc2hvdWxkTGF1bmNoQXBwbGljYXRpb25B
dFVSTChtX3BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBhcmd1bWVudHNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTphcmd1bWVudHMuc2l6ZSgpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFthcmd1bWVudHNBcnJheSBhZGRP
YmplY3Q6KE5TU3RyaW5nICopYXJndW1lbnRzW2ldXTsKLQotICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgTlNEaWN0aW9uYXJ5ICpjb25maWd1cmF0aW9uID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDphcmd1bWVudHNBcnJheS5nZXQoKSBmb3JL
ZXk6TlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzXTsKK0FMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQHsgTlNX
b3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzOiBjcmVhdGVOU0FycmF5KGFyZ3Vt
ZW50cykuZ2V0KCkgfTsKICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gbGF1bmNo
QXBwbGljYXRpb25BdFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxTdHJpbmddIG9wdGlvbnM6
TlNXb3Jrc3BhY2VMYXVuY2hBc3luYyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZXJyb3I6
bnVsbHB0cl07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECitBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
IH0KIAogc3RhdGljIGJvb2wgaXNTaWx2ZXJsaWdodFByZWZlcmVuY2VzVVJMKGNvbnN0IFBsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCiB7Ci0gICAgTlNVUkwgKnNpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoQ29tcG9uZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OihOU1N0cmluZyAqKXBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0aCwgQCJD
b250ZW50cy9SZXNvdXJjZXMvU2lsdmVybGlnaHQgUHJlZmVyZW5jZXMuYXBwIiwgbmlsXV07Cisg
ICAgTlNVUkwgKnNpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoQ29tcG9uZW50czpAWyhOU1N0cmluZyAqKXBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVs
ZUluZm8ucGF0aCwgQCJDb250ZW50cy9SZXNvdXJjZXMvU2lsdmVybGlnaHQgUHJlZmVyZW5jZXMu
YXBwIl1dOwogCiAgICAgcmV0dXJuIFtbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxTdHJpbmddIGlz
RXF1YWw6c2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vydmlj
ZS5tbQppbmRleCBkYjBhYmI4MjE2ZDZjZTQxN2RiNThjYTZlYTlkMGVlZjRhNWIzM2M5Li4yYjg4
YzlmYzcyMmU2MGRmYTU1YjE3ZDk4MTFmYmY5MmJmYzE5ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNl
cnZpY2UubW0KQEAgLTUzLDggKzUzLDggQEAgSGlkU2VydmljZTo6SGlkU2VydmljZShPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiB7CiAgICAgbV9tYW5hZ2VyID0gYWRvcHRDRihJT0hJRE1hbmFnZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0lPSElET3B0aW9uc1R5cGVOb25lKSk7CiAgICAgTlNE
aWN0aW9uYXJ5ICptYXRjaGluZ0RpY3Rpb25hcnkgPSBAewotICAgICAgICBAa0lPSElEUHJpbWFy
eVVzYWdlUGFnZUtleTogYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDprQ3RhcEhpZFVz
YWdlUGFnZV0pLmdldCgpLAotICAgICAgICBAa0lPSElEUHJpbWFyeVVzYWdlS2V5OiBhZG9wdE5T
KFtOU051bWJlciBudW1iZXJXaXRoSW50OmtDdGFwSGlkVXNhZ2VdKS5nZXQoKQorICAgICAgICBA
a0lPSElEUHJpbWFyeVVzYWdlUGFnZUtleTogQChrQ3RhcEhpZFVzYWdlUGFnZSksCisgICAgICAg
IEBrSU9ISURQcmltYXJ5VXNhZ2VLZXk6IEAoa0N0YXBIaWRVc2FnZSksCiAgICAgfTsKICAgICBJ
T0hJRE1hbmFnZXJTZXREZXZpY2VNYXRjaGluZyhtX21hbmFnZXIuZ2V0KCksIChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpbWF0Y2hpbmdEaWN0aW9uYXJ5KTsKICAgICBJT0hJRE1hbmFnZXJSZWdp
c3RlckRldmljZU1hdGNoaW5nQ2FsbGJhY2sobV9tYW5hZ2VyLmdldCgpLCBkZXZpY2VBZGRlZENh
bGxiYWNrLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpp
bmRleCBmZTQ5M2Y5NTFlNWEzOGE3MDU1ZDg3ZDQ4NzMxMDljMWQ4OTg5OGM1Li41NjcxMjU1NGI2
ZjYyYjg2MDEzMGI2NzM3N2UzZjQzMzZhYmM4MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxDb25uZWN0aW9uLm1tCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBNb2NrTG9jYWxDb25u
ZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEgKiwgQXR0
ZXN0YXQKIAogICAgICAgICBhdXRvIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNl
Y0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29uZmlndXJh
dGlvbi5sb2NhbC0+dXNlckNlcnRpZmljYXRlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVj
b2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpKSk7CiAgICAgICAgIGF1dG8gYXR0
ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVh
dGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpjb25maWd1cmF0aW9uLmxvY2FsLT5pbnRl
cm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJ
Z25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpKSk7Ci0gICAgICAgIGNhbGxiYWNrKFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6IChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbkNlcnRpZmljYXRl
LmdldCgpLCAoX19icmlkZ2UgaWQpYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZS5nZXQo
KSwgbmlsXSwgTlVMTCk7CisgICAgICAgIGNhbGxiYWNrKEBbIChfX2JyaWRnZSBpZClhdHRlc3Rh
dGlvbkNlcnRpZmljYXRlLmdldCgpLCAoX19icmlkZ2UgaWQpYXR0ZXN0YXRpb25Jc3N1aW5nQ0FD
ZXJ0aWZpY2F0ZS5nZXQoKV0sIE5VTEwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCA1MjlhYzQzNDY3YjFiNmU4Y2ZmYjExNGVjMWEwNzg4NTAzNzI2YWIwLi5hZmZhYWM1NjAyNmJi
MTI3ZGJhMWZlZGY2ZTUzZmNmZDBkMjc3ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTExOSw4ICsx
MTksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24uaD4K
LSNpbXBvcnQgPFdlYktpdC9XZWJTZWxlY3Rpb25SZWN0Lmg+IC8vIEZJWE1FOiBXSzIgc2hvdWxk
IG5vdCBpbmNsdWRlIFdlYktpdCBoZWFkZXJzIQotI2ltcG9ydCA8cGFsL2lvcy9NYW5hZ2VkQ29u
ZmlndXJhdGlvblNvZnRMaW5rLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5o
PiAvLyBGSVhNRTogV2ViS2l0IHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXRMZWdhY3kgaGVhZGVy
cyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0xMzUsNiArMTM0LDcgQEAKICNpbXBvcnQgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgog
I2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKQEAgLTE2OCw2ICsxNjgsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaD4KICNlbmRpZgogCisjaW1wb3J0IDxwYWwvaW9zL01hbmFnZWRDb25maWd1cmF0
aW9uU29mdExpbmsuaD4KKwogI2lmIEhBVkUoTElOS19QUkVWSUVXKSAmJiBVU0UoVUlDT05URVhU
TUVOVSkKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYmtpdFNob3dMaW5rUHJldmlld3NQcmVm
ZXJlbmNlS2V5ID0gQCJXZWJLaXRTaG93TGlua1ByZXZpZXdzIjsKICNlbmRpZgpAQCAtMzE4NSw3
ICszMTg3LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopdGV4dFN0eWxpbmdBdFBvc2l0aW9uOihVSVRl
eHRQb3NpdGlvbiAqKXBvc2l0aW9uIGluRGlyZWN0aW9uOigKICAgICAgICAgW3Jlc3VsdCBzZXRP
YmplY3Q6KGlkKWZvbnQuZ2V0KCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogICAgIAog
ICAgIGlmICh0eXBpbmdBdHRyaWJ1dGVzICYgV2ViS2l0OjpBdHRyaWJ1dGVVbmRlcmxpbmUpCi0g
ICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Ok5TVW5kZXJs
aW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Cisg
ICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5
Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0zOTg0LDEwICszOTg2LDcgQEAgLSAodm9pZClyZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2Vs
ZWN0aW9uQ29tbWFuZHNXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlMKICAgICAgICAg
fQogCiAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdlLT5yZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVT
ZWxlY3Rpb24oW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoYXV0byYgcmVjdHMp
IHsKLSAgICAgICAgICAgIGF1dG8gcmVjdHNBc1ZhbHVlcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpyZWN0cy5zaXplKCldKTsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgZmxvYXRSZWN0IDogcmVjdHMpCi0gICAgICAgICAgICAgICAgW3JlY3RzQXNW
YWx1ZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpmbG9hdFJlY3RdXTsKLSAg
ICAgICAgICAgIGNvbXBsZXRpb24ocmVjdHNBc1ZhbHVlcy5nZXQoKSk7CisgICAgICAgICAgICBj
b21wbGV0aW9uKGNyZWF0ZU5TQXJyYXkocmVjdHMpLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CkBAIC03NDAwLDcgKzczOTksNyBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilf
aXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaQogICAg
IGZvciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBhZGp1c3RlZEl0ZW1Qcm92aWRl
cnMpIHsKICAgICAgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW1VJRHJhZ0l0ZW0gYWxsb2NdIGlu
aXRXaXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlcl0pOwogICAgICAgICBbaXRlbSBfc2V0UHJp
dmF0ZUxvY2FsQ29udGV4dDpAKHN0YWdlZERyYWdTb3VyY2UuaXRlbUlkZW50aWZpZXIpXTsKLSAg
ICAgICAgW2RyYWdJdGVtcyBhZGRPYmplY3Q6aXRlbS5hdXRvcmVsZWFzZSgpXTsKKyAgICAgICAg
W2RyYWdJdGVtcyBhZGRPYmplY3Q6aXRlbS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIGRy
YWdJdGVtczsKQEAgLTg0MzAsNyArODQyOSw2IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50
c09mVXNlckludGVyZmFjZUl0ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW0KICAgICAg
ICAgICAgICAgICBAImlzSW1hZ2UiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6X3Bvc2l0aW9u
SW5mb3JtYXRpb24uaXNJbWFnZV0sCiAgICAgICAgICAgICAgICAgQCJpbWFnZVVSTCI6IF9wb3Np
dGlvbkluZm9ybWF0aW9uLmltYWdlVVJMLmlzVmFsaWQoKSA/IFdURjo6dXNlclZpc2libGVTdHJp
bmcoX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkwpIDogQCIiCiAgICAgICAgICAgICB9IH07
Ci0KICAgICAgICAgTlNTdHJpbmcgKnVybCA9IFtfcHJldmlld0l0ZW1Db250cm9sbGVyIHByZXZp
ZXdEYXRhXVtVSVByZXZpZXdEYXRhTGlua107CiAgICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJm
YWNlSXRlbTogQHsKICAgICAgICAgICAgIEAidXJsIjogdXJsLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDJm
OTJiYjZlNGFjMGFlNzYzODFkY2Q5MTYxMWQ1NmNlOWYyOWE2YjMuLmQ4YjMwMDZiNWQwMTkyYjAw
OWMzZGFmMWUxZmIwNWZlNWFkZjgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KQEAgLTY2NiwxMiArNjY2LDEy
IEBAIC0gKHZvaWQpaW1hZ2VQaWNrZXJDb250cm9sbGVyOihVSUltYWdlUGlja2VyQ29udHJvbGxl
ciAqKWltYWdlUGlja2VyIGRpZEZpbmlzaFBpCiAKICAgICBbc2VsZiBfZGlzbWlzc0Rpc3BsYXlB
bmltYXRlZDpZRVNdOwogCi0gICAgW3NlbGYgX3Byb2Nlc3NNZWRpYUluZm9EaWN0aW9uYXJpZXM6
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmluZm9dCisgICAgW3NlbGYgX3Byb2Nlc3NNZWRpYUlu
Zm9EaWN0aW9uYXJpZXM6QFtpbmZvXQogICAgICAgICBzdWNjZXNzQmxvY2s6XihOU0FycmF5ICpw
cm9jZXNzZWRSZXN1bHRzLCBOU1N0cmluZyAqZGlzcGxheVN0cmluZykgewogICAgICAgICAgICAg
QVNTRVJUKFtwcm9jZXNzZWRSZXN1bHRzIGNvdW50XSA9PSAxKTsKICAgICAgICAgICAgIF9XS0Zp
bGVVcGxvYWRJdGVtICpyZXN1bHQgPSBbcHJvY2Vzc2VkUmVzdWx0cyBvYmplY3RBdEluZGV4OjBd
OwogICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKLSAgICAgICAgICAgICAgICBbc2VsZiBfY2hvb3NlRmlsZXM6W05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0OnJlc3VsdC5maWxlVVJMXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbklt
YWdlOnJlc3VsdC5kaXNwbGF5SW1hZ2VdOworICAgICAgICAgICAgICAgIFtzZWxmIF9jaG9vc2VG
aWxlczpAW3Jlc3VsdC5maWxlVVJMXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbklt
YWdlOnJlc3VsdC5kaXNwbGF5SW1hZ2VdOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAg
ICAgICAgZmFpbHVyZUJsb2NrOl57CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0KaW5kZXggZmUzOWY4MzdiZjQ0NGVlZDNh
OTgwYWI5N2ZhZjQ0NjNiNzA4NzBkZC4uY2U2Nzg0MmM3ZmUwM2I1MWM2NjBhMTg5NjUyMjM3Mjll
MTU1ZmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybUNvbG9yUGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0Zvcm1Db2xvclBpY2tlci5tbQpAQCAtMTEyLDggKzExMiw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29sb3JNYXRyaXg6KE5TQXJyYXk8TlNBcnJh
eTxVSUNvbG9yCiAgICAgICAgICAgICBbYnV0dG9ucyBhZGRPYmplY3Q6YnV0dG9uXTsKICAgICAg
ICAgICAgIFtzZWxmIGFkZFN1YnZpZXc6YnV0dG9uXTsKICAgICAgICAgfQotICAgICAgICBSZXRh
aW5QdHI8TlNBcnJheT4gY29sb3JCdXR0b25zUm93ID0gYnV0dG9uczsKLSAgICAgICAgW2NvbG9y
QnV0dG9ucyBhZGRPYmplY3Q6Y29sb3JCdXR0b25zUm93LmdldCgpXTsKKyAgICAgICAgW2NvbG9y
QnV0dG9ucyBhZGRPYmplY3Q6YnV0dG9uc107CiAgICAgfQogICAgIF9jb2xvckJ1dHRvbnMgPSBj
b2xvckJ1dHRvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9D
b3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLm1tCmluZGV4IGZlNGU4NDY2OTgwYjczNThhMDljYTExOWQyYzIzNzBjZjVkOTE1ZmQu
LjcyM2IzMjZmNGY0ZjI4OGRlZjRiMDM3YzY0NzI2NWQ1ZDliOThlM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogc3RhdGljIGlubGluZSBOU0NvcnJl
Y3Rpb25JbmRpY2F0b3JUeXBlIGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSkKIHsKQEAgLTY1LDI4ICs2NiwyNSBA
QCBDb3JyZWN0aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwoKQogdm9pZCBDb3JyZWN0aW9uUGFu
ZWw6OnNob3coTlNWaWV3ICp2aWV3LCBXZWJWaWV3SW1wbCYgd2ViVmlld0ltcGwsIEFsdGVybmF0
aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50
U3RyaW5ncykKIHsKICAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dElnbm9yZWQsIGZhbHNlKTsKLSAgICAKKwogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gd2Vi
Vmlld0ltcGwuc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAotICAgIE5TU3RyaW5nKiByZXBs
YWNlZFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlZFN0cmluZzsKLSAgICBOU1N0cmluZyogcmVw
bGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgTlNTdHJp
bmcgKnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOworICAgIE5TU3Ry
aW5nICpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKKwog
ICAgIG1fdmlldyA9IHZpZXc7CiAgICAgbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZyA9IHNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnOwogICAgIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgaW5kaWNh
dG9yVHlwZSA9IGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKHR5cGUpOwogICAgIAotICAgIE5TTXV0
YWJsZUFycmF5KiBhbHRlcm5hdGl2ZVN0cmluZ3MgPSAwOwotICAgIGlmICghYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgpOwotICAgICAgICBhbHRlcm5hdGl2ZVN0
cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgW2FsdGVybmF0
aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5nc1tpXV07Ci0gICAgfQorICAgIFJldGFpblB0cjxOU0FycmF5PiBhbHRlcm5hdGl2ZVN0cmlu
Z3M7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpCisg
ICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IGNyZWF0ZU5TQXJyYXkoYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOwogCiAgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwotICAgIFtzcGVsbENoZWNrZXIgc2hv
d0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJl
cGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVT
dHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzpt
X3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcp
IHsKKyAgICBbc3BlbGxDaGVja2VyIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOmluZGlj
YXRvclR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJu
YXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncy5nZXQoKSBmb3JTdHJpbmdJblJlY3Q6Ym91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CiAgICAgICAgIGhhbmRsZUFjY2VwdGVk
UmVwbGFjZW1lbnQod2ViVmlld0ltcGwsIGFjY2VwdGVkU3RyaW5nLCByZXBsYWNlZFN0cmluZ0Fz
TlNTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZywgaW5kaWNhdG9yVHlwZSk7CiAg
ICAgfV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENo
ZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMu
bW0KaW5kZXggZDc4NmYxMWQzOTNjN2U0Yjc4OGJjZWMzNjdlYWUwOTZmN2Y3NTJlMS4uMDE2MTlh
NTgzYTllNjg2ZDA0NjZhMjUwMmViNTJhN2M5ZjUwZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIEBpbnRl
cmZhY2UgTlNTcGVsbENoZWNrZXIgKFdlYk5TU3BlbGxDaGVja2VyRGV0YWlscykKQEAgLTQzNSwx
MyArNDM2LDEwIEBAIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3Bl
bGxlZFdvcmQoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyCiAKIHZvaWQgVGV4dENoZWNrZXI6
OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhTcGVsbERvY3VtZW50VGFnLCBjb25z
dCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdyYW1tYXJE
ZXRhaWwpCiB7Ci0gICAgYXV0byBjb3JyZWN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1
ZXNzZXMpCi0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOwogICAgIE5TRGlj
dGlvbmFyeSAqZGV0YWlsID0gQHsKICAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1ZSB2
YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKICAgICAgICAgTlNHcmFtbWFyVXNl
ckRlc2NyaXB0aW9uIDogZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24sCi0gICAgICAgIE5T
R3JhbW1hckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgICAgIE5TR3JhbW1h
ckNvcnJlY3Rpb25zIDogY3JlYXRlTlNBcnJheShncmFtbWFyRGV0YWlsLmd1ZXNzZXMpLmdldCgp
LAogICAgIH07CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0
ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpk
ZXRhaWxdOwogfQpAQCAtNDU5LDEwICs0NTcsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVz
c2VzRm9yV29yZChTcGVsbERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cgog
ICAgICAgICBbY2hlY2tlciBjaGVja1N0cmluZzpjb250ZXh0IHJhbmdlOk5TTWFrZVJhbmdlKDAs
IGNvbnRleHQubGVuZ3RoKCkpIHR5cGVzOk5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IG9w
dGlvbnM6b3B0aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRUYWcgb3J0
aG9ncmFwaHk6Jm9ydGhvZ3JhcGh5IHdvcmRDb3VudDowXTsKICAgICAgICAgbGFuZ3VhZ2UgPSBb
Y2hlY2tlciBsYW5ndWFnZUZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0
aCgpKSBpblN0cmluZzpjb250ZXh0IG9ydGhvZ3JhcGh5Om9ydGhvZ3JhcGh5XTsKICAgICB9Ci0g
ICAgTlNBcnJheSogc3RyaW5nc0FycmF5ID0gW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpO
U01ha2VSYW5nZSgwLCB3b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1
YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZ107Ci0KLSAgICBmb3Ig
KE5TU3RyaW5nICpndWVzcyBpbiBzdHJpbmdzQXJyYXkpCi0gICAgICAgIGd1ZXNzZXMuYXBwZW5k
KGd1ZXNzKTsKKyAgICBndWVzc2VzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFtjaGVja2VyIGd1ZXNz
ZXNGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgd29yZC5sZW5ndGgoKSkgaW5TdHJpbmc6d29y
ZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRU
YWddKTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tlcjo6bGVhcm5Xb3JkKFNwZWxsRG9jdW1lbnRUYWcs
IGNvbnN0IFN0cmluZyYgd29yZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1ByaW50aW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1By
aW50aW5nVmlldy5tbQppbmRleCAwMWU0MzIxNjBkZjI5YzEzYjI0ZTMwYWRhZmUxZDNmZjVhNDkx
YzYxLi41OTA0YzQyNzlmODFmOWJjMzllZmZiZGVhMGY2Njg4ODYxNmRkOGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0xNDUsOCArMTQ1
LDggQEAgLSAodm9pZClfYWRqdXN0UHJpbnRpbmdNYXJnaW5zRm9ySGVhZGVyQW5kRm9vdGVyCiAg
ICAgICAgIEFTU0VSVCghW2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRPcmlnaW5h
bEJvdHRvbVByaW50aW5nTWFyZ2luS2V5XSk7CiAgICAgICAgIG9yaWdpbmFsVG9wTWFyZ2luID0g
W2luZm8gdG9wTWFyZ2luXTsKICAgICAgICAgb3JpZ2luYWxCb3R0b21NYXJnaW4gPSBbaW5mbyBi
b3R0b21NYXJnaW5dOwotICAgICAgICBbaW5mb0RpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOm9yaWdpbmFsVG9wTWFyZ2luXSBmb3JLZXk6V2ViS2l0T3JpZ2lu
YWxUb3BQcmludGluZ01hcmdpbktleV07Ci0gICAgICAgIFtpbmZvRGljdGlvbmFyeSBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6b3JpZ2luYWxCb3R0b21NYXJnaW5dIGZvcktl
eTpXZWJLaXRPcmlnaW5hbEJvdHRvbVByaW50aW5nTWFyZ2luS2V5XTsKKyAgICAgICAgW2luZm9E
aWN0aW9uYXJ5IHNldE9iamVjdDpAKG9yaWdpbmFsVG9wTWFyZ2luKSBmb3JLZXk6V2ViS2l0T3Jp
Z2luYWxUb3BQcmludGluZ01hcmdpbktleV07CisgICAgICAgIFtpbmZvRGljdGlvbmFyeSBzZXRP
YmplY3Q6QChvcmlnaW5hbEJvdHRvbU1hcmdpbikgZm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9t
UHJpbnRpbmdNYXJnaW5LZXldOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChbb3JpZ2lu
YWxUb3BNYXJnaW5OdW1iZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CiAgICAg
ICAgIEFTU0VSVChbW2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRPcmlnaW5hbEJv
dHRvbVByaW50aW5nTWFyZ2luS2V5XSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
CmluZGV4IDM5NjhlZGE2M2RlZGUyOTA1ZWMyZjcwZTU1OWMxYjhkYTk0NDAyOGUuLjM2YWJkZmQy
NDY1ZTRkZmQ1MTAyNDNkZjdmOWE3OGMxMGI5MWE3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQg
PHd0Zi9OYWtlZFB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIC8v
IEZJWE1FOiBJbXBsZW1lbnQgc2Nyb2xsRmluZE1hdGNoVG9WaXNpYmxlLgogLy8gRklYTUU6IFRo
ZSBOU1RleHRGaW5kZXIgb3ZlcmxheSBkb2Vzbid0IG1vdmUgd2l0aCBzY3JvbGxpbmc7IHdlIHNo
b3VsZCBoYXZlIGEgbW9kZSB3aGVyZSB3ZSBtYW5hZ2UgdGhlIG92ZXJsYXkuCkBAIC0yNzAsMzEg
KzI3MSwyMSBAQCAtICh2b2lkKXNjcm9sbEZpbmRNYXRjaFRvVmlzaWJsZTooaWQgPE5TVGV4dEZp
bmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE1hdGNoPgogCiAjcHJhZ21hIG1hcmsgLSBGaW5k
TWF0Y2hlc0NsaWVudAogCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGFycmF5RnJvbVJlY3Rz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgbWF0Y2hSZWN0cykKLXsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zTWF0Y2hSZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTptYXRjaFJlY3RzLnNpemUoKV0pOwotICAgIGZv
ciAoYXV0byYgcmVjdCA6IG1hdGNoUmVjdHMpCi0gICAgICAgIFtuc01hdGNoUmVjdHMgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdF1dOwotICAgIHJldHVybiBuc01hdGNoUmVj
dHM7Ci19Ci0KIC0gKHZvaWQpZGlkRmluZFN0cmluZ01hdGNoZXNXaXRoUmVjdHM6KGNvbnN0IFZl
Y3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+JilyZWN0c0Zvck1hdGNoZXMgZGlkV3JhcEFy
b3VuZDooQk9PTClkaWRXcmFwQXJvdW5kCiB7CiAgICAgaWYgKF9maW5kUmVwbHlDYWxsYmFja3Mu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlcGx5Q2FsbGJhY2sgPSBf
ZmluZFJlcGx5Q2FsbGJhY2tzLnRha2VGaXJzdCgpOwotICAgIHVuc2lnbmVkIG1hdGNoQ291bnQg
PSByZWN0c0Zvck1hdGNoZXMuc2l6ZSgpOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
bWF0Y2hPYmplY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5Om1hdGNoQ291bnRdKTsKKyAgICBhdXRvIG1hdGNoQ291bnQgPSByZWN0c0Zvck1hdGNo
ZXMuc2l6ZSgpOworICAgIGF1dG8gbWF0Y2hPYmplY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om1hdGNoQ291bnRdKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbWF0Y2hDb3VudDsgaSsrKSB7CiAgICAgICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBuc01hdGNoUmVjdHM7Ci0KICAgICAgICAgaWYgKF91c2VQbGF0Zm9ybUZpbmRVSSkKLSAg
ICAgICAgICAgIG5zTWF0Y2hSZWN0cyA9IGFycmF5RnJvbVJlY3RzKHJlY3RzRm9yTWF0Y2hlc1tp
XSk7CisgICAgICAgICAgICBuc01hdGNoUmVjdHMgPSBjcmVhdGVOU0FycmF5KHJlY3RzRm9yTWF0
Y2hlc1tpXSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5zTWF0Y2hSZWN0cyA9IEBbXTsK
LSAgICAgICAgUmV0YWluUHRyPFdLVGV4dEZpbmRlck1hdGNoPiBtYXRjaCA9IGFkb3B0TlMoW1tX
S1RleHRGaW5kZXJNYXRjaCBhbGxvY10gaW5pdFdpdGhDbGllbnQ6c2VsZiB2aWV3Ol92aWV3IGlu
ZGV4OmkgcmVjdHM6bnNNYXRjaFJlY3RzLmdldCgpXSk7Ci0gICAgICAgIFttYXRjaE9iamVjdHMg
YWRkT2JqZWN0Om1hdGNoLmdldCgpXTsKKyAgICAgICAgW21hdGNoT2JqZWN0cyBhZGRPYmplY3Q6
YWRvcHROUyhbW1dLVGV4dEZpbmRlck1hdGNoIGFsbG9jXSBpbml0V2l0aENsaWVudDpzZWxmIHZp
ZXc6X3ZpZXcgaW5kZXg6aSByZWN0czpuc01hdGNoUmVjdHMuZ2V0KCldKS5nZXQoKV07CiAgICAg
fQogCiAgICAgcmVwbHlDYWxsYmFjayhtYXRjaE9iamVjdHMuZ2V0KCksIGRpZFdyYXBBcm91bmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KaW5kZXggM2JkOTQxYzcyODk3MTcwZWNj
MTU3YjlmZWI1N2RhNTM3MjhlODEzMy4uN2QyMDI0NDMwZTY1ZjEyZjczMjk3NzE2NzcxZDZhNjZi
MWE5NmQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCkBAIC0zNzksMTAgKzM3
OSwxMCBAQCAtICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdAogCiAtICh2b2lkKW5vdGlmeUFjY2Vzc2li
aWxpdHlDbGllbnRzOihOU1N0cmluZyAqKWluZm8KIHsKLSAgICBOU0RpY3Rpb25hcnk8TlNBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uVXNlckluZm9LZXksIGlkPiAqdXNlckluZm8gPSBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIE5TQWNjZXNzaWJp
bGl0eVByaW9yaXR5S2V5LCBAKE5TQWNjZXNzaWJpbGl0eVByaW9yaXR5SGlnaCksCi0gICAgICAg
IE5TQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudEtleSwgaW5mbywgbmlsXTsKLSAgICBOU0FjY2Vz
c2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKE5TQXBwLCBOU0FjY2Vzc2liaWxp
dHlBbm5vdW5jZW1lbnRSZXF1ZXN0ZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKKyAgICBOU0Fj
Y2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKE5TQXBwLCBOU0FjY2Vzc2li
aWxpdHlBbm5vdW5jZW1lbnRSZXF1ZXN0ZWROb3RpZmljYXRpb24sIEB7CisgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVByaW9yaXR5S2V5OiBAKE5TQWNjZXNzaWJpbGl0eVByaW9yaXR5SGlnaCksCisg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudEtleTogaW5mbywKKyAgICB9KTsKIH0K
IAogLSAodm9pZCltb3ZlU2VsZWN0aW9uQnlEaXJlY3Rpb246KGNvbnN0IFN0cmluZyYpZGlyZWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpp
bmRleCBkMmQ5MGUzM2YyMjFjZGY2NDA2MTFlNjQ5YTVhYTE0ZmMxODEyZGE5Li44MzQzMDdjNjk1
ZTg1YmJlMzI1MDVmODU0OWJhNjE4ZTdmMjIzZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VhcmNoV2l0aFNwb3RsaWdodChjb25zdCBTdHJpbmcmIHN0cmluZykKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZWFyY2hUaGVXZWIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0
aFVuaXF1ZU5hbWVdOwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAg
ICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgp
XSBvd25lcjpuaWxdOwogICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzpzdHJpbmcgZm9yVHlwZTps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAKICAgICBOU1BlcmZvcm1TZXJ2aWNl
KEAiU2VhcmNoIFdpdGggJVdlYlNlYXJjaFByb3ZpZGVyQCIsIHBhc3RlYm9hcmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NSW50ZXJuYWxzLmgKaW5kZXggMTUxYjliY2UwODY1ODc3YWIzYjY4YjdhMTFh
MGFjYzBlZTAyZTFkNS4uN2EzZGU4M2IyYmFiMmZiNDY5MTA3NzFhNDZkZTkyYmY2NDYzNmU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tET01JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5oCkBAIC0xMDksOCArMTA5LDQgQEAgV0tE
T01UZXh0ICp0b1dLRE9NVGV4dChXZWJDb3JlOjpUZXh0Kik7CiBXZWJDb3JlOjpSYW5nZSogdG9X
ZWJDb3JlUmFuZ2UoV0tET01SYW5nZSAqKTsKIFdLRE9NUmFuZ2UgKnRvV0tET01SYW5nZShXZWJD
b3JlOjpSYW5nZSopOwogCi0vLyAtLSBIZWxwZXJzIC0tCi0KLU5TQXJyYXkgKnRvTlNBcnJheShj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTUludGVybmFscy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCmluZGV4IGY0MWU5NGMyZGE1ZmZkYWM5
NjllMTI2NTY2OGEyYTNiODdhMzAwNjMuLjYzY2RkMmJjMmJjNGI3OThiNTg3NzBiNDMxZjNhMTY0
ZDljMGRhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCkBAIC0xNjEsMTMg
KzE2MSw0IEBAIHN0YXRpYyBXS0RPTVR5cGUgdG9XS0RPTVR5cGUoV2ViQ29yZVR5cGUgaW1wbCwg
RE9NQ2FjaGU8V2ViQ29yZVR5cGUsIFdLRE9NVHlwZT4mCiAgICAgcmV0dXJuIFt3cmFwcGVyIGF1
dG9yZWxlYXNlXTsKIH0KIAotTlNBcnJheSAqdG9OU0FycmF5KGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgcmVjdHMpCi17Ci0gICAgc2l6ZV90IHNpemUgPSByZWN0cy5zaXplKCk7Ci0g
ICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5OnNpemVdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdHNbaV1dXTsKLSAg
ICByZXR1cm4gYXJyYXk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2Rl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01Ob2RlLm1tCmluZGV4IGY5YzU3MWRlZWI5MzVjZTg4YjQzN2FmYTY1ZDdmZmU3NjUzYmIxOTIu
LmNkODA2MWVjMWIyMDNmMDMzNDY3ZjU0MGI5MzdkMGMxYjcxYjg0NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTU5vZGUubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldLQnVuZGxlQVBJQ2FzdC5o
IgogI2ltcG9ydCAiV0tET01JbnRlcm5hbHMuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1wbGVtZW50YXRpb24g
V0tET01Ob2RlCiAKQEAgLTExMiw3ICsxMTMsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwog
ICAgIF9pbXBsLT50ZXh0UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBXZWJLaXQ6OnRvTlNBcnJh
eShyZWN0cyk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIEBlbmQKQEAgLTEyMSw4ICsxMjIsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tET01Ob2Rl
IChXS1ByaXZhdGUpCiAKIC0gKFdLQnVuZGxlTm9kZUhhbmRsZVJlZilfY29weUJ1bmRsZU5vZGVI
YW5kbGVSZWYKIHsKLSAgICBhdXRvIG5vZGVIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShu
b2RlSGFuZGxlLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSkubGVha1JlZigpKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggMjJiZTQ2MjZkYTMyYzYzNTU5
ZDEwYTAyOGZhZWFmMmQyYTY1Yzc2Zi4uYWM2ZmZiMWU5NzhjODM4ODEyYThiMTFiMzcyMjQ5MThl
ZWUyOGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC0zMSw2ICszMSw3IEBACiAj
aW1wb3J0ICJXS0RPTUludGVybmFscy5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oPgogCiBAaW1wbGVtZW50YXRpb24gV0tET01SYW5nZQogCkBAIC0xMzAsNyArMTMx
LDcgQEAgLSAoTlNBcnJheSAqKXRleHRSZWN0cwogICAgIF9pbXBsLT5vd25lckRvY3VtZW50KCku
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IHJlY3RzOwogICAgIF9pbXBsLT5hYnNvbHV0ZVRleHRSZWN0cyhyZWN0cyk7
Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9OU0FycmF5KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRl
TlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV0tET01SYW5nZSAqKXJhbmdl
QnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczooTlNVSW50ZWdlciljaGFyYWN0
ZXJzIGluRGlyZWN0aW9uOihXS0RPTVJhbmdlRGlyZWN0aW9uKWRpcmVjdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1
bmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMv
SW5qZWN0ZWRCdW5kbGVNYWMubW0KaW5kZXggMGU4OTRmYzQ3MzFjNDc4OThkZGQ0NmEwMTI5NTc3
ZWRhODU3NDRlZC4uYTZkYTkxOWEyMmY3NWQ5NzNhNTk3YWM5ODExMzc4YWMyMmNkZjc2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9Jbmpl
Y3RlZEJ1bmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBJUEM6OkRhdGFSZWZlcmUKICAgICB9CiAKICAgICBpZiAoIW1fYnVuZGxlUGFyYW1ldGVycyAm
JiBwYXJhbWV0ZXIpCi0gICAgICAgIG1fYnVuZGxlUGFyYW1ldGVycyA9IGFkb3B0TlMoW1tXS1dl
YlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5XV0pOworICAgICAgICBtX2J1bmRsZVBhcmFtZXRlcnMgPSBhZG9w
dE5TKFtbV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhEaWN0aW9u
YXJ5OkB7IH1dKTsKIAogICAgIFttX2J1bmRsZVBhcmFtZXRlcnMgc2V0UGFyYW1ldGVyOnBhcmFt
ZXRlciBmb3JLZXk6a2V5XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbQppbmRleCA1
NjYxZWY5NmZhMWZlNDQ4ZWQyNWE2NWYzZjRlYWFlMDE1NjNiZDkyLi4zNTEzYjAzODQ0ZWMwMDAw
MWNkOGY0NzVjNjQ2YjA2ZTkwMDRlMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1t
CkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIG1ha2VSZW5kZXJMYXllcihDQUxheWVyICpw
bHVnaW5MYXllciwgdWludDMyX3QgbGF5ZXJIb3N0aW5nQ29udGV4dElECiAgICAgQ0FMYXllciAq
cmVuZGVyTGF5ZXIgPSBbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpsYXll
ckhvc3RpbmdDb250ZXh0SURdOwogICAgIFtyZW5kZXJMYXllciBzZXRGcmFtZTpbcGx1Z2luTGF5
ZXIgYm91bmRzXV07CiAgICAgW3JlbmRlckxheWVyIHNldEF1dG9yZXNpemluZ01hc2s6a0NBTGF5
ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFibGVdOwotICAgIFtwbHVnaW5MYXll
ciBzZXRTdWJsYXllcnM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnJlbmRlckxheWVyXV07Cisg
ICAgW3BsdWdpbkxheWVyIHNldFN1YmxheWVyczpAW3JlbmRlckxheWVyXV07CiB9CiAKIFBsYXRm
b3JtTGF5ZXIqIFBsdWdpblByb3h5OjpwbHVnaW5MYXllcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxMDE5NWZhY2IxNzMz
ODJhZjljZTM4YjQ3ZWJhZDIwYzc5ZWQxNTcwLi41MjVmZjJmNjM2NDQwZDdhOTRlMGVlMTdmYTcz
ZDBlNjY0MTNiMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTkzLDYgKzkzLDcgQEAKICNpbXBvcnQgPHd0Zi9VVUlELmg+
CiAjaW1wb3J0IDx3dGYvV1RGU2VtYXBob3JlLmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCkBAIC0yMzM2LDEw
ICsyMzM3LDcgQEAgdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oKQog
CiB2b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVi
b2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1zLCBOU0FycmF5ICp0eXBlcykKIHsKLSAgICBWZWN0b3I8
U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXM7Ci0KLSAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIHR5
cGVzKQotICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOworICAgIGF1dG8gcGFz
dGVib2FyZFR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHR5cGVzKTsKIAogICAgIGludDY0X3Qg
bmV3Q2hhbmdlQ291bnQ7CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQppbmRleCA3MGU1Mjg1NjQ2ZmY4ZGY1NmE5ZDI1MjE3NDhiZmQ1YWY4Y2M0YzUx
Li40MjdkNDQyYTYzMjk1YmJmYTk0ZDI5NTlmZmI0N2Y0ZGVlODI4MTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzcx
MCw3ICszNzEwLDcgQEAgdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUo
KQogCiB2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNT
dXNwZW5kZWRVbmRlckxvY2spCiB7Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3VzcGVuZGVkVW5k
ZXJMb2NrIjogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmlzU3VzcGVuZGVkVW5kZXJMb2NrXX1d
OworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNh
dGlvbk5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBv
YmplY3Q6bmlsIHVzZXJJbmZvOkB7QCJpc1N1c3BlbmRlZFVuZGVyTG9jayI6IEAoaXNTdXNwZW5k
ZWRVbmRlckxvY2spfV07CiAKICAgICBtX2lzU3VzcGVuZGVkVW5kZXJMb2NrID0gaXNTdXNwZW5k
ZWRVbmRlckxvY2s7CiAgICAgZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6
QmFja2dyb3VuZEFwcGxpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQppbmRleCA5YzA4ODdlNjkzZTI4OGVjNGU3YTNlMDMwN2Q2ZGM3MTk5OTJkOGQ0Li4w
MjhhODhjMTY3NDkwNzkwZjRhYWY2NGU2NWFjN2EwNTA2YjYzZTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkKIAogICAgIC8vIFRo
aXMgaXMgYSBzaWduYWwgdG8gbWVkaWEgZnJhbWV3b3JrczsgaXQgZG9lcyBub3QgYWN0aXZlbHkg
cGF1c2UgYW55dGhpbmcuCiAgICAgW21faG9zdGluZ0xheWVyIHNldFZhbHVlOkBZRVMgZm9yS2V5
OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRQYXVz
ZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlXaXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOworICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5h
bWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJ
bmZvOkB7IEAibGF5ZXIiOiBtX2hvc3RpbmdMYXllci5nZXQoKSB9XTsKIH0KIAogdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQpAQCAtNTM5LDcgKzUz
OSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5n
KCkKICAgICBtX2lzUGFpbnRpbmdTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIFttX2hvc3RpbmdM
YXllciBzZXRWYWx1ZTpATk8gZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
OkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlcklu
Zm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdMYXllci5nZXQo
KSBmb3JLZXk6QCJsYXllciJdXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3Rp
ZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86QHsgQCJsYXllciI6IG1faG9zdGluZ0xheWVy
LmdldCgpIH1dOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRW
aWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggMDhmZTdmZDE0
YWYyMTQyMzYyMzY3ODk5NDI5NjZlZDljNGVhY2E4Ni4uYTFkNmUzMGY0NTEzNTQzYTVhMzg2ZTg2
NTZiZjU4ZGQwNWNkZGM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5tbQpAQCAtNDEsNyArNDEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFy
Lmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9u
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RNYWMubW0KaW5kZXggZjBjZWNhMjA2ODBjOWJhYzg0MTcyMzVmNzU0
YTQ0ZWVjMjljNmNhZi4uYTA5ZmY2MTM3YTk4YjQwM2E1MDY2OTk1Mzg2NmQ3M2MwZjY2MjEzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0KQEAgLTQ3LDcg
KzQ3LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAKQEAgLTE0Miwx
NiArMTQxLDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtIChO
U0FycmF5ICopYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzCiBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgIHJldHVy
biBAW107CiB9CiAKIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5Q2hpbGRyZW4KIHsKICAgICBp
ZCB3cmFwcGVyID0gW3NlbGYgYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXTsKICAgICBp
ZiAoIXdyYXBwZXIpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJl
dHVybiBAW107CiAgICAgCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp3cmFw
cGVyXTsKKyAgICByZXR1cm4gQFt3cmFwcGVyXTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDIwNGQ0NWFiMzRmOGViNGZmNjZlMTU5ZmZjMmMxMDFj
ODg5MzFiMzcuLjRiNDU4NDcwODgyMGVkNTUxYzM1ZTg5NTc3MjY4YmYzZTI3NWEzMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpA
QCAtODgsNiArODgsNyBAQAogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBv
cnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc0NvY29hLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2Eu
aD4KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1JlbW90ZUluc3BlY3Rvci5oPgpAQCAtNjY0LDEyICs2NjUsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVEaXNwbGF5TmFtZSkK
IHZvaWQgV2ViUHJvY2Vzczo6Z2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvIGFjdGl2ZU9yaWdpbnNBc05TU3RyaW5ncyA9
IGFjdGl2ZVBhZ2VzT3JpZ2lucyhtX3BhZ2VNYXApOwotICAgIFZlY3RvcjxTdHJpbmc+IGFjdGl2
ZU9yaWdpbnM7Ci0gICAgYWN0aXZlT3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFthY3Rp
dmVPcmlnaW5zQXNOU1N0cmluZ3MgY291bnRdKTsKLSAgICBmb3IgKE5TU3RyaW5nKiBhY3RpdmVP
cmlnaW4gaW4gYWN0aXZlT3JpZ2luc0FzTlNTdHJpbmdzLmdldCgpKQotICAgICAgICBhY3RpdmVP
cmlnaW5zLnVuY2hlY2tlZEFwcGVuZChhY3RpdmVPcmlnaW4pOwotICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYWN0aXZlT3JpZ2lucykpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VW
ZWN0b3I8U3RyaW5nPihhY3RpdmVQYWdlc09yaWdpbnMobV9wYWdlTWFwKS5nZXQoKSkpOwogI2Vs
c2UKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW0KaW5kZXggMzNlNWVmNTFjYTIzNDBhZTE2NDA0ZGNjNGFmMmY0MDk1NzhiYjFlOC4uODc1
NDNiMDA0NDQ3ZTNkOGM1NDlhZDE4NzhkYzRiMzg0YWI0NjU0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5tbQpAQCAtNjMsNiArNjMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
TWVzc2FnZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBOU1N0cmluZyAqIGNvbnN0
IFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25BbGxvd011bHRpcGxlRmlsZXNLZXkgPSBAIldlYk9w
ZW5QYW5lbENvbmZpZ3VyYXRpb25BbGxvd011bHRpcGxlRmlsZXNLZXkiOwogTlNTdHJpbmcgKiBj
b25zdCBXZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVkaWFDYXB0dXJlVHlwZUtleSA9IEAiV2Vi
T3BlblBhbmVsQ29uZmlndXJhdGlvbk1lZGlhQ2FwdHVyZVR5cGVLZXkiOwpAQCAtMTM0LDE3ICsx
MzUsMTMgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZp
bGVDaG9vc2VyJiBjaG9vc2VyKQogICAgIEJPT0wgYWxsb3dNdWx0aXBsZUZpbGVzID0gc2V0dGlu
Z3MuYWxsb3dzTXVsdGlwbGVGaWxlczsKICAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciAq
bGlzdGVuZXIgPSBbW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENo
b29zZXI6Y2hvb3Nlcl07CiAKLSAgICBOU011dGFibGVBcnJheSAqbWltZVR5cGVzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcy5zaXpl
KCldOwotICAgIGZvciAoYXV0byYgdHlwZSA6IHNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcykKLSAg
ICAgICAgW21pbWVUeXBlcyBhZGRPYmplY3Q6dHlwZV07Ci0KICAgICBXZWJNZWRpYUNhcHR1cmVU
eXBlIGNhcHR1cmVUeXBlID0gV2ViTWVkaWFDYXB0dXJlVHlwZU5vbmU7CiAjaWYgRU5BQkxFKE1F
RElBX0NBUFRVUkUpCiAgICAgY2FwdHVyZVR5cGUgPSB3ZWJNZWRpYUNhcHR1cmVUeXBlKHNldHRp
bmdzLm1lZGlhQ2FwdHVyZVR5cGUpOwogI2VuZGlmCiAgICAgTlNEaWN0aW9uYXJ5ICpjb25maWd1
cmF0aW9uID0gQHsKICAgICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFsbG93TXVsdGlw
bGVGaWxlc0tleTogQChhbGxvd011bHRpcGxlRmlsZXMpLAotICAgICAgICBXZWJPcGVuUGFuZWxD
b25maWd1cmF0aW9uTWltZVR5cGVzS2V5OiBtaW1lVHlwZXMsCisgICAgICAgIFdlYk9wZW5QYW5l
bENvbmZpZ3VyYXRpb25NaW1lVHlwZXNLZXk6IGNyZWF0ZU5TQXJyYXkoc2V0dGluZ3MuYWNjZXB0
TUlNRVR5cGVzKS5nZXQoKSwKICAgICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbk1lZGlh
Q2FwdHVyZVR5cGVLZXk6IEAoY2FwdHVyZVR5cGUpCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0
aW9uLm1tCmluZGV4IDY5MWY4NTE5MzhmODM1N2Q3NzBkOGM0Zjg0ZTVkMmU2YzNlZjk4ZWQuLjU0
MzI1YWQ4MGMzYTNhNDg3ZjkwYzJmMTkxNjc4NmFmOGRiOWY2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9z
aXRpb24ubW0KQEAgLTIzLDExICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1wb3J0ICJXZWJW
aXNpYmxlUG9zaXRpb24uaCIKICNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmgi
CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KQEAgLTQxLDEyICs0Miw4IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRGbGFncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHku
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Zp
c2libGVQb3NpdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KLQotCi0j
aW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIK
KyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtNDE4LDExICs0MTUsNyBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1Jhbmdl
V2l0aERpY3RhdGlvblBocmFzZUFsdGVybmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5hdAogICAg
IGF1dG8mIGRvY3VtZW50ID0gbm9kZS0+ZG9jdW1lbnQoKTsKICAgICBmb3IgKGF1dG8gbWFya2Vy
IDogZG9jdW1lbnQubWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICBpZiAobWFya2VyLT5z
dGFydE9mZnNldCgpIDw9IG9mZnNldCAmJiBtYXJrZXItPmVuZE9mZnNldCgpID49IG9mZnNldCkg
ewotICAgICAgICAgICAgYXV0byYgbWFya2VyQWx0ZXJuYXRpdmVzID0gV1RGOjpnZXQ8VmVjdG9y
PFN0cmluZz4+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8gYXJyYXkgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bWFya2VyQWx0ZXJuYXRpdmVzLnNpemUoKV07
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGFsdGVybmF0aXZlIDogbWFya2VyQWx0ZXJuYXRpdmVz
KQotICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YWx0ZXJuYXRpdmVdOwotICAgICAg
ICAgICAgKmFsdGVybmF0aXZlcyA9IGFycmF5OworICAgICAgICAgICAgKmFsdGVybmF0aXZlcyA9
IGNyZWF0ZU5TQXJyYXkoV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KG1hcmtlci0+ZGF0YSgpKSku
YXV0b3JlbGVhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBraXQoUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNl
dCgpKS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9u
SW50ZXJuYWwuaAppbmRleCBkMjlmMTQxMzQyODQ5M2E1ZjM2YjRiMDAxMjg3YjQ4Y2ZkMjY5NzY0
Li43NjVjNTlkNDM0ZjhhNWY3NGNmMDEyOTBlMDNlODFmMmQyMmJiNDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25J
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2libGVQb3NpdGlvbkludGVybmFsLmgKQEAgLTIzLDggKzIzLDkgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRp
b24uaCIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJXZWJWaXNpYmxlUG9z
aXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAKIEBpbnRlcmZh
Y2UgV2ViVmlzaWJsZVBvc2l0aW9uIChJbnRlcm5hbCkKQEAgLTMzLDMgKzM0LDUgQEAKIC0gKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbilfdmlzaWJsZVBvc2l0aW9uOwogCiBAZW5kCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CmluZGV4IGY5ODJiZDEwYWM4ZTViZDhlZmE5NTI0NTQxNmJmMWExYTg1ZTI5MjYuLmJlNWQ2NDdm
ZGRiYjBiY2NlYzUzMTdjMjc3OTE1ODY3MTI2MzhjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTc1LDEwICs3NSwxMCBAQCBA
aW1wbGVtZW50YXRpb24gV2ViUERGVmlldyB7CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1F
VHlwZXMKIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICByZXR1
cm4gQFsKICAgICAgICAgQCJ0ZXh0L3BkZiIsCiAgICAgICAgIEAiYXBwbGljYXRpb24vcGRmIiwK
LSAgICAgICAgbmlsXTsKKyAgICBdOwogfQogCiArIChDR0NvbG9yUmVmKXNoYWRvd0NvbG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCA4YjdiYTVjYWJjODFkNzhiNjhhYTI0YmQ1
ZWZmMjVhZDI3OGIyYmE1Li45ZTEyODk2ZDc3ZmUwOGJlN2YwYjYwNmRjMTFhN2ZhMTZlNDc2ZjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTU4LDEwICs1OCwxMiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ub3VjaC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29y
ZS9XQUtBcHBLaXRTdHVicy5oPgpAQCAtMTc5LDE1ICsxODEsNiBAQCBzdGF0aWMgQ2xhc3MgZWxl
bWVudENsYXNzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZywgQ2xhc3MgZGVmYXVsdENsYXNzKQog
ICAgIHJldHVybiBvYmpjQ2xhc3M7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpraXQoY29uc3QgVmVj
dG9yPEludFJlY3Q+JiByZWN0cykKLXsKLSAgICBzaXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsK
LSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6c2l6ZV07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0c1tpXV1dOwot
ICAgIHJldHVybiBhcnJheTsKLX0KLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRp
YyBXS1F1YWQgd2tRdWFkRnJvbUZsb2F0UXVhZChjb25zdCBGbG9hdFF1YWQmIGluUXVhZCkKQEAg
LTUxNCw3ICs1MDcsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwogICAgIG5vZGUudGV4dFJl
Y3RzKHJlY3RzKTsKLSAgICByZXR1cm4ga2l0KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApAQCAtNjMxLDEyICs2MjQsMTEg
QEAgLSAoQ0dJbWFnZVJlZilyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3Jj
ZUJsYWNrVGV4dAogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCiB7Ci0gICAgLy8gRklYTUU6IFRo
ZSBjYWxsIHRvIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBzaG91bGQgYmUg
bW92ZWQgaW50byBXZWJDb3JlOjpSYW5nZS4KICAgICBhdXRvJiByYW5nZSA9ICpjb3JlKHNlbGYp
OwogICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiByZWN0czsKICAgICByYW5nZS5vd25lckRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgcmFu
Z2UuYWJzb2x1dGVUZXh0UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBraXQocmVjdHMpOworICAg
IHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0Fy
cmF5ICopbGluZUJveFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRXhjZXB0aW9uSGFuZGxlcnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhj
ZXB0aW9uSGFuZGxlcnMubW0KaW5kZXggYjUwMzBkMGVlNDY5NjI1ZDkzMDFmNTE3MWEwNGQ3YmVl
MWM2ZjdjNi4uYzhiZTU1MWI4NTBiY2UxNzIzYTJmMTE0ZTJkZWU2Y2U2ZGQyOTVhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQpAQCAt
NDgsNyArNDgsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcmFpc2VET01FcnJvckV4Y2VwdGlv
bihXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjKQogICAgIGVsc2UKICAgICAgICAgcmVhc29uID0g
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBET01FeGNlcHRp
b24sIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdOwogCi0gICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5m
byA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJl
ciBudW1iZXJXaXRoSW50OmRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdLCBET01FeGNlcHRpb24sIG5p
bF07CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2Vw
dGlvbiwgbmlsXTsKIAogICAgIE5TRXhjZXB0aW9uICpleGNlcHRpb24gPSBbTlNFeGNlcHRpb24g
ZXhjZXB0aW9uV2l0aE5hbWU6RE9NRXhjZXB0aW9uIHJlYXNvbjpyZWFzb24gdXNlckluZm86dXNl
ckluZm9dOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
QmFja0ZvcndhcmRMaXN0Lm1tCmluZGV4IDE4ZjAxM2EwYTg3NWJkMzZlODk1NTg2NjM0YWI3ZDhi
MGE4YjAyYjcuLjhiOTk0ZWQyZDAwNzA2ZGQ4ZTRlZDZiMjJiNmIzYjdlOTg0NWY2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRM
aXN0Lm1tCkBAIC0xNTgsMjEgKzE1OCwyMSBAQCAtICh2b2lkKXJlbW92ZUl0ZW06KFdlYkhpc3Rv
cnlJdGVtICopaXRlbQogLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9u
CiB7CiAgICAgQmFja0ZvcndhcmRMaXN0ICpjb3JlQkZMaXN0ID0gY29yZShzZWxmKTsKLSAgICAK
KwogICAgIGF1dG8mIGhpc3RvcnlJdGVtcyA9IGNvcmVCRkxpc3QtPmVudHJpZXMoKTsKICAgICB1
bnNpZ25lZCBzaXplID0gaGlzdG9yeUl0ZW1zLnNpemUoKTsKICAgICBOU011dGFibGVBcnJheSAq
ZW50cmllc0FycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpz
aXplXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBb
ZW50cmllc0FycmF5IGFkZE9iamVjdDpba2l0KGNvbnN0X2Nhc3Q8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0qPihoaXN0b3J5SXRlbXNbaV0ucHRyKCkpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25JbmNs
dWRpbmdDaGlsZHJlbjpOT11dOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9
IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgZW50
cmllc0FycmF5LCBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5RW50cmllc0tleSwKLSAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpjb3JlQkZMaXN0LT5jdXJyZW50KCld
LCBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5Q3VycmVudEtleSwKLSAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6Y29yZUJGTGlzdC0+Y2FwYWNpdHkoKV0sIFdlYkJhY2tGb3J3YXJk
TGlzdERpY3Rpb25hcnlDYXBhY2l0eUtleSwKLSAgICAgICAgbmlsXTsKLSAgICAgICAgCisKKyAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBAeworICAgICAgICBXZWJCYWNrRm9yd2FyZExp
c3REaWN0aW9uYXJ5RW50cmllc0tleTogZW50cmllc0FycmF5LAorICAgICAgICBXZWJCYWNrRm9y
d2FyZExpc3REaWN0aW9uYXJ5Q3VycmVudEtleTogQChjb3JlQkZMaXN0LT5jdXJyZW50KCkpLAor
ICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5Q2FwYWNpdHlLZXk6IEAoY29yZUJG
TGlzdC0+Y2FwYWNpdHkoKSksCisgICAgfTsKKwogICAgIFtlbnRyaWVzQXJyYXkgcmVsZWFzZV07
Ci0gICAgCisKICAgICByZXR1cm4gZGljdGlvbmFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCmluZGV4IGI4YmMxNDc5YTE4YTg0NTQyYjBm
MzY0M2FmYjhhMTIyYTUxNDNjZWEuLmYyNzQ3MGRiYzMwMGNhYTBlNWNjMDI5YTI3YjJkYTEzOWZh
ZjIxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rvcnku
bW0KQEAgLTExOSwxMSArMTE5LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJIaXN0b3J5UHJpdmF0
ZQogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOgotICAgICAgICBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICBAIjEwMDAiLCBAIldlYktp
dEhpc3RvcnlJdGVtTGltaXQiLAotICAgICAgICAgICAgQCI3IiwgQCJXZWJLaXRIaXN0b3J5QWdl
SW5EYXlzTGltaXQiLAotICAgICAgICAgICAgbmlsXV07ICAgIAorICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6QHsKKyAgICAgICAgQCJX
ZWJLaXRIaXN0b3J5SXRlbUxpbWl0IjogQCIxMDAwIiwKKyAgICAgICAgQCJXZWJLaXRIaXN0b3J5
QWdlSW5EYXlzTGltaXQiOiBAIjciLAorICAgIH1dOwogfQogCiAtIChpZClpbml0CkBAIC03Mjcs
MTIgKzcyNiwxMSBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZClfc2VuZE5vdGlmaWNhdGlv
bjooTlNTdHJpbmcgKiluYW1lIGVudHJpZXM6KE5TQXJyYXkgKillbnRyaWVzCiB7Ci0gICAgTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czplbnRyaWVzLCBXZWJIaXN0b3J5SXRlbXNLZXksIG5pbF07CisgICAgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IEB7IFdlYkhpc3RvcnlJdGVtc0tleTogZW50cmllcyB9OwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihuYW1lLCBz
ZWxmLCB1c2VySW5mbyk7CiAjZWxzZSAgICAKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdCi0gICAgICAgIHBvc3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2JqZWN0OnNl
bGYgdXNlckluZm86dXNlckluZm9dOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6c2VsZiB1c2VySW5mbzp1
c2VySW5mb107CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggYThkM2JjMjA2OGYyYzc2M2Y5NTU3ZDgxYzdm
NWRkZjBmNWI3ZTA0OS4uZGZhY2IzN2QxMDkzODVjZGE2MjU3MWIzZDAzZjM1YjliOTRlNjUyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRl
bS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVt
Lm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2Nv
Y29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zNDYsMTkgKzM0Nyw4IEBAIC0gKGlkKWluaXRGcm9t
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilkaWN0CiAgICAgaWYgKFtk
aWN0IF93ZWJraXRfYm9vbEZvcktleTpsYXN0VmlzaXRXYXNGYWlsdXJlS2V5XSkKICAgICAgICAg
Y29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAgICAgCi0gICAg
aWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6cmVk
aXJlY3RVUkxzS2V5XSkgewotICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VV
bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Ci0gICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+cmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVkaXJlY3RVUkxzIGNvdW50XSk7Ci0KLSAgICAgICAgZm9y
IChpZCByZWRpcmVjdFVSTCBpbiByZWRpcmVjdFVSTHMpIHsKLSAgICAgICAgICAgIGlmICghW3Jl
ZGlyZWN0VVJMIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+dW5jaGVja2Vk
QXBwZW5kKChOU1N0cmluZyAqKXJlZGlyZWN0VVJMKTsKLSAgICAgICAgfQotCi0gICAgICAgIF9w
cml2YXRlLT5fcmVkaXJlY3RVUkxzID0gV1RGTW92ZShyZWRpcmVjdFVSTHNWZWN0b3IpOwotICAg
IH0KKyAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZv
cktleTpyZWRpcmVjdFVSTHNLZXldKQorICAgICAgICBfcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9
IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KG1ha2VWZWN0b3I8U3RyaW5nPihyZWRpcmVjdFVS
THMpKTsKIAogICAgIE5TQXJyYXkgKmNoaWxkRGljdHMgPSBbZGljdCBvYmplY3RGb3JLZXk6Y2hp
bGRyZW5LZXldOwogICAgIGlmIChjaGlsZERpY3RzKSB7CkBAIC00MzYsMTYgKzQyNiw5IEBAIC0g
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbgogICAgIH0KICAgICBpZiAo
Y29yZUl0ZW0tPmxhc3RWaXNpdFdhc0ZhaWx1cmUoKSkKICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0
OkBZRVMgZm9yS2V5Omxhc3RWaXNpdFdhc0ZhaWx1cmVLZXldOwotICAgIGlmIChWZWN0b3I8U3Ry
aW5nPiogcmVkaXJlY3RVUkxzID0gX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMuZ2V0KCkpIHsKLSAg
ICAgICAgc2l6ZV90IHNpemUgPSByZWRpcmVjdFVSTHMtPnNpemUoKTsKLSAgICAgICAgQVNTRVJU
KHNpemUpOwotICAgICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDooTlNTdHJp
bmcgKilyZWRpcmVjdFVSTHMtPmF0KGkpXTsKLSAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OnJlc3Vs
dCBmb3JLZXk6cmVkaXJlY3RVUkxzS2V5XTsKLSAgICAgICAgW3Jlc3VsdCByZWxlYXNlXTsKLSAg
ICB9Ci0gICAgCisgICAgaWYgKGF1dG8gcmVkaXJlY3RVUkxzID0gX3ByaXZhdGUtPl9yZWRpcmVj
dFVSTHMuZ2V0KCkpCisgICAgICAgIFtkaWN0IHNldE9iamVjdDpjcmVhdGVOU0FycmF5KCpyZWRp
cmVjdFVSTHMpLmdldCgpIGZvcktleTpyZWRpcmVjdFVSTHNLZXldOworCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoaW5jbHVkZXNDaGlsZHJlbiAmJiBjb3JlSXRlbS0+Y2hpbGRy
ZW4oKS5zaXplKCkpIHsKICNlbHNlCkBAIC00NjgsOCArNDUxLDggQEAgLSAoTlNEaWN0aW9uYXJ5
ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uCiAgICAgICAgIFtkaWN0IHNldE9iamVjdDp2aWV3
cG9ydEFyZ3VtZW50cyBmb3JLZXk6QCJXZWJWaWV3cG9ydEFyZ3VtZW50cyJdOwogCiAgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBjb3JlKF9wcml2YXRlKS0+c2Nyb2xsUG9zaXRpb24oKTsK
LSAgICBbZGljdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c2Nyb2xsUG9zaXRp
b24ueCgpXSBmb3JLZXk6c2Nyb2xsUG9pbnRYS2V5XTsKLSAgICBbZGljdCBzZXRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6c2Nyb2xsUG9zaXRpb24ueSgpXSBmb3JLZXk6c2Nyb2xsUG9p
bnRZS2V5XTsKKyAgICBbZGljdCBzZXRPYmplY3Q6QChzY3JvbGxQb3NpdGlvbi54KCkpIGZvcktl
eTpzY3JvbGxQb2ludFhLZXldOworICAgIFtkaWN0IHNldE9iamVjdDpAKHNjcm9sbFBvc2l0aW9u
LnkoKSkgZm9yS2V5OnNjcm9sbFBvaW50WUtleV07CiAjZW5kaWYKIAogICAgIHJldHVybiBkaWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0
aFRpdGxlcy5tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0aFRp
dGxlcy5tCmluZGV4IDE3Yjk4Yjg3NDg4NGE2ODNjZjZmNzA5MGNkMTk0MDc0NjlhNjE3NGIuLmMx
ZmJkM2VjNjk2MjgzNmUxNmQ2ZDA3MmQxN2Q5N2RiYzU5ZjMzODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0KQEAgLTQxLDcg
KzQxLDcgQEAgKyAoTlNBcnJheSAqKWFycmF5V2l0aElGVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBl
CiAgICAgc3RhdGljIE5TQXJyYXkgKmNhbm5lZEFycmF5ID0gbmlsOwogCiAgICAgaWYgKGNhbm5l
ZEFycmF5ID09IG5pbCkgewotICAgICAgICBjYW5uZWRBcnJheSA9IFtbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlXSByZXRhaW5dOworICAgICAgICBj
YW5uZWRBcnJheSA9IFtAW1dlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV0gcmV0YWluXTsKICAg
ICB9CiAKICAgICByZXR1cm4gY2FubmVkQXJyYXk7CkBAIC03Myw3ICs3Myw3IEBAICsodm9pZCl3
cml0ZVVSTHM6KE5TQXJyYXkgKilVUkxzIGFuZFRpdGxlczooTlNBcnJheSAqKXRpdGxlcyB0b1Bh
c3RlYm9hcmQ6KE5TUGFzCiAgICAgICAgIFt0aXRsZXNPckVtcHR5U3RyaW5ncyBhZGRPYmplY3Q6
KHRpdGxlcyA9PSBuaWwpID8gQCIiIDogW1t0aXRsZXMgb2JqZWN0QXRJbmRleDppbmRleF0gX3dl
YmtpdF9zdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZV1dOwogICAgIH0KIAotICAgIFtwYXN0ZWJv
YXJkIHNldFByb3BlcnR5TGlzdDpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOlVSTFN0cmluZ3Ms
IHRpdGxlc09yRW1wdHlTdHJpbmdzLCBuaWxdCisgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlM
aXN0OkBbVVJMU3RyaW5ncywgdGl0bGVzT3JFbXB0eVN0cmluZ3NdCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JUeXBlOldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IDUxMzdlNDFjMjQyZmNhNTVj
NGEwOTRiNjQzMzczZTllMGE2ZmVjMmIuLjE1MTNmNGU3OWIwYzQ1N2MxOTdiN2Y2ODEyY2E1OGM0
ZDg2OTAwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAt
NzEsNTAgKzcxLDQ5IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiArIChOU0FycmF5ICopc3RhdGlz
dGljcwogewotICAgIFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHMgPSBXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuZ2V0U3RhdGlzdGljcygpOwotCi0gICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OnMuaW1hZ2VzLmNvdW50XSwgQCJJbWFnZXMiLAotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cy5jc3NTdHlsZVNoZWV0cy5jb3VudF0sIEAiQ1NTIiwKKyAgICBhdXRvIHMg
PSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuZ2V0U3RhdGlzdGljcygpOworICAg
IHJldHVybiBAWworICAgICAgICBAeworICAgICAgICAgICAgQCJJbWFnZXMiOiBAKHMuaW1hZ2Vz
LmNvdW50KSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRzLmNvdW50KSwK
ICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMu
eHNsU3R5bGVTaGVldHMuY291bnRdLCBAIlhTTCIsCisgICAgICAgICAgICBAIlhTTCI6IEAocy54
c2xTdHlsZVNoZWV0cy5jb3VudCksCiAjZWxzZQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRpZgot
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLmNvdW50XSwgQCJK
YXZhU2NyaXB0IiwKLSAgICAgICAgICAgIG5pbF0sCi0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50OnMuaW1hZ2VzLnNpemVdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRzLnNpemVdICxAIkNTUyIsCisgICAgICAgICAg
ICBAIkphdmFTY3JpcHQiOiBAKHMuc2NyaXB0cy5jb3VudCksCisgICAgICAgIH0sCisgICAgICAg
IEB7CisgICAgICAgICAgICBAIkltYWdlcyI6IEAocy5pbWFnZXMuc2l6ZSksCisgICAgICAgICAg
ICBAIkNTUyI6IEAocy5jc3NTdHlsZVNoZWV0cy5zaXplKSwKICNpZiBFTkFCTEUoWFNMVCkKLSAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMuc2l6ZV0s
IEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQChzLnhzbFN0eWxlU2hlZXRzLnNpemUpLAog
I2Vsc2UKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdLCBAIlhTTCIsCisg
ICAgICAgICAgICBAIlhTTCI6IEAoMCksCiAjZW5kaWYKLSAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OnMuc2NyaXB0cy5zaXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAgICAg
IG5pbF0sCi0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuaW1hZ2VzLmxpdmVTaXpl
XSwgQCJJbWFnZXMiLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5jc3NT
dHlsZVNoZWV0cy5saXZlU2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAgICAgIEAiSmF2YVNjcmlwdCI6
IEAocy5zY3JpcHRzLnNpemUpLAorICAgICAgICB9LAorICAgICAgICBAeworICAgICAgICAgICAg
QCJJbWFnZXMiOiBAKHMuaW1hZ2VzLmxpdmVTaXplKSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChz
LmNzc1N0eWxlU2hlZXRzLmxpdmVTaXplKSwKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMubGl2ZVNpemVdLCBAIlhT
TCIsCisgICAgICAgICAgICBAIlhTTCI6IEAocy54c2xTdHlsZVNoZWV0cy5saXZlU2l6ZSksCiAj
ZWxzZQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAg
ICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRpZgotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cy5zY3JpcHRzLmxpdmVTaXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAg
ICAgIG5pbF0sCi0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuaW1hZ2VzLmRlY29k
ZWRTaXplXSwgQCJJbWFnZXMiLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
cy5jc3NTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAgICAgIEAiSmF2
YVNjcmlwdCI6IEAocy5zY3JpcHRzLmxpdmVTaXplKSwKKyAgICAgICAgfSwKKyAgICAgICAgQHsK
KyAgICAgICAgICAgIEAiSW1hZ2VzIjogQChzLmltYWdlcy5kZWNvZGVkU2l6ZSksCisgICAgICAg
ICAgICBAIkNTUyI6IEAocy5jc3NTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSksCiAjaWYgRU5BQkxF
KFhTTFQpCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnhzbFN0eWxlU2hl
ZXRzLmRlY29kZWRTaXplXSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKHMueHNsU3R5
bGVTaGVldHMuZGVjb2RlZFNpemUpLAogI2Vsc2UKLSAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OjBdLCBAIlhTTCIsCisgICAgICAgICAgICBAIlhTTCI6IEAoMCksCiAjZW5kaWYK
LSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuc2NyaXB0cy5kZWNvZGVkU2l6
ZV0sIEAiSmF2YVNjcmlwdCIsCi0gICAgICAgICAgICBuaWxdLAotICAgICAgICBuaWxdOworICAg
ICAgICAgICAgQCJKYXZhU2NyaXB0IjogQChzLnNjcmlwdHMuZGVjb2RlZFNpemUpLAorICAgICAg
ICB9LAorICAgIF07CiB9CiAKICsgKHZvaWQpZW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IDQ2NjY2NTM0MmExZWEzOWY3
NzBiNzYwODRiNGJiMmNjMzhlNTNiZTAuLjRjNGZlYzc4ZjNhYjk1YTFkYzA3NGFlN2E0OGY5OTBm
MmMxNTM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5tbQpAQCAtMTk5LDIyICsxOTksMjAgQEAgKyAodm9pZClzdG9wSWdub3JpbmdX
ZWJDb3JlTm9kZUxlYWtzCiAKICsgKE5TRGljdGlvbmFyeSAqKW1lbW9yeVN0YXRpc3RpY3MKIHsK
LSAgICBXVEY6OkZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RG
OjpmYXN0TWFsbG9jU3RhdGlzdGljcygpOwotICAgIAorICAgIGF1dG8gZmFzdE1hbGxvY1N0YXRp
c3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soY29tbW9uVk0oKSk7CiAgICAgc2l6ZV90IGhlYXBTaXplID0gY29tbW9uVk0oKS5oZWFwLnNp
emUoKTsKICAgICBzaXplX3QgaGVhcEZyZWUgPSBjb21tb25WTSgpLmhlYXAuY2FwYWNpdHkoKSAt
IGhlYXBTaXplOwotICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMg
PSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7Ci0gICAgCi0gICAgcmV0dXJuIFtOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXNdLCBA
IkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiLAotICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXNdLCBAIkZh
c3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzXSwgQCJGYXN0TWFs
bG9jRnJlZUxpc3RCeXRlcyIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6aGVhcFNpemVdLCBAIkphdmFTY3JpcHRIZWFwU2l6ZSIsCi0gICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6aGVhcEZyZWVdLCBAIkphdmFTY3JpcHRGcmVlU2l6ZSIsCi0g
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDoodW5zaWduZWQg
aW50KWdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXNdLCBAIkphdmFTY3JpcHRTdGFja1NpemUi
LAotICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6KHVuc2ln
bmVkIGludClnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlc10sIEAiSmF2YVNjcmlwdEpJVFNpemUi
LAotICAgICAgICAgICAgbmlsXTsKKyAgICBhdXRvIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFs
TWVtb3J5U3RhdGlzdGljcygpOworICAgIHJldHVybiBAeworICAgICAgICBAIkZhc3RNYWxsb2NS
ZXNlcnZlZFZNQnl0ZXMiOiBAKGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcyks
CisgICAgICAgIEAiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiOiBAKGZhc3RNYWxsb2NTdGF0
aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpLAorICAgICAgICBAIkZhc3RNYWxsb2NGcmVlTGlzdEJ5
dGVzIjogQChmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSwKKyAgICAgICAgQCJK
YXZhU2NyaXB0SGVhcFNpemUiOiBAKGhlYXBTaXplKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0RnJl
ZVNpemUiOiBAKGhlYXBGcmVlKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0U3RhY2tTaXplIjogQChn
bG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSwKKyAgICAgICAgQCJKYXZhU2NyaXB0SklUU2l6
ZSI6IEAoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpLAorICAgIH07CiB9CiAKICsgKHZvaWQp
cmV0dXJuRnJlZU1lbW9yeVRvU3lzdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYktpdEVycm9ycy5tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJLaXRFcnJvcnMubQppbmRleCBjNTI3ODM3NGU5NGUyMDE2Yzk2MDg4YTAxZjVkODVhNWRjMzhl
NmEzLi44YjNiYjIzZWQzMWJhZWI0Mzk4ZjI0ZWM1MWYyNDNmMTE1YTc4ZjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KQEAgLTcxLDEyICs3MSwxMiBA
QCAtIChpbnN0YW5jZXR5cGUpX3dlYmtpdF9pbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21h
aW4gY29kZTooaW50KWNvZGUgVVJMOihOUwogewogICAgIC8vIEluc2VydCBhIGxvY2FsaXplZCBz
dHJpbmcgaGVyZSBmb3IgdGhvc2UgZm9sa3Mgbm90IHNhdnZ5IHRvIG91ciBjYXRlZ29yeSBtZXRo
b2RzLgogICAgIE5TRGljdGlvbmFyeSAqZGVzY3JpcHRpb25zRGljdCA9IFtkZXNjcmlwdGlvbnMg
b2JqZWN0Rm9yS2V5OmRvbWFpbl07Ci0gICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb25zRGljdCA/IFtkZXNjcmlwdGlvbnNEaWN0IG9iamVjdEZvcktleTpbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpjb2RlXV0gOiBuaWw7Ci0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBV
UkwsIEAiTlNFcnJvckZhaWxpbmdVUkxLZXkiLAotICAgICAgICBbVVJMIGFic29sdXRlU3RyaW5n
XSwgTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleSwKLSAgICAgICAgbG9jYWxpemVk
RGVzY3JpcHRpb24sIE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXksCi0gICAgICAgIG5pbF07Cisg
ICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25zRGljdCA/IFtk
ZXNjcmlwdGlvbnNEaWN0IG9iamVjdEZvcktleTpAKGNvZGUpXSA6IG5pbDsKKyAgICBOU0RpY3Rp
b25hcnkgKmRpY3QgPSBAeworICAgICAgICBAIk5TRXJyb3JGYWlsaW5nVVJMS2V5IjogVVJMLAor
ICAgICAgICBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OiBbVVJMIGFic29sdXRl
U3RyaW5nXSwKKyAgICAgICAgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTogbG9jYWxpemVkRGVz
Y3JpcHRpb24sCisgICAgfTsKICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhEb21haW46ZG9tYWlu
IGNvZGU6Y29kZSB1c2VySW5mbzpkaWN0XTsKIH0KIApAQCAtOTEsMjEgKzkxLDIxIEBAICsgKHZv
aWQpX3JlZ2lzdGVyV2ViS2l0RXJyb3JzCiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgogICAgICAgICAgICAgICAgIC8vIFBvbGljeSBlcnJvcnMKLSAgICAg
ICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd01JTUVUeXBlLCAgICAg
ICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RT
aG93TUlNRVR5cGVdLAotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5u
b3RTaG93VVJMLCAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OiBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkxdLAotICAgICAgICAgICAgICAgIFdlYktpdEVycm9y
RGVzY3JpcHRpb25GcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lD
aGFuZ2VdLAotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RVc2VS
ZXN0cmljdGVkUG9ydCwgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJL
aXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0XSwKLSAgICAgICAgICAgICAgICBXZWJLaXRF
cnJvckRlc2NyaXB0aW9uRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50
RmlsdGVyXSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hv
d01JTUVUeXBlLCAgICAgICAgICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVU
eXBlKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VS
TCwgICAgICAgICAgICAgICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCksCisg
ICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEludGVycnVwdGVk
QnlQb2xpY3lDaGFuZ2UsICAgQChXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xp
Y3lDaGFuZ2UpLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RV
c2VSZXN0cmljdGVkUG9ydCwgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0
cmljdGVkUG9ydCksCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1l
TG9hZEJsb2NrZWRCeUNvbnRlbnRGaWx0ZXIsICAgICAgQChXZWJLaXRFcnJvckZyYW1lTG9hZEJs
b2NrZWRCeUNvbnRlbnRGaWx0ZXIpLAogCiAgICAgICAgICAgICAgICAgLy8gUGx1Zy1pbiBhbmQg
amF2YSBlcnJvcnMKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90
RmluZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDog
V2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uQ2Fubm90TG9hZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1Z0luXSwKLSAgICAgICAg
ICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uSmF2YVVuYXZhaWxhYmxlLCAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JKYXZhVW5hdmFp
bGFibGVdLAotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5j
ZWxsZWRDb25uZWN0aW9uLCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJL
aXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb25dLAotICAgICAgICAgICAgICAgIFdlYktp
dEVycm9yRGVzY3JpcHRpb25QbHVnSW5XaWxsSGFuZGxlTG9hZCwgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkXSwK
KyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90RmluZFBsdWdpbiwg
ICAgICAgICAgICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbiksCisgICAg
ICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAgICAg
ICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW4pLAorICAgICAgICAg
ICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25KYXZhVW5hdmFpbGFibGUsICAgICAgICAgICAg
ICAgICAgICAgIEAoV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUpLAorICAgICAgICAgICAgICAg
IFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uLCAgICAgICAg
ICAgIEAoV2ViS2l0RXJyb3JQbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uKSwKKyAgICAgICAgICAg
ICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxvYWQsICAgICAgICAg
ICAgICAgICBAKFdlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQpLAogCiAgICAgICAgICAg
ICAgICAgLy8gR2VvbG9jYXRpb24gZXJyb3JzCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JE
ZXNjcmlwdGlvbkdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duLCAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd25dLAor
ICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9u
VW5rbm93biwgICAgICAgICAgIEAoV2ViS2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93
biksCiAgICAgICAgICAgICAgICAgbmlsXTsKIAogICAgICAgICAgICAgW05TRXJyb3IgX3dlYmtp
dF9hZGRFcnJvcnNXaXRoQ29kZXNBbmREZXNjcmlwdGlvbnM6ZGljdCBpbkRvbWFpbjpXZWJLaXRF
cnJvckRvbWFpbl07CkBAIC0xMzksNyArMTM5LDcgQEAgLSAoaWQpX2luaXRXaXRoUGx1Z2luRXJy
b3JDb2RlOihpbnQpY29kZQogICAgIAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnVzZXJJbmZv
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICBOU0RpY3Rpb25hcnkg
KmRlc2NyaXB0aW9uc0ZvcldlYktpdEVycm9yRG9tYWluID0gW2Rlc2NyaXB0aW9ucyBvYmplY3RG
b3JLZXk6V2ViS2l0RXJyb3JEb21haW5dOwotICAgIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlw
dGlvbiA9IFtkZXNjcmlwdGlvbnNGb3JXZWJLaXRFcnJvckRvbWFpbiBvYmplY3RGb3JLZXk6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6Y29kZV1dOworICAgIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNj
cmlwdGlvbiA9IFtkZXNjcmlwdGlvbnNGb3JXZWJLaXRFcnJvckRvbWFpbiBvYmplY3RGb3JLZXk6
QChjb2RlKV07CiAgICAgaWYgKGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICBbdXNlcklu
Zm8gc2V0T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9uIGZvcktleTpOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5XTsKICAgICBpZiAoY29udGVudFVSTCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggNmIwZTg5Njc1
YTBkMTIwOGQ5Y2E5NTgyOWE1NjA1MWE2N2JhYzIxNS4uNzM5MmYxMDU5YmNiNDVlOTUyMGFmOGI5
NjJjZjQwMzViYWI4MmY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC05OSw3ICs5OSw3IEBAIC0gKHZvaWQpX3dl
Yl9kcmF3QXRQb2ludDooTlNQb2ludClwb2ludCBmb250OihOU0ZvbnQgKilmb250IHRleHRDb2xv
cjooTlNDb2xvciAqCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvaW50LnkgKz0gW2ZvbnQg
ZGVzY2VuZGVyXTsKIAotICAgICAgICBbc2VsZiBkcmF3QXRQb2ludDpwb2ludCB3aXRoQXR0cmli
dXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Zm9udCwgTlNG
b250QXR0cmlidXRlTmFtZSwgdGV4dENvbG9yLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWUsIG5pbF1dOworICAgICAgICBbc2VsZiBkcmF3QXRQb2ludDpwb2ludCB3aXRoQXR0cmlidXRl
czpAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBmb250LCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWU6IHRleHRDb2xvciB9XTsKICAgICB9CiB9CiAKQEAgLTExNSw3ICsxMTUsNyBAQCAtIChm
bG9hdClfd2ViX3dpZHRoV2l0aEZvbnQ6KE5TRm9udCAqKWZvbnQKICAgICAgICAgcmV0dXJuIHdl
YkNvcmVGb250LndpZHRoKHJ1bik7CiAgICAgfQogCi0gICAgcmV0dXJuIFtzZWxmIHNpemVXaXRo
QXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Zm9u
dCwgTlNGb250QXR0cmlidXRlTmFtZSwgbmlsXV0ud2lkdGg7CisgICAgcmV0dXJuIFtzZWxmIHNp
emVXaXRoQXR0cmlidXRlczpAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBmb250IH1dLndpZHRoOwog
fQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IGM1NDEzZTgxYzZh
M2VjYjJlYzk3ODFmNmI4YmZkNmMyYjJhMDVkZjEuLmJiZmZhZGU2NWJkMTc4ZTJhM2Y2YTJjNDBk
YzYwNmUwYTQ4MGFjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQg
PHN5cy9zdGF0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBAaW1wbGVt
ZW50YXRpb24gTlNGaWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5t
bQppbmRleCBiYmI2MmNiYWZkYmJlMDk4NzVhMmNlNDU1ODhjODhhMTc4YWZmY2VkLi5lMWM1ZWVi
MzI4M2YwNjZkODEyY2NiMDU2YzQ3MDdmMzUyYjA4NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQpAQCAtMTA2LDcg
KzEwNiw3IEBAICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JJbWFnZUluY2x1ZGlu
Z0FyY2hpdmU6KEJPT0wpaGFzQXJjaGl2ZQogCiArIChOU0FycmF5ICopX3dlYl9kcmFnVHlwZXNG
b3JVUkwKIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICByZXR1
cm4gQFsKICAgICAgICAgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLAogICAgICAgICBsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLAogICAgICAgICBXZWJVUkxQYm9hcmRUeXBlLApAQCAtMTE0
LDcgKzExNCw3IEBAICsgKE5TQXJyYXkgKilfd2ViX2RyYWdUeXBlc0ZvclVSTAogICAgICAgICBs
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLAogICAgICAgICBsZWdhY3lGaWxlbmFtZXNQYXN0
ZWJvYXJkVHlwZSgpLAogICAgICAgICBsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgp
LAotICAgICAgICBuaWxdOworICAgIF07CiB9CiAKIC0gKE5TVVJMICopX3dlYl9iZXN0VVJMCkBA
IC0xNzcsNyArMTc3LDcgQEAgLSAodm9pZClfd2ViX3dyaXRlVVJMOihOU1VSTCAqKVVSTCBhbmRU
aXRsZTooTlNTdHJpbmcgKil0aXRsZSB0eXBlczooTlNBcnJheSAqKXQKICAgICBpZiAoW3R5cGVz
IGNvbnRhaW5zT2JqZWN0OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICBb
c2VsZiBzZXRTdHJpbmc6W1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSBmb3JUeXBlOmxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgIGlmIChbdHlwZXMgY29udGFpbnNPYmplY3Q6
V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlXSkKLSAgICAgICAgW1dlYlVSTHNXaXRoVGl0bGVz
IHdyaXRlVVJMczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6VVJMXSBhbmRUaXRsZXM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0OnRpdGxlXSB0b1Bhc3RlYm9hcmQ6c2VsZl07CisgICAgICAgIFtX
ZWJVUkxzV2l0aFRpdGxlcyB3cml0ZVVSTHM6QFtVUkxdIGFuZFRpdGxlczpAW3RpdGxlXSB0b1Bh
c3RlYm9hcmQ6c2VsZl07CiB9CiAKICsgKGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJkU3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyB3aXRoT3duZXI6KGlkKW93bmVyCkBAIC0xODUsNyArMTg1LDcg
QEAgKyAoaW50KV93ZWJfc2V0RmluZFBhc3RlYm9hcmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IHdpdGhPd25lcjooaWQpb3duZXIKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIE5TUGFzdGVib2FyZCAqZmluZFBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpOU0ZpbmRQYm9hcmRdOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAotICAgIFtmaW5kUGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm93bmVy
XTsKKyAgICBbZmluZFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbbGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV0gb3duZXI6b3duZXJdOwogICAgIFtmaW5kUGFzdGVib2FyZCBzZXRTdHJpbmc6
c3RyaW5nIGZvclR5cGU6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgcmV0dXJu
IFtmaW5kUGFzdGVib2FyZCBjaGFuZ2VDb3VudF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCBjMGU3ZmE5MzFhNGY0YWM1MzU3MjQ2
NGZhMDZiMGIwMDEzN2E1YzczLi43ZTk4OTJmYzNkMjJkYjUyOTFiZTRhNjYxMjk0NDVkZmFhZjgz
YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0
cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMu
bW0KQEAgLTM5LDcgKzM5LDYgQEAKICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KICNpbXBvcnQg
PHVuaWNvZGUvdXNjcmlwdC5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQg
PHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyLm1tCmluZGV4IGEwNGJjNTU3YmZkZGM5NzZmZDE4MDVhZmViNzg2NWI0ZDEyN2FlNmQuLjk1
NjFkMjJlYmJmYjllYTQ5ZDRmODgzNmIyZjBmZDU5NWNhNjhkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTQxLDE3ICsxNDEsMTQgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjcHVfdHkKICAgICBOU1N0cmluZyAqcGx1Z2luSG9zdEFwcFBhdGggPSBbW05TQnVuZGxl
IGJ1bmRsZUZvckNsYXNzOltXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgY2xhc3NdXSBwYXRoRm9y
QXV4aWxpYXJ5RXhlY3V0YWJsZTpwbHVnaW5Ib3N0QXBwTmFtZV07CiAgICAgTlNTdHJpbmcgKnBs
dWdpbkhvc3RBcHBFeGVjdXRhYmxlUGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cGx1
Z2luSG9zdEFwcFBhdGhdIGV4ZWN1dGFibGVQYXRoXTsKIAotICAgIE5TRGljdGlvbmFyeSAqbGF1
bmNoUHJvcGVydGllcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRL
ZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5Ib3N0QXBw
RXhlY3V0YWJsZVBhdGgsIEAicGx1Z2luSG9zdFBhdGgiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpwbHVnaW5BcmNoaXRlY3R1
cmVdLCBAImNwdVR5cGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmVmZXJyZWRCdW5kbGVMb2NhbGl6YXRpb25OYW1lKCksIEAibG9jYWxpemF0aW9uIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKLQorICAgIE5TRGljdGlvbmFy
eSAqbGF1bmNoUHJvcGVydGllcyA9IEB7CisgICAgICAgIEAicGx1Z2luSG9zdFBhdGgiOiBwbHVn
aW5Ib3N0QXBwRXhlY3V0YWJsZVBhdGgsCisgICAgICAgIEAiY3B1VHlwZSI6IEAocGx1Z2luQXJj
aGl0ZWN0dXJlKSwKKyAgICAgICAgQCJsb2NhbGl6YXRpb24iOiBwcmVmZXJyZWRCdW5kbGVMb2Nh
bGl6YXRpb25OYW1lKCksCisgICAgfTsKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxp
c3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmxhdW5jaFByb3BlcnRpZXMgZm9y
bWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxw
dHJdOwogICAgIEFTU0VSVChkYXRhKTsKIAotICAgIFtsYXVuY2hQcm9wZXJ0aWVzIHJlbGVhc2Vd
OwotCiAgICAga2Vybl9yZXR1cm5fdCBrciA9IF9XS1BBU3Bhd25QbHVnaW5Ib3N0KG1fcGx1Z2lu
VmVuZG9yUG9ydCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4o
W2RhdGEgYnl0ZXNdKSksIFtkYXRhIGxlbmd0aF0sICZwbHVnaW5Ib3N0UG9ydCk7CiAKICAgICBp
ZiAoa3IgPT0gTUFDSF9TRU5EX0lOVkFMSURfREVTVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhv
c3RQcm94eS5tbQppbmRleCAzYjI5NjY2ZjdkZjZhN2RjY2E3OWQxMDM5MzM4MGI2MzhiNDgxNDRh
Li5jNjQ3NzRkYzQ3ZTNlZTU5NTNkMmQ0OWVkZWI3ZTBiYzc4ZGNiMGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQ
cm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIGtlcm5fcmV0dXJuX3Qg
V0tQQ0lkZW50aWZpZXJJbmZvKG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQ2NF90IHNlcnZl
cklkZW50aWZpCiAgICAgICAgIGNvbnN0IGNoYXIqIHN0ciA9IGlkZW50aWZpZXItPnN0cmluZygp
OwogICAgICAgICBpbmZvID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilzdHIg
bGVuZ3RoOnN0cmxlbihzdHIpIGZyZWVXaGVuRG9uZTpOT107CiAgICAgfSBlbHNlIAotICAgICAg
ICBpbmZvID0gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aWRlbnRpZmllci0+bnVtYmVyKCldOwor
ICAgICAgICBpbmZvID0gQChpZGVudGlmaWVyLT5udW1iZXIoKSk7CiAKICAgICBOU0RhdGEgKmRh
dGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0Omlu
Zm8gZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9y
Om51bGxwdHJdOwogICAgIEFTU0VSVChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQppbmRleCBkYzYyZDU1NDE0MmEzMWM4YTgwNTY2YmQ2ZGQzYWU3ZWU5NGIz
NTI1Li5hNjE0NWUwMmQzZDYzNWYzYWQ0MTQyOWQ1NzM5ZDAzMzlkYzQyNDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMzIyLDI4ICsxMzIyLDI4IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjphZGRWYWx1ZVRvQXJyYXkoTlNNdXRh
YmxlQXJyYXkgKmFycmF5LCBKU0dsb2JhCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAg
ICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpTdHJpbmdWYWx1ZVR5cGVdXTsKKyAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpAKFN0cmluZ1ZhbHVlVHlwZSldOwogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmFz
U3RyaW5nKHZhbHVlKS0+dmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCldOwogICAgIH0gZWxzZSBp
ZiAodmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoSW50OkRvdWJsZVZhbHVlVHlwZV1dOwotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnRvTnVtYmVyKGxleGljYWxHbG9i
YWxPYmplY3QpXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChEb3VibGVWYWx1ZVR5cGUp
XTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKHZhbHVlLnRvTnVtYmVyKGxleGljYWxHbG9i
YWxPYmplY3QpKV07CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgewotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OkJvb2xWYWx1ZVR5cGVd
XTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKEJvb2xWYWx1ZVR5cGUpXTsKICAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dmFsdWUudG9Cb29sZWFu
KGxleGljYWxHbG9iYWxPYmplY3QpXV07CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc051bGwoKSkK
LSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOdWxsVmFs
dWVUeXBlXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChOdWxsVmFsdWVUeXBlKV07CiAg
ICAgZWxzZSBpZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QodmFsdWUpOwogICAgICAgICB1aW50NjRfdCBvYmplY3RJRDsKICAgICAgICAg
aWYgKGdldE9iamVjdElEKHRoaXMsIG9iamVjdCwgb2JqZWN0SUQpKSB7Ci0gICAgICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Ok5QT2JqZWN0VmFsdWVUeXBl
XV07Ci0gICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
Om9iamVjdElEXV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoTlBPYmplY3RWYWx1
ZVR5cGUpXTsKKyAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChvYmplY3RJRCldOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpKU09iamVjdFZhbHVlVHlwZV1dOwotICAgICAgICAgICAgW2FycmF5IGFkZE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdCh2
bSwgb2JqZWN0KV1dOworICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKEpTT2JqZWN0VmFs
dWVUeXBlKV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAobV9sb2NhbE9iamVjdHMu
aWRGb3JPYmplY3Qodm0sIG9iamVjdCkpXTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OlZvaWRWYWx1ZVR5cGVd
XTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKFZvaWRWYWx1ZVR5cGUpXTsKIH0KIAogdm9p
ZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Om1hcnNoYWxWYWx1ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgZGF0YV90JiByZXN1bHREYXRh
LCBtYWNoX21zZ190eXBlX251bWJlcl90JiByZXN1bHRMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNjM4MDFlMWNhYmFjYmFhZjEwMWEwMzhhY2U1
MDUyNmYwM2YxYWZjOS4uMGFjMTc2Y2VhMWNkNGZiYzY2YzFhYTM2MTc1MmU2ZjA3N2YyZWRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTEsNyArNTEs
NiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0
Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQppbmRleCA3MWU0MzY1NDZhOWNkNDgyYTk1
NWEwYTgwYjUwYzk5ZWVkYWYxOTU5Li5mNmE3NDc3Y2QxZGZjMmI0NWVjYTAyY2QyZGQ4MWZmNTc2
NjNjMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJh
c2VQbHVnaW5QYWNrYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViQmFzZVBsdWdpblBhY2thZ2UubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgPG1hY2gt
by9sb2FkZXIuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJQbHVnaW5Db250YWluZXJDaGVjay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KaW5kZXggMjkxMzkzYmZjYzA2MjhlZmQyMWVh
NTFiNTc1OTZhNzhlZWM3M2Y3Ni4uNzQwODg4ZmQ5NjgyMWEzNDI5YzQ3OTQxMTc1YTM3MDBkNTA3
Nzg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVn
aW5Db250YWluZXJDaGVjay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCkBAIC0xMDcsMTEgKzEwNywxMSBAQCAtIChCT09M
KV9pc0ZvcmJpZGRlbkZpbGVMb2FkCiAKIC0gKE5TRGljdGlvbmFyeSAqKV9hY3Rpb25JbmZvcm1h
dGlvbldpdGhVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OldlYk5hdmlnYXRpb25UeXBlUGx1Z0luUmVxdWVzdF0sIFdlYkFjdGlvbk5hdmln
YXRpb25UeXBlS2V5LAotICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0s
IFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCi0gICAgICAgICAgICAgICBVUkwsIFdlYkFjdGlv
bk9yaWdpbmFsVVJMS2V5LAotICAgICAgICAgICAgICAgbmlsXTsKKyAgICByZXR1cm4gQHsKKyAg
ICAgICAgV2ViQWN0aW9uTmF2aWdhdGlvblR5cGVLZXk6IEAoV2ViTmF2aWdhdGlvblR5cGVQbHVn
SW5SZXF1ZXN0KSwKKyAgICAgICAgV2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleTogQCgwKSwKKyAg
ICAgICAgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXk6IFVSTCwKKyAgICB9OwogfQogCiAtICh2b2lk
KV9hc2tQb2xpY3lEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KaW5kZXggNDlkZTQ1ZDRiZjI2N2MxMDI3ZWM3MzIz
NzZkOGFjODU3ZDk3N2UxMS4uMDkzZTY5NzVkNDFlYzgyOGFiNTJjZjM4ZDRiOTY2ZDhmM2Y5NWUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5E
YXRhYmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdp
bkRhdGFiYXNlLm1tCkBAIC0zOTAsMTEgKzM5MCwxMSBAQCArIChOU0FycmF5ICopX2RlZmF1bHRQ
bHVnSW5QYXRocwogICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGVyZSBpcyBhIFF1aWNrVGltZS5w
bHVnaW4gaW4gdGhlIHVzZXJzJ3MgaG9tZSBkaXJlY3RvcnkKICAgICAvLyB0aGF0IGlzIHVzZWQg
aW5zdGVhZCBvZiB0aGUgL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1pbnMgdmVyc2lvbi4KICAgICAv
LyBUaGUgcHVycG9zZSBpcyB0byBhbGxvdyBub24tYWRtaW4gdXNlcnMgdG8gdXBkYXRlIHRoZWly
IHBsdWctaW5zLgotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJl
dHVybiBAWwogICAgICAgICBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucyJdLAogICAgICAgICBAIi9MaWJy
YXJ5L0ludGVybmV0IFBsdWctSW5zIiwKICAgICAgICAgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dWlsdEluUGx1Z0luc1BhdGhdLAotICAgICAgICBuaWxdOworICAgIF07CiAjZWxzZQogICAgIC8v
IGlPUyBwbHVnLWlucyBhcmUgYWxsIGxvY2F0ZWQgaW4gL1N5c3RlbS9MaWJyYXJ5L0ludGVybmV0
IFBsdWctSW5zCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNDA2LDcg
KzQwNiw3IEBAICsgKE5TQXJyYXkgKilfZGVmYXVsdFBsdWdJblBhdGhzCiAgICAgTlNTdHJpbmcq
IHBsYXRmb3JtUm9vdERpciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpXZWJLaXRQ
bGF0Zm9ybVN5c3RlbVJvb3REaXJlY3RvcnkoKV07CiAgICAgTlNTdHJpbmcgKnN5c3RlbURpciA9
IFtwbGF0Zm9ybVJvb3REaXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU3lzdGVt
L0xpYnJhcnkiXTsKICNlbmRpZgotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
W3N5c3RlbURpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbnRlcm5ldCBQbHVn
LUlucyJdXTsKKyAgICByZXR1cm4gQFtbc3lzdGVtRGlyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkludGVybmV0IFBsdWctSW5zIl1dOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KaW5k
ZXggNzNlMjMzMWViYjZjZmFlZGVlYTRjMWQyZjEyYWQwYmFkNTIyNjUzYy4uZTcyNzVjNzRkZGQ3
NjcxYjQ1MmNiN2Q3ZGRkMzFhM2ViMzQ0M2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTMxLDEwICszMSwx
MCBAQAogI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCIKLQogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogI2ltcG9ydCAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgpAQCAtMTA2LDExICsx
MDYsNyBAQCAtIChOU0FycmF5ICopZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4KIHsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24o
KS5kYXRhYmFzZU5hbWVzKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwotICAgIE5TTXV0YWJsZUFy
cmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bmFt
ZVZlY3Rvci5zaXplKCldOwotICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVWZWN0b3IpCi0gICAg
ICAgIFtuYW1lcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopbmFtZV07Ci0gICAgcmV0dXJuIFtuYW1l
cyBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoRGF0YWJhc2VUcmFja2Vy
OjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpKS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtIChOU0RpY3Rpb25hcnkgKilkZXRhaWxzRm9yRGF0YWJhc2U6KE5T
U3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggODk1YzRiMmQ0OWRjMWM4ZmIzMDhiYjM4
MDBiMGI5MTk0NjU1YmZkMy4uMDhkNjRhMjkyNTllNGVjMjE2MjdkMjlkZjQ3NGZhN2E2MTc3OTE0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjIsMTEgKzIyLDE0IEBACiAgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwogI2ltcG9ydCAi
Q29ycmVjdGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9y
dCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgaW5saW5lIE5TQ29ycmVj
dGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVUZXh0
VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlKQpAQCAtNjksMTUgKzcyLDExIEBAIHZvaWQgQ29ycmVj
dGlvblBhbmVsOjpzaG93KFdlYlZpZXcqIHZpZXcsIEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwg
Y29uc3QgRmxvYXRSCiAgICAgbV92aWV3ID0gdmlldzsKICAgICBOU0NvcnJlY3Rpb25JbmRpY2F0
b3JUeXBlIGluZGljYXRvclR5cGUgPSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSh0eXBlKTsKICAg
ICAKLSAgICBOU011dGFibGVBcnJheSogYWx0ZXJuYXRpdmVTdHJpbmdzID0gMDsKLSAgICBpZiAo
IWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgewotICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKLSAgICAgICAg
YWx0ZXJuYXRpdmVTdHJpbmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNp
emVdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
ICAgIFthbHRlcm5hdGl2ZVN0cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3NbaV1dOwotICAgIH0KKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gYWx0
ZXJuYXRpdmVTdHJpbmdzOworICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mu
aXNFbXB0eSgpKQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBjcmVhdGVOU0FycmF5KGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTppbmRpY2F0b3JU
eXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZl
U3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0Olt2aWV3IF9jb252ZXJ0
UmVjdEZyb21Sb290Vmlldzpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmddIHZpZXc6bV92aWV3
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7Cisg
ICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5k
aWNhdG9yT2ZUeXBlOmluZGljYXRvclR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmlu
Z0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncy5nZXQoKSBm
b3JTdHJpbmdJblJlY3Q6W3ZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZ10gdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNl
bWVudChhY2NlcHRlZFN0cmluZywgcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nLCByZXBsYWNlbWVu
dFN0cmluZ0FzTlNTdHJpbmcsIGluZGljYXRvclR5cGUpOwogICAgIH1dOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCmluZGV4IDY2ZjFiNDEyYzJlYzY2YjMyZTQ0YWU4YWUyMWQwOTBjNzU3MmZhMWUuLjZk
NjhkZjdjNzI3ZTcxMWFlNmYyNjg1M2RkZGU5MmIzNWU0ZDg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KQEAgLTQ2MCw4ICs0NjAsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogICAgIE5TU3Ry
aW5nICptZXNzYWdlU291cmNlID0gc3RyaW5nRm9yTWVzc2FnZVNvdXJjZShzb3VyY2UpOwogICAg
IE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHNBbmRLZXlzOgogICAgICAgICAoTlNTdHJpbmcgKiltZXNzYWdlLCBAIm1lc3NhZ2Ui
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmxpbmVOdW1iZXJdLCBA
ImxpbmVOdW1iZXIiLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNv
bHVtbk51bWJlcl0sIEAiY29sdW1uTnVtYmVyIiwKKyAgICAgICAgQChsaW5lTnVtYmVyKSwgQCJs
aW5lTnVtYmVyIiwKKyAgICAgICAgQChjb2x1bW5OdW1iZXIpLCBAImNvbHVtbk51bWJlciIsCiAg
ICAgICAgIChOU1N0cmluZyAqKXNvdXJjZVVSTCwgQCJzb3VyY2VVUkwiLAogICAgICAgICBtZXNz
YWdlU291cmNlLCBAIk1lc3NhZ2VTb3VyY2UiLAogICAgICAgICBzdHJpbmdGb3JNZXNzYWdlTGV2
ZWwobGV2ZWwpLCBAIk1lc3NhZ2VMZXZlbCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOWFkNDZj
NjA0NzAxMmViM2U0MjM4MDRkNDA3MjA3MDI1N2RjNWU0Ni4uOGE3NTNjNTkwMTcyMmFjYWNiNGMz
MDUwYTMxZTFiZjcwOGNiNTRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtODMsNiArODMsNyBA
QAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTQ1Nyw3ICs0NTgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9y
QXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlID0gQCJFeGNsdWRlZEVsZW1lbnRz
IjsKICNlbmRpZgogCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpleGNsdWRlZEVsZW1lbnRzIGZvcktleTpOU0V4Y2x1ZGVk
RWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZV07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5
ID0gQHsgTlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1ZGVkRWxlbWVu
dHMgfTsKIAogICAgIFtleGNsdWRlZEVsZW1lbnRzIHJlbGVhc2VdOwogCkBAIC0xMDc5LDE1ICsx
MDgwLDkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0
cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXgKICAgICAgICAgW2NoZWNrZXIgY2hlY2tT
dHJpbmc6Y29udGV4dCByYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0aCgpKSB0eXBl
czpOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5OiZvcnRo
b2dyYXBoeSB3b3JkQ291bnQ6MF07CiAgICAgICAgIGxhbmd1YWdlID0gW2NoZWNrZXIgbGFuZ3Vh
Z2VGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgaW5TdHJpbmc6
Y29udGV4dCBvcnRob2dyYXBoeTpvcnRob2dyYXBoeV07CiAgICAgfQotICAgIE5TQXJyYXkqIHN0
cmluZ3NBcnJheSA9IFtjaGVja2VyIGd1ZXNzZXNGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
d29yZC5sZW5ndGgoKSkgaW5TdHJpbmc6d29yZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxsRG9j
dW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAgIHVuc2lnbmVkIGNv
dW50ID0gW3N0cmluZ3NBcnJheSBjb3VudF07Ci0KLSAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAg
ICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFtzdHJpbmdzQXJyYXkgb2JqZWN0RW51bWVy
YXRvcl07Ci0gICAgICAgIE5TU3RyaW5nICpzdHJpbmc7Ci0gICAgICAgIHdoaWxlICgoc3RyaW5n
ID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF0pICE9IG5pbCkKLSAgICAgICAgICAgIGd1ZXNzZXMu
YXBwZW5kKHN0cmluZyk7Ci0gICAgfQorICAgIE5TQXJyYXkgKnN0cmluZ3NBcnJheSA9IFtjaGVj
a2VyIGd1ZXNzZXNGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgd29yZC5sZW5ndGgoKSkgaW5T
dHJpbmc6d29yZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnKCldOworICAgIGlmIChzdHJpbmdzQXJyYXkuY291bnQpCisgICAg
ICAgIGd1ZXNzZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oc3RyaW5nc0FycmF5KTsKIH0KIAogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCBiMDVjM2Y5ZjRlNGQ0NWU2ZGU4NjFkMmU1ZTJhZTE3ZGU4OTA2MWU1Li5iNmEwMjYzNzlj
ZTNlNDkwMGFiYjI5OTViZmZlOGRlZjkwNWVlNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQpAQCAtMTMxLDYgKzEzMSw3IEBACiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KICNpbXBv
cnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTE1NzIsOCArMTU3Myw4IEBAIE5TRGljdGlvbmFy
eSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6
TmF2aWdhdGlvbkFjCiAgICAgTlNVUkwgKm9yaWdpbmFsVVJMID0gYWN0aW9uLnVybCgpOwogCiAg
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcmVzdWx0ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6c3RhdGljX2Nhc3Q8aW50PihhY3Rpb24udHlwZSgpKV0sIFdlYkFjdGlvbk5hdmlnYXRpb25U
eXBlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RpZmllckZsYWdzXSwg
V2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleSwKKyAgICAgICAgQChzdGF0aWNfY2FzdDxpbnQ+KGFj
dGlvbi50eXBlKCkpKSwgV2ViQWN0aW9uTmF2aWdhdGlvblR5cGVLZXksCisgICAgICAgIEAobW9k
aWZpZXJGbGFncyksIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCiAgICAgICAgIG9yaWdpbmFs
VVJMLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKICAgICAgICAgbmlsXTsKIApAQCAtMTU4NSw5
ICsxNTg2LDkgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGlj
dGlvbmFyeShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWMKICAgICAgICAgW2VsZW1lbnQgcmVs
ZWFzZV07CiAKICAgICAgICAgaWYgKG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCi0gICAgICAg
ICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb3VzZUV2ZW50
RGF0YS0+YnV0dG9uXSBmb3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5XTsKKyAgICAgICAgICAgIFty
ZXN1bHQgc2V0T2JqZWN0OkAobW91c2VFdmVudERhdGEtPmJ1dHRvbikgZm9yS2V5OldlYkFjdGlv
bkJ1dHRvbktleV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoSW50OldlYkNvcmU6Ok5vQnV0dG9uXSBmb3JLZXk6V2ViQWN0
aW9uQnV0dG9uS2V5XTsKKyAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoV2ViQ29yZTo6
Tm9CdXR0b24pIGZvcktleTpXZWJBY3Rpb25CdXR0b25LZXldOwogICAgIH0KIAogICAgIGlmIChm
b3JtU3RhdGUpCkBAIC0xNjk0LDE1ICsxNjk1LDYgQEAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5
cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXIK
ICAgICByZXR1cm4gV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7CiB9CiAKLXN0YXRp
YyBOU011dGFibGVBcnJheSoga2l0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCi17Ci0g
ICAgdW5zaWduZWQgbGVuID0gdmVjdG9yLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSogYXJy
YXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bGVuXTsKLSAgICBmb3IgKHVu
c2lnbmVkIHggPSAwOyB4IDwgbGVuOyB4KyspCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmVj
dG9yW3hdXTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KIHN0YXRpYyBTdHJpbmcgcGFyYW1ldGVy
VmFsdWUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9
IHBhcmFtTmFtZXMuc2l6ZSgpOwpAQCAtMTcyMCwzNyArMTcxMiwzOSBAQCBzdGF0aWMgTlNWaWV3
ICpwbHVnaW5WaWV3KFdlYkZyYW1lICpmcmFtZSwgV2ViUGx1Z2luUGFja2FnZSAqcGx1Z2luUGFj
a2FnZSwKIHsKICAgICBXZWJIVE1MVmlldyAqZG9jVmlldyA9IChXZWJIVE1MVmlldyAqKVtbZnJh
bWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgIEFTU0VSVChbZG9jVmlldyBpc0tpbmRP
ZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKTsKLSAgICAgICAgCisKICAgICBXZWJQbHVnaW5D
b250cm9sbGVyICpwbHVnaW5Db250cm9sbGVyID0gW2RvY1ZpZXcgX3BsdWdpbkNvbnRyb2xsZXJd
OwotICAgIAorCiAgICAgLy8gU3RvcmUgYXR0cmlidXRlcyBpbiBhIGRpY3Rpb25hcnkgc28gdGhl
eSBjYW4gYmUgcGFzc2VkIHRvIFdlYlBsdWdpbnMuCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
YXR0cmlidXRlcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OmF0dHJpYnV0ZVZhbHVlcyBmb3JLZXlzOmF0dHJpYnV0ZU5hbWVzXTsKLSAgICAKKwogICAgIFtw
bHVnaW5QYWNrYWdlIGxvYWRdOwogICAgIENsYXNzIHZpZXdGYWN0b3J5ID0gW3BsdWdpblBhY2th
Z2Ugdmlld0ZhY3RvcnldOwogICAgIAogICAgIE5TVmlldyAqdmlldyA9IG5pbDsKICAgICBOU0Rp
Y3Rpb25hcnkgKmFyZ3VtZW50cyA9IG5pbDsKLSAgICAKLSAgICBpZiAoW3ZpZXdGYWN0b3J5IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsK
LSAgICAgICAgYXJndW1lbnRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgotICAgICAgICAgICAgYmFzZVVSTCwgV2ViUGx1Z0luQmFzZVVSTEtleSwKLSAgICAg
ICAgICAgIGF0dHJpYnV0ZXMsIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXksCi0gICAgICAgICAgICBw
bHVnaW5Db250cm9sbGVyLCBXZWJQbHVnSW5Db250YWluZXJLZXksCi0gICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpsb2FkTWFudWFsbHkgPyBXZWJQbHVnSW5Nb2RlRnVsbCA6IFdl
YlBsdWdJbk1vZGVFbWJlZF0sIFdlYlBsdWdJbk1vZGVLZXksCi0gICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sIFdlYlBsdWdJblNob3VsZExvYWRNYWlu
UmVzb3VyY2VLZXksCi0gICAgICAgICAgICBlbGVtZW50LCBXZWJQbHVnSW5Db250YWluaW5nRWxl
bWVudEtleSwKLSAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiYXJndW1l
bnRzOlxuJUAiLCBhcmd1bWVudHMpOworCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFy
ZWQtc2VsZWN0b3IiKQotICAgIH0gZWxzZSBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IocGx1Z2luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsKKyAgICBhdXRvIG9s
ZFNlbGVjdG9yID0gQHNlbGVjdG9yKHBsdWdpblZpZXdXaXRoQXJndW1lbnRzOik7CiBJR05PUkVf
V0FSTklOR1NfRU5ECi0gICAgICAgIGFyZ3VtZW50cyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgIGJhc2VVUkwsIFdlYlBsdWdpbkJhc2VV
UkxLZXksCi0gICAgICAgICAgICBhdHRyaWJ1dGVzLCBXZWJQbHVnaW5BdHRyaWJ1dGVzS2V5LAot
ICAgICAgICAgICAgcGx1Z2luQ29udHJvbGxlciwgV2ViUGx1Z2luQ29udGFpbmVyS2V5LAotICAg
ICAgICAgICAgZWxlbWVudCwgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCi0gICAgICAg
ICAgICBuaWxdOworCisgICAgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHBsdWdJblZpZXdXaXRoQXJndW1lbnRzOildKSB7CisgICAgICAgIGFyZ3VtZW50cyA9
IEB7CisgICAgICAgICAgICBXZWJQbHVnSW5CYXNlVVJMS2V5OiBiYXNlVVJMLAorICAgICAgICAg
ICAgV2ViUGx1Z0luQXR0cmlidXRlc0tleTogYXR0cmlidXRlcywKKyAgICAgICAgICAgIFdlYlBs
dWdJbkNvbnRhaW5lcktleTogcGx1Z2luQ29udHJvbGxlciwKKyAgICAgICAgICAgIFdlYlBsdWdJ
bk1vZGVLZXk6IEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5N
b2RlRW1iZWQpLAorICAgICAgICAgICAgV2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtl
eTogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLAorICAgICAgICAgICAg
V2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXk6IGVsZW1lbnQsCisgICAgICAgIH07CisgICAg
ICAgIExPRyhQbHVnaW5zLCAiYXJndW1lbnRzOlxuJUAiLCBhcmd1bWVudHMpOworICAgIH0gZWxz
ZSBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3RvcjpvbGRTZWxlY3Rvcl0pIHsKKyAg
ICAgICAgYXJndW1lbnRzID0gQHsKKyAgICAgICAgICAgIFdlYlBsdWdpbkJhc2VVUkxLZXk6IGJh
c2VVUkwsCisgICAgICAgICAgICBXZWJQbHVnaW5BdHRyaWJ1dGVzS2V5OiBhdHRyaWJ1dGVzLAor
ICAgICAgICAgICAgV2ViUGx1Z2luQ29udGFpbmVyS2V5OiBwbHVnaW5Db250cm9sbGVyLAorICAg
ICAgICAgICAgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXk6IGVsZW1lbnQsCisgICAgICAg
IH07CiAgICAgICAgIExPRyhQbHVnaW5zLCAiYXJndW1lbnRzOlxuJUAiLCBhcmd1bWVudHMpOwog
ICAgIH0KIApAQCAtMTkxOSwxNSArMTkxMywxNSBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegog
ICAgIGF1dG8qIGRvY3VtZW50ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+ZG9jdW1lbnQoKTsK
ICAgICBOU1VSTCAqYmFzZVVSTCA9IGRvY3VtZW50LT5iYXNlVVJMKCk7CiAgICAgTlNVUkwgKnBs
dWdpblVSTCA9IHVybDsKLSAgICBOU011dGFibGVBcnJheSAqYXR0cmlidXRlS2V5cyA9IGtpdChw
YXJhbU5hbWVzKTsKKyAgICBhdXRvIGF0dHJpYnV0ZUtleXMgPSBjcmVhdGVOU0FycmF5KHBhcmFt
TmFtZXMpOwogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OnBsdWdJblZpZXdXaXRoQXJndW1l
bnRzOik7CiAgICAgaWYgKFtbd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6
c2VsZWN0b3JdKSB7Ci0gICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpraXQocGFyYW1WYWx1
ZXMpIGZvcktleXM6YXR0cmlidXRlS2V5c107CisgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmli
dXRlcyA9IEB7IGF0dHJpYnV0ZUtleXMuZ2V0KCk6IGNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMp
LmdldCgpIH07CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXJndW1lbnRzID0gW1tOU0RpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICBhdHRyaWJ1dGVz
LCBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6bG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1i
ZWRdLCBXZWJQbHVnSW5Nb2RlS2V5LAorICAgICAgICAgICAgQChsb2FkTWFudWFsbHkgPyBXZWJQ
bHVnSW5Nb2RlRnVsbCA6IFdlYlBsdWdJbk1vZGVFbWJlZCksIFdlYlBsdWdJbk1vZGVLZXksCiAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sIFdlYlBs
dWdJblNob3VsZExvYWRNYWluUmVzb3VyY2VLZXksCiAgICAgICAgICAgICBraXQoJmVsZW1lbnQp
LCBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVudEtleSwKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgcGFzc2luZyBiYXNlIFVSTCwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzUyMTU+LgpAQCAtMTkzNiwxMSArMTkzMCwxMCBAQCBSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0
IFdlYkNvcmU6OkludFNpegogCiAgICAgICAgIE5TVmlldyAqdmlldyA9IENhbGxVSURlbGVnYXRl
KHdlYlZpZXcsIHNlbGVjdG9yLCBhcmd1bWVudHMpOwogCi0gICAgICAgIFthdHRyaWJ1dGVzIHJl
bGVhc2VdOwogICAgICAgICBbYXJndW1lbnRzIHJlbGVhc2VdOwogCiAgICAgICAgIGlmICh2aWV3
KQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5XaWRnZXQodmlldykpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGx1Z2luV2lkZ2V0KHZpZXcpKTsKICAg
ICB9CiAjZW5kaWYKIApAQCAtMTk1Myw3ICsxOTQ2LDcgQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXoKICAgICAgICAgTUlNRVR5cGUgPSBtaW1lVHlwZTsKICAgICAgICAgcGx1Z2luUGFja2FnZSA9
IFt3ZWJWaWV3IF9wbHVnaW5Gb3JNSU1FVHlwZTptaW1lVHlwZV07CiAgICAgfQotICAgIAorCiAg
ICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IFtbcGx1Z2luVVJMIHBhdGhdIHBhdGhFeHRlbnNpb25d
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5NzksNyArMTk3Miw3IEBAIFJlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgICAgICAgICAgZG93bmNhc3Q8V2ViQ29yZTo6UmVu
ZGVyRW1iZWRkZWRPYmplY3Q+KCplbGVtZW50LnJlbmRlcmVyKCkpLnNldFBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBsdWdp
blZlcnNpb24pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKFtwbHVnaW5QYWNr
YWdlIGlzS2luZE9mQ2xhc3M6W1dlYlBsdWdpblBhY2thZ2UgY2xhc3NdXSkKLSAgICAgICAgICAg
ICAgICB2aWV3ID0gcGx1Z2luVmlldyhtX3dlYkZyYW1lLmdldCgpLCAoV2ViUGx1Z2luUGFja2Fn
ZSAqKXBsdWdpblBhY2thZ2UsIGF0dHJpYnV0ZUtleXMsIGtpdChwYXJhbVZhbHVlcyksIGJhc2VV
UkwsIGtpdCgmZWxlbWVudCksIGxvYWRNYW51YWxseSk7CisgICAgICAgICAgICAgICAgdmlldyA9
IHBsdWdpblZpZXcobV93ZWJGcmFtZS5nZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5Q
YWNrYWdlLCBhdHRyaWJ1dGVLZXlzLmdldCgpLCBjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5n
ZXQoKSwgYmFzZVVSTCwga2l0KCZlbGVtZW50KSwgbG9hZE1hbnVhbGx5KTsKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgICAgIGVsc2UgaWYgKFtwbHVnaW5QYWNrYWdl
IGlzS2luZE9mQ2xhc3M6W1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBjbGFzc11dKSB7CiAgICAg
ICAgICAgICAgICAgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldyA9IFtbW05F
VFNDQVBFX1BMVUdJTl9WSUVXIGFsbG9jXQpAQCAtMTk4OCw4ICsxOTgxLDggQEAgUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXoKICAgICAgICAgICAgICAgICAgICAgVVJMOnBsdWdpblVSTAogICAgICAg
ICAgICAgICAgICAgICBiYXNlVVJMOmJhc2VVUkwKICAgICAgICAgICAgICAgICAgICAgTUlNRVR5
cGU6TUlNRVR5cGUKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlS2V5czphdHRyaWJ1dGVL
ZXlzCi0gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlczpraXQocGFyYW1WYWx1ZXMp
CisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUtleXM6YXR0cmlidXRlS2V5cy5nZXQoKQor
ICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6Y3JlYXRlTlNBcnJheShwYXJhbVZh
bHVlcykuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5OmxvYWRNYW51YWxs
eQogICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiZlbGVtZW50XSBhdXRvcmVsZWFzZV07CiAK
QEAgLTIwODMsOCArMjA3Niw4IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvCiAgICAgICAgICAg
ICAgICAgICAgIFVSTDpuaWwKICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNlVVJMCiAg
ICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOk1JTUVUeXBlCi0gICAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZUtleXM6a2l0KHBhcmFtTmFtZXMpCi0gICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZVZhbHVlczpraXQocGFyYW1WYWx1ZXMpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZUtleXM6Y3JlYXRlTlNBcnJheShwYXJhbU5hbWVzKS5nZXQoKQorICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVWYWx1ZXM6Y3JlYXRlTlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCkKICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5Ok5PCiAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQ6JmVsZW1lbnRdIGF1dG9yZWxlYXNlXTsKICAgICAgICAgICAgICAgICBpZiAodmlldykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0KaW5kZXggNTVmYjJiZGZhZDFhNWY3
NzRjODIxMjIzY2E3ODYyODE5ZmMxNGRmMC4uYWFhNGFmYjVmY2M2YWVjOGNmNGIzYjFmMjFjODMy
MTBjMjdkNDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0KQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2ltcG9y
dCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9JY29uLmg+CkBAIC02NCwx
MSArNjUsNyBAQCAtICh2b2lkKWNob29zZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1lcwog
ICAgIEFTU0VSVChfY2hvb3Nlcik7CiAgICAgaWYgKCFfY2hvb3NlcikKICAgICAgICAgcmV0dXJu
OwotICAgIE5TVUludGVnZXIgY291bnQgPSBbZmlsZW5hbWVzIGNvdW50XTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBuYW1lcyhjb3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKLSAgICAgICAgbmFtZXNbaV0gPSBbZmlsZW5hbWVzIG9iamVjdEF0SW5kZXg6aV07
Ci0gICAgX2Nob29zZXItPmNob29zZUZpbGVzKG5hbWVzKTsKKyAgICBfY2hvb3Nlci0+Y2hvb3Nl
RmlsZXMobWFrZVZlY3RvcjxTdHJpbmc+KGZpbGVuYW1lcykpOwogICAgIF9jaG9vc2VyID0gbnVs
bHB0cjsKIH0KIApAQCAtNzYsNyArNzMsNyBAQCAtICh2b2lkKWNob29zZUZpbGVuYW1lczooTlNB
cnJheSAqKWZpbGVuYW1lcwogCiAtICh2b2lkKWNob29zZUZpbGVuYW1lOihOU1N0cmluZyAqKWZp
bGVuYW1lIGRpc3BsYXlTdHJpbmc6KE5TU3RyaW5nICopZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6
KENHSW1hZ2VSZWYpaW1hZ2VSZWYKIHsKLSAgICBbc2VsZiBjaG9vc2VGaWxlbmFtZXM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0OmZpbGVuYW1lXSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcg
aWNvbkltYWdlOmltYWdlUmVmXTsKKyAgICBbc2VsZiBjaG9vc2VGaWxlbmFtZXM6QFtmaWxlbmFt
ZV0gZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTppbWFnZVJlZl07CiB9CiAK
IC0gKHZvaWQpY2hvb3NlRmlsZW5hbWVzOihOU0FycmF5ICopZmlsZW5hbWVzIGRpc3BsYXlTdHJp
bmc6KE5TU3RyaW5nICopZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2VS
ZWYKQEAgLTg1LDExICs4Miw3IEBAIC0gKHZvaWQpY2hvb3NlRmlsZW5hbWVzOihOU0FycmF5ICop
ZmlsZW5hbWVzIGRpc3BsYXlTdHJpbmc6KE5TU3RyaW5nICopZGlzcGxheVN0CiAgICAgaWYgKCFf
Y2hvb3NlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0g
ICAgbmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbZmlsZW5hbWVzIGNvdW50XSk7Ci0gICAg
Zm9yIChOU1N0cmluZyAqZmlsZW5hbWUgaW4gZmlsZW5hbWVzKQotICAgICAgICBuYW1lcy51bmNo
ZWNrZWRBcHBlbmQoZmlsZW5hbWUpOwotICAgIF9jaG9vc2VyLT5jaG9vc2VNZWRpYUZpbGVzKG5h
bWVzLCBkaXNwbGF5U3RyaW5nLCBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoaW1hZ2VSZWYpLmdl
dCgpKTsKKyAgICBfY2hvb3Nlci0+Y2hvb3NlTWVkaWFGaWxlcyhtYWtlVmVjdG9yPFN0cmluZz4o
ZmlsZW5hbWVzKSwgZGlzcGxheVN0cmluZywgSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGltYWdl
UmVmKS5nZXQoKSk7CiAgICAgX2Nob29zZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCmluZGV4IDkzNDM3NTdhYTVkY2MwY2IyMWY4
MTEwMjFmNDQ0YzIyM2QwZTUwZTcuLjkzYmVkNjlhMTQ3MzhmODM2MWIxZjg2NzYwM2ZmODExZGIw
NTllYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCkBA
IC00MCw3ICs0MCw3IEBAIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3ICp3ZWJWaWV3KQogewogfQogCi12b2lkIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRl
bGVwaG9uZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3ZvaWQgV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Lyp0ZWxlcGhvbmVOdW1iZXJzKi8sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKIHsK
ICAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBwYWdlXTsKICAgICBpZiAoIXBhZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiZDlhNjc4MWJi
ZWEwNjExZTJlNGQ3MDQ5NjA4NmNlZmQ1OGIxMTRiLi4yYWJiZDkyNGI3ZWEwMGRhMzAzOTgyZTEw
ZDQ2MGM1MWFiYzgyMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5p
dHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViTWFpbERlbGVnYXRlLmgiCkBAIC0x
MDkxLDYgKzEwOTIsNyBAQCAtIChXZWJGcmFtZUxvYWRUeXBlKV9sb2FkVHlwZQogfQogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogLSAoQk9PTCluZWVkc0xheW91dAogewogICAgIC8vIE5l
ZWRlZCBmb3IgTWFpbCA8cmRhcjovL3Byb2JsZW0vNjIyODAzOD4KQEAgLTExMDcsMzkgKzExMDks
MjYgQEAgLSAoQk9PTClfbG9hZHNTeW5jaHJvbm91c2x5CiAgICAgcmV0dXJuIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmxvYWRlcigpLmxvYWRzU3luY2hyb25vdXNseSgpOwogfQogCi0vLyBGSVhNRTog
c2VsZWN0aW9uCi0KIC0gKE5TQXJyYXkgKilfcmVjdHNGb3JSYW5nZTooRE9NUmFuZ2UgKilkb21S
YW5nZQogewogICAgIGF1dG8qIHJhbmdlID0gY29yZShkb21SYW5nZSk7Ci0gICAgCisgICAgaWYg
KCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4gaW50UmVjdHM7CiAgICAgcmFuZ2UtPmFic29sdXRlVGV4dFJlY3RzKGludFJlY3RzLCBOTyk7
Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGludFJlY3RzLnNpemUoKTsKLSAgICAKLSAgICBOU011dGFi
bGVBcnJheSAqcmVjdEFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNp
emVdOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAg
W3JlY3RBcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDooQ0dSZWN0IClpbnRS
ZWN0c1tpXV1dOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVjdEFycmF5OworICAgIHJldHVy
biBjcmVhdGVOU0FycmF5KGludFJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChET01SYW5n
ZSAqKV9zZWxlY3Rpb25SYW5nZUZvckZpcnN0UG9pbnQ6KENHUG9pbnQpZmlyc3Qgc2Vjb25kUG9p
bnQ6KENHUG9pbnQpc2Vjb25kCiB7Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGZpcnN0
UG9zID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBvaW50OmZpcnN0XTsKLSAgICBXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24gc2Vjb25kUG9zID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBv
aW50OnNlY29uZF07Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oZmly
c3RQb3MsIHNlY29uZFBvcyk7Ci0gICAgRE9NUmFuZ2UgKnJhbmdlID0ga2l0KHNlbGVjdGlvbi50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKLSAgICByZXR1cm4gcmFuZ2U7ICAgIAorICAgIGF1
dG8gZmlyc3RQb3NpdGlvbiA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpmaXJzdF07
CisgICAgYXV0byBzZWNvbmRQb3NpdGlvbiA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dDpzZWNvbmRdOworICAgIHJldHVybiBraXQoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbihmaXJz
dFBvc2l0aW9uLCBzZWNvbmRQb3NpdGlvbikudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9
CiAKIC0gKERPTVJhbmdlICopX3NlbGVjdGlvblJhbmdlRm9yUG9pbnQ6KENHUG9pbnQpcG9pbnQK
IHsKLSAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gcG9zID0gW3NlbGYgX3Zpc2libGVQb3Np
dGlvbkZvclBvaW50OnBvaW50XTsKLSAgICBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvbihwb3MpOwotICAgIERPTVJhbmdlICpyYW5nZSA9IGtpdChzZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSk7Ci0gICAgcmV0dXJuIHJhbmdlOworICAgIHJldHVybiBraXQoV2Vi
Q29yZTo6VmlzaWJsZVNlbGVjdGlvbihbc2VsZiBfdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6cG9p
bnRdKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCkBAIC0yMjcxLDIxICsyMjYwLDIxIEBAIC0gKE5TQXJyYXkgKilfY29tcHV0
ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOihmbG9hdClwcmludFNjYWxlRmFjdG9yIHBh
Z2VTCiB7CiAgICAgaWYgKHByaW50U2NhbGVGYWN0b3IgPD0gMCkgewogICAgICAgICBMT0dfRVJS
T1IoInByaW50U2NhbGVGYWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJmIiwgcHJpbnRTY2FsZUZhY3Rv
cik7Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107
CiAgICAgfQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKQotICAgICAgICByZXR1cm4g
W05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwogICAgIGlmICghX3ByaXZhdGUt
PmNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsK
KyAgICAgICAgcmV0dXJuIEBbXTsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUtPnZpZXco
KSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsK
ICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUtPnZpZXcoKS0+ZG9jdW1lbnRWaWV3KCkpCi0g
ICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAKICAg
ICBhdXRvKiByb290ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpOwogICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAg
ICAgICAgcmV0dXJuIEBbXTsKIAogICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50UmVjdCA9IHJvb3Qt
PmRvY3VtZW50UmVjdCgpOwogICAgIGZsb2F0IHByaW50V2lkdGggPSByb290LT5zdHlsZSgpLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBzdGF0aWNfY2FzdDxmbG9hdD4oZG9jdW1lbnRSZWN0
LndpZHRoKCkpIC8gcHJpbnRTY2FsZUZhY3RvciA6IHBhZ2VTaXplLndpZHRoOwpAQCAtMjI5Mywx
MyArMjI4Miw3IEBAIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxl
RmFjdG9yOihmbG9hdClwcmludFNjYWxlRmFjdG9yIHBhZ2VTCiAKICAgICBXZWJDb3JlOjpQcmlu
dENvbnRleHQgcHJpbnRDb250ZXh0KF9wcml2YXRlLT5jb3JlRnJhbWUpOwogICAgIHByaW50Q29u
dGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShwcmlu
dFdpZHRoLCBwcmludEhlaWdodCksIHRydWUpOwotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiYgcGFnZVJlY3RzID0gcHJpbnRDb250ZXh0LnBhZ2VSZWN0cygpOwotCi0gICAgc2l6
ZV90IHNpemUgPSBwYWdlUmVjdHMuc2l6ZSgpOwotICAgIE5TTXV0YWJsZUFycmF5ICpwYWdlcyA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3BhZ2VzIGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0Ok5TUmVjdChwYWdlUmVjdHNbaV0pXV07Ci0gICAgcmV0dXJuIHBhZ2Vz
OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHByaW50Q29udGV4dC5wYWdlUmVjdHMoKSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNjIzLDcgKzI2
MDYsNyBAQCAtIChOU0FycmF5ICopY2hpbGRGcmFtZXMKIHsKICAgICBhdXRvIGNvcmVGcmFtZSA9
IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgTlNNdXRhYmxlQXJy
YXkgKmNoaWxkcmVuID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVGcmFt
ZS0+dHJlZSgpLmNoaWxkQ291bnQoKV07CiAgICAgZm9yIChXZWJDb3JlOjpGcmFtZSogY2hpbGQg
PSBjb3JlRnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50
cmVlKCkubmV4dFNpYmxpbmcoKSkKICAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpraXQoY2hp
bGQpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CmluZGV4IDViYTJlNzgwNDZmNDY4MDdkMThlYjQxODc3M2FlOGIyMTQyMWZmZTIuLmM5MTU1YjE2
Y2RmMDdlYjFjOWFkMGM0YWJhMGU5MjgzNDc0M2M1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAjaW1w
b3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJXZWJOU0V2ZW50RXh0cmFzLmgiCkBAIC0x
OTk1LDcgKzE5OTYsNyBAQCArIChOU0FycmF5ICopX2luc2VydGFibGVQYXN0ZWJvYXJkVHlwZXMK
ICsgKE5TQXJyYXkgKilfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzCiB7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBwdXQgZGF0YSBmb3IgTlNIVE1MUGJvYXJkVHlwZSBvbiB0aGUgcGFzdGVib2Fy
ZCBidXQgTWljcm9zb2Z0IEV4Y2VsIGRvZXNuJ3QgbGlrZSBvdXIgZm9ybWF0IG9mIEhUTUwgKDM2
NDA0MjMpLgotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkFyY2hpdmVQ
Ym9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSwgbmlsXTsKKyAgICByZXR1cm4gQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgV2ViQ29y
ZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9h
cmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogfQogCiBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgpAQCAtNDQwNCw3ICs0NDA1LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKGRyYWdnaW5n
RWxlbWVudFVSTCkKICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBfd2Vi
a2l0X3NldE1ldGFkYXRhVVJMOltkcmFnZ2luZ0VsZW1lbnRVUkwgYWJzb2x1dGVTdHJpbmddIHJl
ZmVycmVyOm5pbCBhdFBhdGg6cGF0aF07CiAgICAgCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOworICAgIHJldHVybiBAW1twYXRo
IGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CiAKIC8vIE1BUks6IE5TRHJhZ2dpbmdTb3VyY2UKQEAg
LTQ4ODEsNyArNDg4Miw3IEBAIC0gKEJPT0wpa25vd3NQYWdlUmFuZ2U6KE5TUmFuZ2VQb2ludGVy
KXJhbmdlCiAgICAgLy8gYSBibGFuayBwYWdlICh3aXRoIGNvcnJlY3QtbG9va2luZyBoZWFkZXIg
YW5kIGZvb3RlciBpZiB0aGF0IG9wdGlvbiBpcyBvbiksIHdoaWNoIG1hdGNoZXMKICAgICAvLyB0
aGUgYmVoYXZpb3Igb2YgSUUgYW5kIENhbWlubyBhdCBsZWFzdC4KICAgICBpZiAoW25ld1BhZ2VS
ZWN0cyBjb3VudF0gPT0gMCkKLSAgICAgICAgbmV3UGFnZVJlY3RzID0gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxLCAxKV1d
OworICAgICAgICBuZXdQYWdlUmVjdHMgPSBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtl
UmVjdCgwLCAwLCAxLCAxKV1dOwogCiAgICAgX3ByaXZhdGUtPnBhZ2VSZWN0cyA9IG5ld1BhZ2VS
ZWN0czsKIApAQCAtNTAxOSw3ICs1MDIwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlkIGFjY1RyZWUgPSBbW3Nl
bGYgX2ZyYW1lXSBhY2Nlc3NpYmlsaXR5Um9vdF07CiAgICAgICAgIGlmIChhY2NUcmVlKQotICAg
ICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDphY2NUcmVlXTsKKyAgICAg
ICAgICAgIHJldHVybiBAW2FjY1RyZWVdOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAg
ICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVOYW1l
XTsKQEAgLTUyOTIsNyArNTI5Myw3IEBAIC0gKHZvaWQpY29weUZvbnQ6KGlkKXNlbmRlcgogICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIE5TUGFzdGVib2Fy
ZCAqZm9udFBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpOU0Zv
bnRQYm9hcmRdOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtm
b250UGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OldlYkNv
cmU6OmxlZ2FjeUZvbnRQYXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOworICAgIFtmb250UGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6QFtXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5cGUo
KV0gb3duZXI6bmlsXTsKICAgICBbZm9udFBhc3RlYm9hcmQgc2V0RGF0YTpbc2VsZiBfc2VsZWN0
aW9uU3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeUZvbnRQ
YXN0ZWJvYXJkVHlwZSgpXTsKIH0KIApAQCAtNjAyMyw3ICs2MDI0LDcgQEAgLSAoQk9PTClfaW50
ZXJwcmV0S2V5RXZlbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OktleWJvYXJkRXZlbnQ+KWV2ZW50IHNh
dmluZ0NvbW1hbmQKICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgY2FsbHMgaW1tZWRpYXRlbHkuIERP
TSBldmVudHMgbGlrZSBrZXlkb3duIGFyZSB0d2Vha2VkIHRvIGhhdmUga2V5Q29kZSBvZiAyMjks
IGFuZCBjYW5jZWxpbmcgdGhlbSBoYXMgbm8gZWZmZWN0LgogICAgICAgICAvLyBVbmZvcnR1bmF0
ZWx5LCB0aGVyZSBpcyBubyByZWFsIGRpZmZlcmVuY2UgYmV0d2VlbiBwbGFpbiB0ZXh0IGlucHV0
IGFuZCBJTSBwcm9jZXNzaW5nIC0gZm9yIGV4YW1wbGUsIEFwcEtpdCBxdWVyaWVzIGhhc01hcmtl
ZFRleHQKICAgICAgICAgLy8gd2hlbiB0eXBpbmcgd2l0aCBVLlMuIGtleWJvYXJkLCBhbmQgaW5z
ZXJ0cyBtYXJrZWQgdGV4dCBmb3IgZGVhZCBrZXlzLgotICAgICAgICBbc2VsZiBpbnRlcnByZXRL
ZXlFdmVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Om1hY0V2ZW50XV07CisgICAgICAgIFtz
ZWxmIGludGVycHJldEtleUV2ZW50czpAW21hY0V2ZW50XV07CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gQXJlIHRoZXJlIGNvbW1hbmRzIHRoYXQgY291bGQganVzdCBjYXVzZSB0ZXh0IGluc2Vy
dGlvbiBpZiBleGVjdXRlZCB2aWEgRWRpdG9yPwogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBo
YXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgdGhleSBzaG91
bGQgYmUgdHJlYXRlZCwgc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlCkBAIC02ODM0LDE4ICs2
ODM1LDEwIEBAIC0gKE5TQXJyYXkgKilzZWxlY3Rpb25UZXh0UmVjdHMKICAgICBpZiAoIVtzZWxm
IF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVmVjdG9yPFdlYkNv
cmU6OkZsb2F0UmVjdD4gbGlzdDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0
czsKICAgICBpZiAoYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAg
ICAgY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5nZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVz
KGxpc3QpOwotCi0gICAgc2l6ZV90IHNpemUgPSBsaXN0LnNpemUoKTsKLQotICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3Vs
dCBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpsaXN0W2ldXV07Ci0KLSAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdldENsaXBwZWRWaXNp
YmxlVGV4dFJlY3RhbmdsZXMocmVjdHMpOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3Rz
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1ZpZXcgKilzZWxlY3Rpb25WaWV3CkBAIC03MTMx
LDE3ICs3MTI0LDEyIEBAIC0gKE5TQXJyYXkgKilyZWN0c0ZvclRleHRNYXRjaGVzCiB7CiAgICAg
YXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFt
ZSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsK
ICAgICBhdXRvKiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRv
Y3VtZW50KQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4g
QFtdOwogCi0gICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHMgPSBkb2N1bWVudC0+
bWFya2VycygpLnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50TWFya2Vy
OjpUZXh0TWF0Y2gpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gcmVjdHMuc2l6ZSgpOwotICAgIE5T
TXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
Y291bnRdOwotICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KQotICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnJl
Y3RzW2luZGV4XV1dOyAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KGRvY3VtZW50LT5tYXJrZXJzKCkucmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoV2ViQ29y
ZTo6RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJP
T0wpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25z
KW9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UERGUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGU0ZDA2NDI5ZDllYzNkOTY3NTZlNWZhMmI2NWMw
ZThlYTY3MzhiNDQuLmViY2EzYjA4NGU2YjVmMDFhM2I1Y2ZkYWZlN2NhMWFlYzI5NGQzOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXBy
ZXNlbnRhdGlvbi5tbQpAQCAtMzksMjUgKzM5LDI1IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU0NvbnRleHRSZWYuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1l
RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJQREZSZXByZXNlbnRhdGlvbgogCiArIChOU0FycmF5ICopcG9zdFNjcmlwdE1JTUVUeXBlcwog
ewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJldHVybiBAWwog
ICAgICAgICBAImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLAotICAgICAgICBuaWxdOworICAgIF07
CiB9CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIHsKICAgICByZXR1cm4gW1tb
c2VsZiBjbGFzc10gcG9zdFNjcmlwdE1JTUVUeXBlc10gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9t
QXJyYXk6Ci0gICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgIEBbCiAg
ICAgICAgICAgICBAInRleHQvcGRmIiwKICAgICAgICAgICAgIEAiYXBwbGljYXRpb24vcGRmIiwK
LSAgICAgICAgICAgIG5pbF1dOworICAgICAgICBdCisgICAgXTsKIH0KIAogKyAoQ2xhc3MpUERG
RG9jdW1lbnRDbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZW
aWV3Lm1tCmluZGV4IGVjN2JlZmM4ZTVjMTg0NWNmNzkzZTBlYWRhYjZkMDNkYjdlM2Y0YWMuLjcx
MGM5N2JiMDRhYjRmOTQyODAwMjNkOTExZTJmMTA0ZTA3NmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTU5MCwxMyArNTkwLDEwIEBA
IC0gKHZvaWQpdmlld0RpZE1vdmVUb0hvc3RXaW5kb3cKIAogLSAoTlNEaWN0aW9uYXJ5ICopZWxl
bWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKIHsKLSAgICBXZWJGcmFtZSAqZnJhbWUgPSBbZGF0
YVNvdXJjZSB3ZWJGcmFtZV07Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICAKLSAgICByZXR1cm4g
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBmcmFt
ZSwgV2ViRWxlbWVudEZyYW1lS2V5LCAKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OltzZWxmIF9wb2ludElzSW5TZWxlY3Rpb246cG9pbnRdXSwgV2ViRWxlbWVudElzU2VsZWN0ZWRL
ZXksCi0gICAgICAgIG5pbF07CisgICAgcmV0dXJuIEB7CisgICAgICAgIFdlYkVsZW1lbnRGcmFt
ZUtleTogW2RhdGFTb3VyY2Ugd2ViRnJhbWVdLAorICAgICAgICBXZWJFbGVtZW50SXNTZWxlY3Rl
ZEtleTogQChbc2VsZiBfcG9pbnRJc0luU2VsZWN0aW9uOnBvaW50XSksCisgICAgfTsKIH0KIAog
LSAoTlNEaWN0aW9uYXJ5ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgYWxsb3dTaGFk
b3dDb250ZW50OihCT09MKWFsbG93CkBAIC03OTUsMTAgKzc5MiwxMCBAQCAtIChpZCl2aWV3U3Rh
dGUKIHsKICAgICBOU011dGFibGVBcnJheSAqc3RhdGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlX
aXRoQ2FwYWNpdHk6NF07CiAgICAgUERGRGlzcGxheU1vZGUgbW9kZSA9IFtQREZTdWJ2aWV3IGRp
c3BsYXlNb2RlXTsKLSAgICBbc3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
Om1vZGVdXTsKKyAgICBbc3RhdGUgYWRkT2JqZWN0OkAobW9kZSldOwogICAgIGlmIChtb2RlID09
IGtQREZEaXNwbGF5U2luZ2xlUGFnZSB8fCBtb2RlID09IGtQREZEaXNwbGF5VHdvVXApIHsKICAg
ICAgICAgdW5zaWduZWQgaW50IHBhZ2VJbmRleCA9IFtbUERGU3VidmlldyBkb2N1bWVudF0gaW5k
ZXhGb3JQYWdlOltQREZTdWJ2aWV3IGN1cnJlbnRQYWdlXV07Ci0gICAgICAgIFtzdGF0ZSBhZGRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpwYWdlSW5kZXhdXTsKKyAgICAg
ICAgW3N0YXRlIGFkZE9iamVjdDpAKHBhZ2VJbmRleCldOwogICAgIH0gIC8vIGVsc2UgaW4gY29u
dGludW91cyBtb2Rlcywgc2Nyb2xsIHBvc2l0aW9uIGdldHMgdXMgdG8gdGhlIHJpZ2h0IHBhZ2UK
ICAgICBCT09MIGF1dG9TY2FsZUZsYWcgPSBbUERGU3VidmlldyBhdXRvU2NhbGVzXTsKICAgICBb
c3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDphdXRvU2NhbGVGbGFnXV07
CkBAIC04ODIsNyArODc5LDcgQEAgLSAoTlNSZWN0KXNlbGVjdGlvblJlY3QKIC0gKE5TQXJyYXkg
KilzZWxlY3Rpb25UZXh0UmVjdHMKIHsKICAgICAvLyBGSVhNRTogV2UnZCBuZWVkIG5ldyBQREZL
aXQgQVBJL1NQSSB0byBnZXQgbXVsdGlwbGUgdGV4dCByZWN0cyBmb3Igc2VsZWN0aW9ucyB0aGF0
IGludGVyc2VjdCBtb3JlIHRoYW4gb25lIGxpbmUKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYgc2VsZWN0aW9uUmVjdF1dXTsK
KyAgICByZXR1cm4gQFtbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIHNlbGVjdGlvblJlY3Rd
XV07CiB9CiAKIC0gKE5TVmlldyAqKXNlbGVjdGlvblZpZXcKQEAgLTkyNiw3ICs5MjMsNyBAQCAt
IChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CiAKIC0gKE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlw
ZXNGb3JTZWxlY3Rpb24KIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpX
ZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFz
dGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgbmls
XTsKKyAgICByZXR1cm4gQFtXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2Vi
Q29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKV07CiB9CiAKIC0gKHZvaWQpd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2Fy
ZFR5cGVzOihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0
ZWJvYXJkCkBAIC0xMTI0LDIyICsxMTIxLDIzIEBAIHN0YXRpYyB2b2lkIHJlbW92ZVVzZWxlc3NN
ZW51SXRlbVNlcGFyYXRvcnMoTlNNdXRhYmxlQXJyYXkgKm1lbnVJdGVtcykKIC0gKE5TTXV0YWJs
ZUFycmF5ICopX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50
CiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKmNvcGllZEl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKLSAgICBOU0RpY3Rpb25hcnkgKmFjdGlvbnNUb1RhZ3MgPSBbW05TRGljdGlvbmFyeSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bmRlY2xhcmVkLXNlbGVjdG9yIikKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2Vi
TWVudUl0ZW1QREZBY3R1YWxTaXplXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9z
ZXRBY3R1YWxTaXplOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51
SXRlbVBERlpvb21Jbl0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tSW46KSks
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGWm9vbU91dF0s
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tT3V0OikpLAotICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERkF1dG9TaXplXSwgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBdXRvU2l6ZTopKSwKLSAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlXSwgTlNTdHJpbmdGcm9tU2VsZWN0
b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2VTY3JvbGxpbmddLCBOU1N0cmluZ0Zyb21T
ZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2VTY3JvbGxpbmc6KSksCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNdLCBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2U6KSksCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmddLCBO
U1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSks
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGQ29udGludW91
c10sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3RvcihfdG9nZ2xlQ29udGludW91czopKSwK
LSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZOZXh0UGFnZV0s
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSksCi0gICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGUHJldmlvdXNQYWdlXSwgTlNT
dHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9QcmV2aW91c1BhZ2U6KSksCi1JR05PUkVf
V0FSTklOR1NfRU5ECisgICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zVG9UYWdzID0gW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIEAoV2ViTWVudUl0
ZW1QREZBY3R1YWxTaXplKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1
YWxTaXplOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbUluKSwgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKHpvb21JbjopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERlpv
b21PdXQpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbU91dDopKSwKKyAgICAg
ICAgQChXZWJNZW51SXRlbVBERkF1dG9TaXplKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVj
dG9yKF9zZXRBdXRvU2l6ZTopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2Up
LCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2U6KSksCisgICAg
ICAgIEAoV2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlU2Nyb2xsaW5nKSwgTlNTdHJpbmdGcm9tU2Vs
ZWN0b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlU2Nyb2xsaW5nOikpLAorICAgICAgICBAKFdl
Yk1lbnVJdGVtUERGRmFjaW5nUGFnZXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Io
X3NldERvdWJsZVBhZ2U6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc1Nj
cm9sbGluZyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZVNj
cm9sbGluZzopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERkNvbnRpbnVvdXMpLCBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3RvZ2dsZUNvbnRpbnVvdXM6KSksCisgICAgICAgIEAo
V2ViTWVudUl0ZW1QREZOZXh0UGFnZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihn
b1RvTmV4dFBhZ2U6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpLCBO
U1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFnZTopKSwKICAgICAg
ICAgbmlsXTsKLSAgICAKK0lHTk9SRV9XQVJOSU5HU19FTkQKKwogICAgIC8vIExlYXZlIHRoZXNl
IG1lbnUgaXRlbXMgb3V0LCBzaW5jZSBXZWJLaXQgaW5zZXJ0cyBlcXVpdmFsZW50IG9uZXMuIE5v
dGUgdGhhdCB3ZSBsZWF2ZSBvdXQgUERGS2l0J3MgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIKICAg
ICAvLyBpdGVtIGhlcmUgYmVjYXVzZSBXZWJLaXQgYWxyZWFkeSBpbmNsdWRlcyBhbiBpdGVtIHdp
dGggdGhlIHNhbWUgdGl0bGUgYW5kIHB1cnBvc2UuIFdlIG1hcCBXZWJLaXQncyB0byBQREZLaXQn
cyAKICAgICAvLyAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiB2aWEgdGhlIGltcGxlbWVudGF0aW9u
IG9mIC1bV2ViUERGVmlldyBfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6XS4KQEAgLTEyNjUs
MjAgKzEyNjMsMTMgQEAgLSAodm9pZClfb3BlbldpdGhGaW5kZXI6KGlkKXNlbmRlcgogICAgIGlm
IChvcGF0aCkgewogICAgICAgICBpZiAoIXdyaXR0ZW4pIHsKICAgICAgICAgICAgIC8vIENyZWF0
ZSBhIFBERiBmaWxlIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgKG9ubHkgYWNjZXNzaWJs
ZSB0byB0aGUgY3VycmVudCB1c2VyLCBzZWUgNDE0NTcxNCkKLSAgICAgICAgICAgIE5TTnVtYmVy
ICpwZXJtaXNzaW9ucyA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50OlNfSVJVU1JdOwot
ICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtbTlNEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOnBlcm1pc3Npb25zLCBOU0ZpbGVQb3NpeFBl
cm1pc3Npb25zLCBuaWxdOwotICAgICAgICAgICAgW3Blcm1pc3Npb25zIHJlbGVhc2VdOwotCi0g
ICAgICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZUZpbGVBdFBh
dGg6b3BhdGggY29udGVudHM6W2RhdGFTb3VyY2UgZGF0YV0gYXR0cmlidXRlczpmaWxlQXR0cmli
dXRlc107Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFtmaWxlQXR0cmlidXRlcyByZWxlYXNl
XTsKKyAgICAgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRmls
ZUF0UGF0aDpvcGF0aCBjb250ZW50czpbZGF0YVNvdXJjZSBkYXRhXSBhdHRyaWJ1dGVzOkB7IE5T
RmlsZVBvc2l4UGVybWlzc2lvbnM6IEAoU19JUlVTUikgfV07CiAgICAgICAgICAgICB3cml0dGVu
ID0gWUVTOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICBpZiAoIVtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3Nw
YWNlXSBvcGVuRmlsZTpvcGF0aF0pIHsKLSAgICAgICAgICAgIC8vIE5TV29ya3NwYWNlIGNvdWxk
bid0IG9wZW4gZmlsZS4gIERvIHdlIG5lZWQgYW4gYWxlcnQKLSAgICAgICAgICAgIC8vIGhlcmU/
ICBXZSBpZ25vcmUgdGhlIGVycm9yIGVsc2V3aGVyZS4KKyAgICAgICAgICAgIC8vIE5TV29ya3Nw
YWNlIGNvdWxkbid0IG9wZW4gZmlsZS4gRG8gd2UgbmVlZCBhbiBhbGVydCBoZXJlPyBXZSBpZ25v
cmUgdGhlIGVycm9yIGVsc2V3aGVyZS4KICAgICAgICAgfQogICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CkBAIC0xMzQ1LDEyICsxMzM2LDcgQEAgLSAoUERG
VmlldyAqKV9QREZTdWJ2aWV3CiAtIChCT09MKV9wb2ludElzSW5TZWxlY3Rpb246KE5TUG9pbnQp
cG9pbnQKIHsKICAgICBQREZQYWdlICpwYWdlID0gW1BERlN1YnZpZXcgcGFnZUZvclBvaW50OnBv
aW50IG5lYXJlc3Q6Tk9dOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIE5POwotICAg
IAotICAgIE5TUmVjdCBzZWxlY3Rpb25SZWN0ID0gW1BERlN1YnZpZXcgY29udmVydFJlY3Q6W1tQ
REZTdWJ2aWV3IGN1cnJlbnRTZWxlY3Rpb25dIGJvdW5kc0ZvclBhZ2U6cGFnZV0gZnJvbVBhZ2U6
cGFnZV07Ci0gICAgCi0gICAgcmV0dXJuIE5TUG9pbnRJblJlY3QocG9pbnQsIHNlbGVjdGlvblJl
Y3QpOworICAgIHJldHVybiBwYWdlICYmIE5TUG9pbnRJblJlY3QocG9pbnQsIFtQREZTdWJ2aWV3
IGNvbnZlcnRSZWN0OltbUERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBib3VuZHNGb3JQYWdl
OnBhZ2VdIGZyb21QYWdlOnBhZ2VdKTsKIH0KIAogLSAodm9pZClfc2NhbGVPckRpc3BsYXlNb2Rl
T3JQYWdlQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDAyNzkz
OTQzMDgwNDZiOGEyODNhYjZhYTM2MDQ4MjlhYjI5ZmQxYjcuLjE4MDkyOWM0ZDFmNjk3ZjcwNDE5
OGMzZDljOGM4NTJiZDZkZTY5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNDY1LDE3ICs0NjUsMTYgQEAgKyAodm9pZClp
bml0aWFsaXplCiAgICAgICAgIEAiMCIsIFdlYktpdFBERlNjYWxlRmFjdG9yUHJlZmVyZW5jZUtl
eSwKICNlbmRpZgogICAgICAgICBAIjAiLCBXZWJLaXRVc2VTaXRlU3BlY2lmaWNTcG9vZmluZ1By
ZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYktpdEVkaXRh
YmxlTGlua0RlZmF1bHRCZWhhdmlvcl0sIFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVy
ZW5jZUtleSwKKyAgICAgICAgQChXZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3IpLCBX
ZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXksCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYlRleHREaXJlY3Rp
b25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yUHJlZmVyZW5jZUtleSwKKyAgICAgICAgQChXZWJUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9t
YXRpY2FsbHlJbmNsdWRlZCksIFdlYktpdFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVo
YXZpb3JQcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdERPTVBhc3RlQWxsb3dlZFBy
ZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgQFlFUywgV2ViS2l0VXNlc1BhZ2VDYWNoZVBy
ZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmNhY2hlTW9kZWxG
b3JNYWluQnVuZGxlKCldLCBXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSwKKyAgICAgICAg
QChjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSgpKSwgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VL
ZXksCiAgICAgICAgIEBZRVMsIFdlYktpdFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc1ByZWZlcmVu
Y2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZFByZWZlcmVu
Y2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6MF0sIFdlYktp
dEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKDApLCBXZWJL
aXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5jZUtleSwKICAgICAgICAgQFlFUywgV2Vi
S2l0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVT
LCBXZWJLaXRET01UaW1lcnNUaHJvdHRsaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAg
IEBOTywgV2ViS2l0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAt
NTExLDkgKzUxMCw5IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAWUVTLCBXZWJLaXRM
YXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVT
LCBXZWJLaXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5z
aWduZWRJbnQ6c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRlbmluZzo6RnVsbHlFbmFi
bGVkKV0sIFdlYktpdEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCisgICAgICAgIEAoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRlbmluZzo6RnVsbHlFbmFibGVkKSksIFdlYktp
dEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCiAjZWxzZQotICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5p
bmc6OkRpc2FibGVkKV0sIFdlYktpdEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCisgICAg
ICAgIEAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRlbmluZzo6RGlzYWJsZWQpKSwg
V2ViS2l0RnJhbWVGbGF0dGVuaW5nUHJlZmVyZW5jZUtleSwKICNlbmRpZgogICAgICAgICBATk8s
IFdlYktpdEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
QE5PLCBXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtNTQ0
LDcgKzU0Myw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbl0sIFdlYktp
dEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5QcmVmZXJlbmNlS2V5LAog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6cmVxdWlyZXNQbGF5c0lubGluZUF0dHJp
YnV0ZV0sIFdlYktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmli
dXRlS2V5LAogICAgICAgICBATk8sIFdlYktpdE1lZGlhQ29udHJvbHNTY2FsZVdpdGhQYWdlWm9v
bVByZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
QXVkaW9TZXNzaW9uOjpOb25lXSwgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSwK
KyAgICAgICAgQChBdWRpb1Nlc3Npb246Ok5vbmUpLCBXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29y
eU92ZXJyaWRlLAogICAgICAgICBATk8sIFdlYktpdE1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxs
eVByZWZlcmVuY2VLZXksCiAjaWYgSEFWRShBVktJVCkKICAgICAgICAgQFlFUywgV2ViS2l0QVZL
aXRFbmFibGVkLApAQCAtNTcwLDcgKzU2OSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAg
ICBAWUVTLCBXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSwK
ICAgICAgICAgQE5PLCBXZWJLaXRXYW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2aW9y
S2V5LAogICAgICAgICBATk8sIFdlYktpdERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSwKLSAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViQWxsb3dBbGxTdG9yYWdlXSwgV2ViS2l0
U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5LAorICAgICAgICBAKFdlYkFsbG93QWxsU3RvcmFnZSks
IFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC01NzksNyArNTc4LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6LTEuMGZdLCBXZWJLaXRNYXhQYXJzZUR1cmF0aW9uUHJl
ZmVyZW5jZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRBbGxvd011bHRpRWxlbWVudEltcGxpY2l0
Rm9ybVN1Ym1pc3Npb25QcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdEFsd2F5c1Jl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25QcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpzdGF0aWNfY2FzdDxpbnQ+KEludGVycG9sYXRpb25RdWFsaXR5OjpM
b3cpXSwgV2ViS2l0SW50ZXJwb2xhdGlvblF1YWxpdHlQcmVmZXJlbmNlS2V5LAorICAgICAgICBA
KHN0YXRpY19jYXN0PGludD4oSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdykpLCBXZWJLaXRJbnRl
cnBvbGF0aW9uUXVhbGl0eVByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZRVMsIFdlYktpdFBhc3N3
b3JkRWNob0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OjIuMGZdLCBXZWJLaXRQYXNzd29yZEVjaG9EdXJhdGlvblByZWZlcmVuY2VLZXksCiAg
ICAgICAgIEBOTywgV2ViS2l0TmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXksCkBAIC04NTAsNyArODQ5LDcgQEAgLSAodm9pZClfc2V0VW5zaWduZWRJbnRWYWx1ZToo
dW5zaWduZWQgaW50KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICB9KTsKICNlbmRp
ZgogICAgIGlmIChfcHJpdmF0ZS0+YXV0b3NhdmVzKQotICAgICAgICBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZEludDp2YWx1ZV0gZm9yS2V5Ol9rZXldOworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRPYmplY3Q6QCh2YWx1ZSkgZm9yS2V5Ol9rZXldOwogICAg
IFtzZWxmIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uXTsKIH0KIApAQCAtMTgw
OCw3ICsxODA3LDcgQEAgLSAodm9pZClzZXRFZGl0YWJsZUxpbmtCZWhhdmlvcjooV2ViS2l0RWRp
dGFibGVMaW5rQmVoYXZpb3IpYmVoYXZpb3IKIAogLSAoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvcil0ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yCiB7
Ci0gICAgV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvciB2YWx1ZSA9IHN0
YXRpY19jYXN0PFdlYlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3I+KFtzZWxm
IF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25C
ZWhhdmlvclByZWZlcmVuY2VLZXldKTsKKyAgICBhdXRvIHZhbHVlID0gc3RhdGljX2Nhc3Q8V2Vi
VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcj4oW3NlbGYgX2ludGVnZXJWYWx1
ZUZvcktleTpXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVy
ZW5jZUtleV0pOwogICAgIGlmICh2YWx1ZSAhPSBXZWJUZXh0RGlyZWN0aW9uU3VibWVudU5ldmVy
SW5jbHVkZWQgJiYKICAgICAgICAgdmFsdWUgIT0gV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVBdXRv
bWF0aWNhbGx5SW5jbHVkZWQgJiYKICAgICAgICAgdmFsdWUgIT0gV2ViVGV4dERpcmVjdGlvblN1
Ym1lbnVBbHdheXNJbmNsdWRlZCkgewpAQCAtMTk0Myw3ICsxOTQyLDcgQEAgKyAoQ0ZTdHJpbmdF
bmNvZGluZylfc3lzdGVtQ0ZTdHJpbmdFbmNvZGluZwogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1
bHRUZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nCiB7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czoKLSAgICAgICAgW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5c3Rl
bUxhbmd1YWdlKCkgZm9yS2V5OldlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5j
ZUtleV1dOworICAgICAgICBAeyBXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVu
Y2VLZXk6IGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lRm9yU3lzdGVtTGFuZ3VhZ2UoKSB9XTsKIH0K
IAogc3RhdGljIE5TU3RyaW5nICpjbGFzc0lCQ3JlYXRvcklEID0gbmlsOwpAQCAtMjc1Niw4ICsy
NzU1LDcgQEAgLSAodm9pZClzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3k6KFdlYlN0b3JhZ2VCbG9j
a2luZ1BvbGljeSlzdG9yYWdlQmxvY2tpbmdQb2xpY3kKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gd3JpdGUgdGhlIHNldHRpbmcgb3V0LCBzbyB3ZSBq
dXN0IHJlc2V0IHRoZSBkZWZhdWx0IGluc3RlYWQgb2Ygc3RvcmluZyB0aGUgbmV3IHNldHRpbmcu
CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSByZW1vdmVzIGFueSBkZWZhdWx0cyBwcmV2aW91c2x5
IHJlZ2lzdGVyZWQgYnkgY2xpZW50IHByb2Nlc3MsIHdoaWNoIGlzIG5vdCBhcHByb3ByaWF0ZSBm
b3IgdGhpcyBtZXRob2QgdG8gZG8uCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzdG9yYWdl
QmxvY2tpbmdQb2xpY3ldIGZvcktleTpXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXldOwot
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6ZGljdF07CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVn
aXN0ZXJEZWZhdWx0czpAeyBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXk6IEAoc3RvcmFn
ZUJsb2NraW5nUG9saWN5KSB9XTsKICNlbHNlCiAgICAgW3NlbGYgX3NldEludGVnZXJWYWx1ZTpz
dG9yYWdlQmxvY2tpbmdQb2xpY3kgZm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtl
eV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGU2NTllZjBmYTNmYWEwZTYwMThhM2Y0ODE1ZDg5NjQx
M2ZlOWQyNmQuLjE0NTczOTg3OGM1NzlmZWM1Y2EyZGJkNWMyMTE2YzdlMWYzYjNiM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBh
cnNlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBOU1N0cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0
cmluZ05pbElmRW1wdHkoZXJyb3JNc2cpOwotICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBb
W05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2Fn
ZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZEludDplcnJvckxpbmVdLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07Cisg
ICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHNBbmRLZXlzOm5zRXJyb3JNZXNzYWdlLCBXZWJTY3JpcHRFcnJvckRlc2NyaXB0aW9u
S2V5LCBAKGVycm9yTGluZSksIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleSwgbmlsXTsKICAg
ICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldl
YlNjcmlwdEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5m
bzppbmZvXTsKIAogICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291
cmNlRnVuYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
VGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0KaW5kZXggYTM4MWQxMGIyOGEzZGVl
OTU0OGVhMmVlNDY5OTYwNTdhM2IyNmUxNi4uNmQzMTdiOTdkNTViMzU3YmIyODRkOTc3OTIxZTQw
YTZlN2RmMGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0KQEAgLTEzNyw3ICsxMzcs
NyBAQCAtICh2b2lkKV9wbGFjZVBvcHVwV2luZG93OihOU1BvaW50KXRvcExlZnQKICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3aW5kb3dGcmFtZS5zaXplLmhlaWdo
dCA9IG51bWJlclRvU2hvdyAqIFtfdGFibGVWaWV3IHJvd0hlaWdodF0gKyAobnVtYmVyVG9TaG93
ICsgMSkgKiBbX3RhYmxlVmlldyBpbnRlcmNlbGxTcGFjaW5nXS5oZWlnaHQ7CiAgICAgd2luZG93
RnJhbWUub3JpZ2luLnkgLT0gd2luZG93RnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAgTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOltOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxMi4wZl0sIE5TRm9udEF0dHJpYnV0ZU5hbWUs
IG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gQHsgTlNGb250QXR0cmlidXRl
TmFtZTogW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyLjBmXSB9OwogICAgIENHRmxvYXQgbWF4
V2lkdGggPSAwOwogICAgIGludCBtYXhJbmRleCA9IC0xOwogICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IG51bWJlclRvU2hvdzsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDExNzc3ZGI2ZTE2YmU4OWRhZDRkN2U2ODBlMzE3YjVi
N2RmZTUzYS4uOTVkMGYzZThkNjdhODM0MDEyYWQwN2Y2M2VkZGNlMjkwNjczYWZmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQzLDcgKzI0Myw2
IEBACiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL0hhc2hUcmFpdHMu
aD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVF
eHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYv
UkFNU2l6ZS5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtMjU0
LDYgKzI1Myw3IEBACiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
V2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgog
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yOTIzLDcgKzI5MjMsNyBAQCAtICh2b2lk
KV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICBz
ZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoW3ByZWZlcmVuY2VzIGxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseV0pOwogICAgIHNldHRpbmdzLnNldExvYWRzU2l0ZUljb25zSWdub3Jp
bmdJbWFnZUxvYWRpbmdTZXR0aW5nKFtwcmVmZXJlbmNlcyBsb2Fkc1NpdGVJY29uc0lnbm9yaW5n
SW1hZ2VMb2FkaW5nUHJlZmVyZW5jZV0pOwogCi0gICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1
cHBvcnRlZEltYWdlVHlwZXMoV2ViQ29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmlu
Z0FycmF5KFtwcmVmZXJlbmNlcyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKKyAg
ICBXZWJDb3JlOjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhtYWtlVmVjdG9yPFN0
cmluZz4oW3ByZWZlcmVuY2VzIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzZXR0aW5ncy5zZXRTaG91bGRQcmludEJhY2tn
cm91bmRzKHRydWUpOwpAQCAtNDUyOCw3ICs0NTI4LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2Nv
bnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcgKil1c2VySW50ZXJmYWNlSXRlbQog
ICAgICAgICBhdXRvKiB2YWxpZGF0aW9uQnViYmxlID0gX3ByaXZhdGUtPmZvcm1WYWxpZGF0aW9u
QnViYmxlLmdldCgpOwogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IHZhbGlkYXRpb25CdWJibGUg
PyB2YWxpZGF0aW9uQnViYmxlLT5tZXNzYWdlKCkgOiBlbXB0eVN0cmluZygpOwogICAgICAgICBk
b3VibGUgZm9udFNpemUgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+Zm9u
dFNpemUoKSA6IDA7Ci0gICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJmYWNlSXRlbTogQHsgQCJt
ZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJmb250U2l6ZSI6IFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOmZvbnRTaXplXSB9IH07CisgICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJm
YWNlSXRlbTogQHsgQCJtZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJmb250U2l6ZSI6
IEAoZm9udFNpemUpIH0gfTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpAQCAtNDY0NCwyMiAr
NDY0NCw2IEBAIC0gKHZvaWQpX3VwZGF0ZUFjdGl2ZVN0YXRlCiAjZW5kaWYKIH0KIAotc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRlcm5zKQotewotICAg
IFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5zVmVjdG9yOwotCi0gICAgTlNVSW50ZWdlciBjb3VudCA9
IFtwYXR0ZXJucyBjb3VudF07Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIHBhdHRl
cm5zVmVjdG9yOwotCi0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICBpZCBlbnRyeSA9IFtwYXR0ZXJucyBvYmplY3RBdEluZGV4OmldOwotICAgICAg
ICBpZiAoW2VudHJ5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAg
ICBwYXR0ZXJuc1ZlY3Rvci5hcHBlbmQoU3RyaW5nKChOU1N0cmluZyAqKWVudHJ5KSk7Ci0gICAg
fQotICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsKLX0KLQogKyAodm9pZClfYWRkVXNlclNjcmlw
dFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdv
cmxkIHNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgdXJsOihOU1VSTCAqKXVybAogICAgICAgICAg
ICAgICAgICAgICB3aGl0ZWxpc3Q6KE5TQXJyYXkgKil3aGl0ZWxpc3QgYmxhY2tsaXN0OihOU0Fy
cmF5ICopYmxhY2tsaXN0CiAgICAgICAgICAgICAgICAgaW5qZWN0aW9uVGltZTooV2ViVXNlclNj
cmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZQpAQCAtNDY4MSw3ICs0NjY1LDcgQEAgKyAo
dm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihX
ZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHNv
dXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IDogV2ViQ29yZTo6VXNl
clNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJ
bmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmpl
Y3Rpbmc6Ok5vKTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVz
ZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCBtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSwgbWFr
ZVZlY3RvcjxTdHJpbmc+KGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXRE
b2N1bWVudFN0YXJ0ID8gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
U3RhcnQgOiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIGlu
amVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6V2FpdEZvck5v
dGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCksIFdURk1vdmUodXNlclNj
cmlwdCkpOwogfQogCkBAIC00NzA0LDcgKzQ2ODgsNyBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVT
aGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAq
KQogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc3R5bGVTaGVl
dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rl
ZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCk7CisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldD4oc291cmNlLCB1cmwsIG1ha2VWZWN0b3I8U3RyaW5nPih3aGl0ZWxpc3QpLCBtYWtl
VmVjdG9yPFN0cmluZz4oYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5B
bGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFs
bEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9w
RnJhbWVPbmx5LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+
dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBX
VEZNb3ZlKHN0eWxlU2hlZXQpLCBXZWJDb3JlOjpJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsK
IH0KIApAQCAtNjczNyw3ICs2NzIxLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2VsZW1lbnRBdFdp
bmRvd1BvaW50OihOU1BvaW50KXdpbmRvd1BvaW50CiAgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBb
ZG9jdW1lbnRWaWV3IGNvbnZlcnRQb2ludDp3aW5kb3dQb2ludCBmcm9tVmlldzpuaWxdOwogICAg
ICAgICByZXR1cm4gWyhOU1ZpZXcgPFdlYkRvY3VtZW50RWxlbWVudD4gKilkb2N1bWVudFZpZXcg
ZWxlbWVudEF0UG9pbnQ6cG9pbnRdOwogICAgIH0KLSAgICByZXR1cm4gW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdDpbZnJhbWVWaWV3IHdlYkZyYW1lXSBmb3JLZXk6V2ViRWxlbWVu
dEZyYW1lS2V5XTsKKyAgICByZXR1cm4gQHsgV2ViRWxlbWVudEZyYW1lS2V5OiBbZnJhbWVWaWV3
IHdlYkZyYW1lXSB9OwogfQogCiAtIChOU0RpY3Rpb25hcnkgKillbGVtZW50QXRQb2ludDooTlNQ
b2ludClwb2ludApAQCAtNzAyNSw3ICs3MDA5LDcgQEAgLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRU
eXBlc0ZvclNlbGVjdGlvbgogICAgIGlmIChbZG9jdW1lbnRWaWV3IGNvbmZvcm1zVG9Qcm90b2Nv
bDpAcHJvdG9jb2woV2ViRG9jdW1lbnRTZWxlY3Rpb24pXSkgewogICAgICAgICByZXR1cm4gWyhO
U1ZpZXcgPFdlYkRvY3VtZW50U2VsZWN0aW9uPiAqKWRvY3VtZW50VmlldyBwYXN0ZWJvYXJkVHlw
ZXNGb3JTZWxlY3Rpb25dOwogICAgIH0KLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAg
IHJldHVybiBAW107CiB9CiAKIC0gKHZvaWQpd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5
cGVzOihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJv
YXJkCkBAIC03MDQ3LDcgKzcwMzEsNyBAQCAtIChOU0FycmF5ICopcGFzdGVib2FyZFR5cGVzRm9y
RWxlbWVudDooTlNEaWN0aW9uYXJ5ICopZWxlbWVudAogICAgIH0gZWxzZSBpZiAoW1tlbGVtZW50
IG9iamVjdEZvcktleTpXZWJFbGVtZW50SXNTZWxlY3RlZEtleV0gYm9vbFZhbHVlXSkgewogICAg
ICAgICByZXR1cm4gW3NlbGYgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXTsKICAgICB9Ci0g
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICByZXR1cm4gQFtdOwogfQogCiAtICh2b2lk
KXdyaXRlRWxlbWVudDooTlNEaWN0aW9uYXJ5ICopZWxlbWVudCB3aXRoUGFzdGVib2FyZFR5cGVz
OihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJk
CkBAIC04MDE4LDcgKzgwMDIsNyBAQCAtICh2b2lkKXVubWFya0FsbFRleHRNYXRjaGVzCiAtIChO
U0FycmF5ICopcmVjdHNGb3JUZXh0TWF0Y2hlcwogewogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2Vk
KQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwog
CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAg
ICAgV2ViRnJhbWUgKmZyYW1lID0gW3NlbGYgbWFpbkZyYW1lXTsKQEAgLTkwNzUsNyArOTA1OSw3
IEBAIC0gKHZvaWQpX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTooaWQpc2VuZGVyCiAgICAgfQog
CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJk
V2l0aFVuaXF1ZU5hbWVdOwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3Q6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3du
ZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOwogICAgIE5TTXV0YWJsZVN0cmluZyAq
cyA9IFtzZWxlY3RlZFN0cmluZyBtdXRhYmxlQ29weV07CiAgICAgY29uc3QgdW5pY2hhciBub25C
cmVha2luZ1NwYWNlQ2hhcmFjdGVyID0gMHhBMDsKICAgICBOU1N0cmluZyAqbm9uQnJlYWtpbmdT
cGFjZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczombm9uQnJlYWtpbmdT
cGFjZUNoYXJhY3RlciBsZW5ndGg6MV07CkBAIC0xMDE2OSwxNyArMTAxNTMsMTYgQEAgLSAodWlu
dDY0X3QpX25vdGlmaWNhdGlvbklERm9yVGVzdGluZzooSlNWYWx1ZVJlZilqc05vdGlmaWNhdGlv
bgogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0ZvbnRTZWxlY3Rpb24p
CisKICsgKHZvaWQpX3NldEZvbnRXaGl0ZWxpc3Q6KE5TQXJyYXkgKil3aGl0ZWxpc3QKIHsKICNp
ZiAhUExBVEZPUk0oTUFDKQogICAgIFVOVVNFRF9QQVJBTSh3aGl0ZWxpc3QpOwogI2Vsc2UKLSAg
ICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGluIHdo
aXRlbGlzdCkKLSAgICAgICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIFdlYkNvcmU6OkZv
bnRDYWNoZTo6c2V0Rm9udFdoaXRlbGlzdCh2ZWN0b3IpOworICAgIFdlYkNvcmU6OkZvbnRDYWNo
ZTo6c2V0Rm9udFdoaXRlbGlzdChtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSk7CiAjZW5k
aWYKIH0KKwogQGVuZAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzMjZhMDZlYWNkODZlNzJiYWQy
NTJmM2E3NTBlZTg1NWUyYWJmZjhjLi40NDA1OGMyNWVjMGM3YjM5ZDVmMDk1NTg3ODQxNWEwYzM3
OThkMmMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjU2IEBACisyMDIwLTA0LTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXksIE5TRGljdGlvbmFyeSwg
YW5kIE5TTnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oOiBSZW1vdmUgdXNlIG9mIE5vdGlmaWNhdGlvbkhhbmRsZXIKKyAgICAg
ICAgdHlwZTsgaXQncyBqdXN0ICJpZCIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0
QXJyYXkpOiBNb3ZlZCB0aGlzIHVwIGluIHRoZSBmaWxlLCByZW1vdmVkIHVubmVlZGVkCisgICAg
ICAgIHVzZSBvZiBKU1ZhbHVlVG9PYmplY3QgYW5kIHVudXNlZCBleGNlcHRpb24gYXJndW1lbnQu
CisgICAgICAgIChlbGVtZW50c0ZvclJhbmdlQ2FsbGJhY2spOiBVc2UgY29udmVydEVsZW1lbnRz
VG9PYmplY3RBcnJheS4KKyAgICAgICAgKGNvbHVtbkhlYWRlcnNDYWxsYmFjayk6IFVwZGF0ZWQg
Zm9yIHJlbW92ZWQgZXhjZXB0aW9uIGFyZ3VtZW50LgorICAgICAgICAocm93SGVhZGVyc0NhbGxi
YWNrKTogRGl0dG8uCisgICAgICAgICh1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlQ2FsbGJh
Y2spOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaDogQ2hhbmdlZCB0byB1c2UgUmV0YWluUHRyLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbToKKyAgICAgICAgKGNy
ZWF0ZUNvcmVBbmltYXRpb25MYXllcik6IFVzZSBAe30uCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHNvbWUgdW5u
ZWVkZWQKKyAgICAgICAgY29kZSBub3cgdGhhdCB3ZSB1c2UgUmV0YWluUHRyLgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIpOiBVc2UgQFtdLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJrZXJzKTogVXNl
IEBbXS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklP
Uy5tOgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIG1hcmtlZFJhbmdlXSk6IFVzZSBA
W10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbToKKyAgICAgICAgKHNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JT
ZWFyY2hDcml0ZXJpYSk6IFR3ZWFrIGEgbGl0dGxlLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tOgorICAgICAgICAoLVtO
U1N0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl0pOiBEZWxldGVkLiBEdXBsaWNhdGUgb2YgYSBtZXRo
b2QgYWxyZWFkeQorICAgICAgICBpbXBsZW1lbnRlZCBpbiBhbm90aGUgZmlsZS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAg
ICAgICAobWFrZVZlY3RvckVsZW1lbnQpOiBBZGRlZCBvdmVybG9hZHMgdG8gbWFrZSBib3RoCisg
ICAgICAgIG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gYW5kCisgICAg
ICAgIG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gd29yay4KKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHNv
bWUgdW5uZWVkZWQKKyAgICAgICAgY29kZSBub3cgdGhhdCB3ZSB1c2UgUmV0YWluUHRyLgorICAg
ICAgICAoY29udmVydFZlY3RvclRvT2JqZWN0QXJyYXkpOiBSZW1vdmVkIHVubmVlZGVkIHVzZSBv
ZiBKU1ZhbHVlVG9PYmplY3QKKyAgICAgICAgYW5kIHVubmVlZGVkIGV4Y2VwdGlvbiBhcmd1bWVu
dC4KKyAgICAgICAgKGNvbnZlcnROU0FycmF5VG9WZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6IFVzZQorICAgICAg
ICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+LgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyk6IERpdHRvLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKTogRGl0dG8uCisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzIGNvbnN0KTogRGl0dG8uCisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZh
bHVlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xl
KTogVXBkYXRlZCBzaW5jZSBtX2VsZW1lbnQgaXMgYSBSZXRhaW5QdHIuCisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZyk6IERpdHRvLgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpvcmllbnRhdGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omxhbmd1YWdlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoZWxwVGV4dCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGluZUZvckluZGV4KTogVXNlIEAoKS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6IFVzZSBAKCkuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisgICAgICAgIG1ha2VWZWN0
b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKTogVXNlCisgICAgICAgIG1ha2VW
ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKTogRGl0dG8uCisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKTogRGl0dG8uCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMpOiBEaXR0
by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3cp
OiBVc2UgQFtdIGFuZCBAKCkuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRT
ZWxlY3RlZENoaWxkIGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2VXaXRoT3B0aW9ucyk6CisgICAgICAgIFVzZSBAe30sIEBZRVMsIGFuZCBATk8uCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKTogVXNl
IEBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToK
KyAgICAgICAgKGFkZFRlc3RQbHVnaW5zVG9QbHVnaW5TZWFyY2hQYXRoKTogVXNlIEBbXS4KKyAg
ICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6IFVzZSBA
W10uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tbToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkIGRlY2xhcmVUeXBlOm93
bmVyOl0pOiBVc2UgQFtdLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGJlZ2lu
RHJhZ1dpdGhGaWxlczpdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJv
bGxlciBzZW50VG91Y2hFdmVudE9mVHlwZTpdKTogVXNlIEAoKS4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtN
b2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgY2FuY2VsTm90aWZpY2F0aW9uOl0pOiBVc2UgQFtd
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm06CisgICAg
ICAgICgtW09iakNDb250cm9sbGVyIG9iamVjdE9mQ2xhc3M6XSk6IFVzZSBAKCkuCisgICAgICAg
ICgtW09iakNDb250cm9sbGVyIGFycmF5T2ZTdHJpbmddKTogVXNlIEBbXS4KKyAgICAgICAgKC1b
T2JqQ0NvbnRyb2xsZXIgdGVzdFdyYXBwZXJSb3VuZFRyaXBwaW5nOl0pOiBVc2UgQCgpLgorICAg
ICAgICAoLVtPYmpDQ29udHJvbGxlciB0ZXN0QXJyYXldKTogVXNlIEBbXS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAob3JpZ2luc0Fy
cmF5VG9KUyk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mIEpTVmFsdWVUb09iamVjdC4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm06CisgICAg
ICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgbWFya2VkUmFuZ2VdKTogVXNlIEBbXSBhbmQgQCgp
LgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIHNlbGVjdGVkUmFuZ2VdKTogVXNlIEBb
XSBhbmQgQCgpLgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIGZpcnN0UmVjdEZvckNo
YXJhY3RlcnNGcm9tOmxlbmd0aDpdKToKKyAgICAgICAgVXNlIEBbXSBhbmQgQCgpLgorICAgICAg
ICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6
YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6XSk6CisgICAg
ICAgIFVzZSBAW10uCisgICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgaW50ZXJwcmV0S2V5
RXZlbnRzOndpdGhTZW5kZXI6XSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmNvcHlUZXh0KTogVXNlIFtdLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwOiBEZWxldGVkIGFuCisgICAgICAg
IHVubmVlZGVkIGNvcHkgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IuCisKKyAgICAgICAgKiBU
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW06CisgICAgICAg
ICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIgc2V0UmVzdWx0c0Zyb21KU09iamVjdDppbkNvbnRl
eHQ6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbToKKyAgICAgICAgKHRvVmVjdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uRGVsZWdhdGUg
X3dlYlZpZXc6Y29udGVudFJ1bGVMaXN0V2l0aElkZW50aWZpZXI6cGVyZm9ybWVkQWN0aW9uOmZv
clVSTDpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbToKKyAgICAgICAgKHdyaXRlSW1h
Z2VEYXRhVG9QYXN0ZWJvYXJkKTogVXNlIEBbXSBhbmQgQHt9LgorICAgICAgICAod3JpdGVCdW5k
bGVGaWxlVG9QYXN0ZWJvYXJkKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBV
c2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQ
Q29va2llU3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLT2JqZWN0Lm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAg
ICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6IFVzZSBAW10uCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dl
YlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbToKKyAgICAgICAgKC1bRGlkQ3JlYXRl
SmF2YVNjcmlwdENvbnRleHRGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0OmZvckZyYW1lOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW06CisgICAgICAgIChtYWluKTogVXNlIEB7fS4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6IFVzZSBAe30gYW5kIEAoKS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L21hYy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6IFVzZSB7fS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgVXNlIGlkIGluc3RlYWQgb2YgTm90aWZpY2F0aW9uSGFuZGxlci4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuaDoKKyAgICAgICAgVXNlIGlkIGZvciBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZS4gQWRk
ZWQgYW4gb3ZlcmxvYWQgb2YgbWFrZVZlY3RvckVsZW1lbnQKKyAgICAgICAgdG8gbWFrZSBtYWtl
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4gd29yay4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaDoKKyAgICAgICAgVXNlIFJldGFpblB0ci4gQWRkZWQgYW4gb3ZlcmxvYWQgb2YgbWFrZVZl
Y3RvckVsZW1lbnQgdG8gbWFrZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pj4gd29yay4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tOgorICAgICAgICBSZW1vdmVkIHVu
bmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpjb252
ZXJ0TlNBcnJheVRvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAg
c2luY2Ugd2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29u
dmVydEVsZW1lbnRzVG9PYmplY3RBcnJheSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mCisgICAg
ICAgIEpTVmFsdWVUb09iamVjdC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZWxlbWVudHNGb3JSYW5nZSk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgVXNlIEBbXS4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9y
TWFya2Vycyk6IFVzZSBAW10uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMpOgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW06Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBVc2UgQHt9
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ug
d2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydE5T
QXJyYXlUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKTog
RGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVu
V2l0aFJhbmdlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvd0hlYWRlcnMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y29sdW1uSGVhZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKTogVXBkYXRlZCBzaW5jZSBtX2VsZW1l
bnQKKyAgICAgICAgaXMgYSBSZXRhaW5QdHIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKTogRGl0dG8uCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOiBEaXR0by4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZyk6
IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6IERp
dHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6
IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlv
biBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsYW5ndWFnZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5lRm9ySW5kZXgpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisgICAgICAg
IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pi4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dIZWFkZXJzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cyk6IERpdHRvLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMpOiBEaXR0
by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0U2VsZWN0ZWRDaGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KTogVXNl
IEBbXS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJh
bmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyk6IFRha2UgVmVjdG9yJiYuCisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KTogVGFrZSBTdHJpbmcm
Ji4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IFVwZGF0ZWQg
Zm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUGxh
dGZvcm1Jbml0aWFsaXplKTogVXNlIEB7fWFuZCBAKCkuCisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyk6IFVzZSBtYWtlVmVjdG9yPFN0cmlu
Zz4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOiBVcGRhdGUgdG8gcGFzcyBTdHJpbmcmJi4KKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEFsbG93ZWRNZW51QWN0aW9ucyk6IFVzZSBjcmVhdGVO
U0FycmF5LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW06CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2ZW50czpd
KTogVXNlIEAoKS4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZp
ZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2Nh
bGVJZk5lZWRlZCk6IFVzZSBAe30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOiBVc2UgQFtd
LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJv
YXJkLm1tOgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCBkZWNsYXJlVHlw
ZTpvd25lcjpdKTogVXNlIEBbXS4KKwogMjAyMC0wNC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYSB3b3JrYXJvdW5kIHRoYXQgYWxs
b3dzIG1hbnkgQVBJIHRlc3RzIHRvIHBhc3Mgb24gaU9TIDEzLjIKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IDFiZGYxYzQzMGJjNTBiZTM4
NGZhY2NlNTBkZmZhNTI4ZGE0ODU2YTUuLjFkYzdkM2I1NjNhMTU0ZjRjZTliZjdhMzAzMGM4YzVh
NzY5N2YzOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CkBAIC0zMiw5ICszMSwx
MSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRv
d3MuaD4KICNlbmRpZgorCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShHVEsp
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKICNpbmNs
dWRlIDxhdGsvYXRrLmg+CkBAIC05NCw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQ
bGF0Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZpY2F0aW9uTGlzdGVuZXJzOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRpb25IYW5k
bGVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9nbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBM
QVRGT1JNKEdUSykKQEAgLTEwNCw1ICsxMDUsMyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
cGxhdGZvcm1SZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9OwotCi0jZW5kaWYgLy8gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmgKaW5kZXggOTZlOTk3YWFlMjhkMTI2Nzk0YTliZGZjOWFmZTNlNDliYmE2
ZDUxYi4uYmQ3Yjc1YzRiODdmMzI0MjEwODQ5OWFmYmI0NmRmY2M1NDI0NDkyNCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogCkBAIC0zNiwxNSAr
MzUsMTMgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlcjsKLXR5cGVkZWYgQ0ZUeXBl
UmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxhdGZvcm1UZXh0TWFya2VyID0g
aWQ7Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UKIHR5cGVkZWYg
dm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJr
ZXJSYW5nZTsKICNlbmRpZgogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OwotCiBjbGFz
cyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB7CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKQEAgLTU4LDggKzU1LDggQEAgcHVibGljOgog
ICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7Ci0jaWYg
U1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxQ
bGF0Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
UmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXI7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4dE1hcmtl
ciBtX3RleHRNYXJrZXI7CiAjZW5kaWYKQEAgLTc5LDggKzc2LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKIAogcHJpdmF0ZToKLSNpZiBTVVBQT1JUU19B
WF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
UmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXJSYW5nZTsKICNlbHNlCiAgICAgUGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UgbV90ZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTg5LDcgKzg2LDcgQEAg
cHJpdmF0ZToKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0b1RleHRNYXJrZXIoSlNPYmplY3RS
ZWYgb2JqZWN0KTsKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHRvVGV4dE1hcmtlclJh
bmdlKEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKLSNpZiAhU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMK
KyNpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlcikgeyB9CiBpbmxpbmUgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyJikgeyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpIHsgfQpAQCAtMTAyLDUgKzk5LDMgQEAgaW5saW5l
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKCkgeyB9CiBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0Vx
dWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogaW5s
aW5lIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TWFya2VyUmFu
Z2U7IH0KICNlbmRpZgotCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDJm
ZGNjMDBkMjFmY2ZiYzI1ZGViMjEwZGZlY2QzNDc2NTdmOGRmYjcuLjExZjNhNTE5NGY5ZWIyMTdk
MzM3YzU5MzAzZTNjZmU2ZmI2ZWU1OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0zMDcsNiArMzA3LDE1IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGluZGV4T2ZDaGlsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIChkb3Vi
bGUpdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGlsZChjaGlsZEVsZW1lbnQpKTsK
IH0KIAorc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkoSlND
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYg
ZWxlbWVudHMpCit7CisgICAgYXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQs
IDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXpl
KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgSlNP
YmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNb
aV0pLCAwKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJbmRleENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTMyNywyMCArMzM2LDE0IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCisKICAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKLSAgICAK
KwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0b0FY
RWxlbWVudCh0aGlzT2JqZWN0KS0+ZWxlbWVudHNGb3JSYW5nZShsb2NhdGlvbiwgbGVuZ3RoLCBl
bGVtZW50cyk7Ci0gICAgCi0gICAgSlNWYWx1ZVJlZiBhcnJheVJlc3VsdCA9IEpTT2JqZWN0TWFr
ZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0UmVmIGFycmF5T2JqID0gSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsKLSAgICB1bnNpZ25lZCBlbGVt
ZW50c1NpemUgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8
IGVsZW1lbnRzU2l6ZTsgKytrKQotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBhcnJheU9iaiwgaywgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVtZW50c1trXSksIDApOwotICAgIAotICAgIHJl
dHVybiBhcnJheVJlc3VsdDsKKworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFy
cmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgaW5jcmVhc2VU
ZXh0U2VsZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtNjE1
LDMwICs2MTgsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgc3RyaW5nQXR0cmlidXRlVmFsdWVDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KEpT
Q29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1l
bnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNWYWx1ZVJlZiBhcnJheVJlc3Vs
dCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0UmVm
IGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsKLQot
ICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAgICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0pLCAwKTsK
LQotICAgIHJldHVybiBhcnJheVJlc3VsdDsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgY29sdW1u
SGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBWZWN0
b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9BWEVsZW1lbnQodGhp
c09iamVjdCktPmNvbHVtbkhlYWRlcnMoZWxlbWVudHMpOwotICAgIHJldHVybiBjb252ZXJ0RWxl
bWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzLCBleGNlcHRpb24pOworICAgIHJl
dHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0K
IAogc3RhdGljIEpTVmFsdWVSZWYgcm93SGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVu
dHM7CiAgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnJvd0hlYWRlcnMoZWxlbWVudHMpOwot
ICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRz
LCBleGNlcHRpb24pOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNv
bnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlB
dHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY1
MCw3ICs2NDEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZh
bHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTTwogICAgIAogICAgIFZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0b0FYRWxlbWVudCh0aGlzT2Jq
ZWN0KS0+dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUuZ2V0KCksIGVsZW1l
bnRzKTsKLSAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBl
bGVtZW50cywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RB
cnJheShjb250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVu
dEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IGNhMjI1
NWM5ZWRlMDc1MjZmOTA1Mzk1NDhlMGI0NDE4YjM1YjVkMGMuLmQ3MjE5N2ZlYzBjZTc1ZjRlYWQ2
NTM4MWIyNWE1OGYyNjBjNTBlY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDE4ICszMiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fCi10eXBlZGVmIGlkIFBsYXRmb3Jt
VUlFbGVtZW50OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQbGF0Zm9ybVVJ
RWxlbWVudDsKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbGlmIFBMQVRG
T1JNKFdJTikKICN1bmRlZiBfV0lOU09DS0FQSV8KICNkZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFBy
ZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKLQogI2luY2x1ZGUgPFdl
YkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+Ci0KIHR5cGVkZWYgQ09NUHRyPElB
Y2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkg
JiYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyQXRrLmgiCkBAIC01MywyMSArNDcsMjIgQEAgdHlwZWRlZiBBdGtPYmplY3QqIFBsYXRmb3Jt
VUlFbGVtZW50OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbmRpZgogCitj
bGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKK3B1YmxpYzoKICNpZiBQTEFURk9STShDT0NP
QSkKLSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOwotI2Vs
c2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOworICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQpOwogI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09B
KQorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwogI2VuZGlm
CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewotcHVibGljOgotICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwotICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwotICAgIH5BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWQgcGxhdGZvcm1VSUVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KKyNlbmRpZgogCisjaWYgIVBM
QVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRmb3JtVUlFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKIAogICAgIHN0YXRpYyBKU09iamVj
dFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCYpOwogCkBAIC0zMTgsMTAgKzMxMyw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdDsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMoSlNTdHJp
bmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKLSAgICAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
UmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFuIGVsZW1l
bnQuCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlvbnMoKTsKICAg
ICAKQEAgLTMzMiwxMSArMzI2LDE0IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygpOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAg
IFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKKyNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2Vk
IHRvIGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgotICAgIE5vdGlm
aWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4g
bV9lbGVtZW50OworICAgIFJldGFpblB0cjxpZD4gbV9ub3RpZmljYXRpb25IYW5kbGVyOwogI2Vu
ZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2Jq
ZWN0TWFjLm1tCmluZGV4IGE2NDU3YTA3NmIxYjkyMjJlYzE4MzYyZDRiYzk0Y2I0NzJhM2EzY2Mu
LjBjOGZhNDAwM2E3ZGZiNWRmNWMzNDJmMTQyMmI3YmUzOTY4NjU1M2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVj
dE1hYy5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIENGVHlwZVJlZiBjcmVhdGVDb3JlQW5pbWF0aW9u
TGF5ZXIoKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBjYUxheWVyID0gYWRvcHROUyhbW1Rlc3RQ
bHVnaW5MYXllciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNOdWxsICpudWxsVmFsdWUgPSBbTlNO
dWxsIG51bGxdOwotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9ucyA9IFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbFZhbHVlLCBAImJvdW5kcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJjb250ZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJjb250ZW50c1JlY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAib3BhY2l0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJwb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJz
aGFkb3dDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJz
dWJsYXllclRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJzdWJsYXllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUs
IEAidHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBA
InpQb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgTlNE
aWN0aW9uYXJ5ICphY3Rpb25zID0gQHsKKyAgICAgICAgQCJhbmNob3JQb2ludCI6IG51bGxWYWx1
ZSwKKyAgICAgICAgQCJib3VuZHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29udGVudHMiOiBu
dWxsVmFsdWUsCisgICAgICAgIEAiY29udGVudHNSZWN0IjogbnVsbFZhbHVlLAorICAgICAgICBA
Im9wYWNpdHkiOiBudWxsVmFsdWUsCisgICAgICAgIEAicG9zaXRpb24iOiBudWxsVmFsdWUsCisg
ICAgICAgIEAic2hhZG93Q29sb3IiOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJUcmFu
c2Zvcm0iOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJzIjogbnVsbFZhbHVlLAorICAg
ICAgICBAInRyYW5zZm9ybSI6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJ6UG9zaXRpb24iOiBudWxs
VmFsdWUsCisgICAgfTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAg
W2NhTGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDphY3Rp
b25zIGZvcktleTpAImFjdGlvbnMiXV07CisgICAgW2NhTGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rp
b25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVkc0Rpc3BsYXlPbkJvdW5kc0No
YW5nZTpZRVNdOwogCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgMjAw
LCAxMDApXTsKQEAgLTc2LDcgKzc2LDcgQEAgQ0ZUeXBlUmVmIGNyZWF0ZUNvcmVBbmltYXRpb25M
YXllcigpCiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxheWVyIGxheWVyXTsKICAgICAv
LyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW3N1YmxheWVyIHNldFN0eWxlOltO
U0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0aW9ucyBmb3JLZXk6QCJhY3Rpb25z
Il1dOworICAgIFtzdWJsYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMiOiBhY3Rpb25zIH1dOwog
CiAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1KTsKICAg
ICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQppbmRleCBj
MzY4N2MxMDc0ZTA1NzExY2Y4Yjk3NDZiODM1ZTQ2ZjM4YmY5MGIzLi5kZTI5ZDU1MTAyMDQ4NWU4
ZDQ0YjZlNTZkYWYyMzM5NGIxMDg1NTBkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCkBAIC00OCw3ICs0OCw3IEBA
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKQogCiBi
b29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0Vx
dWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbcGxhdGZv
cm1UZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQog
CiBQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OnBsYXRmb3JtVGV4
dE1hcmtlcigpIGNvbnN0IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCBhNGU0MTg5NTUzNDg4ODQ0YzRjZjhjMjNl
MTRkZjg0NzdmYmYzODE5Li45NTFkZGRkMmU3YjM4NmNlNTZhOWYyYTZhOGU2MTJlYzVmNGZlMjVl
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudElPUy5tbQpAQCAtNDEsMjQgKzQxLDkgQEAKIAogdHlwZWRlZiB2b2lkICgqQVhQb3N0
ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlv
biwgdm9pZCogY29udGV4dCk7CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKK0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVudCkKICAgICA6IG1fZWxlbWVu
dChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxl
bWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQotICAgIDogbV9l
bGVtZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQot
Ci17Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci0gICAgW21fZWxlbWVudCByZWxlYXNlXTsK
IH0KIAogQGludGVyZmFjZSBOU09iamVjdCAoVUlBY2Nlc3NpYmlsaXR5SGlkZGVuKQpAQCAtNDYy
LDkgKzQ0Nyw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAgIGlkIHN0YXJ0
VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2VyRm9yTWFya2VyOihpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQgZW5kVGV4dE1hcmtlciA9IFtt
X2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIsIG5pbF07CisgICAgaWQg
c3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJrZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIGVuZFRleHRNYXJrZXIgPSBb
bV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydFRleHRNYXJrZXIs
IGVuZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1l
bnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKQEAgLTQ3Miw3ICs0
NTcsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHN0YXJ0UmFuZ2UsIGJvb2wgZm9yd2FyZCkK
IHsKLSAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRN
YXJrZXJSYW5nZTooaWQpc3RhcnRSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3J3
YXJkOmZvcndhcmRdOworICAgIGlkIG1pc3NwZWxsaW5nUmFuZ2UgPSBbbV9lbGVtZW50IG1pc3Nw
ZWxsaW5nVGV4dE1hcmtlclJhbmdlOnN0YXJ0UmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCkgZm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAtNTAzLDM0ICs0ODgsMzQgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIAog
aW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChp
ZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9
IHJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIHJldHVybiBbbV9lbGVtZW50
IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKIH0KIAogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNB
cnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwg
ZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwog
fQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFy
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiB9CiAKIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0g
ICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7
CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsK
ICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAgICBpZCBvYmogPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmpl
Y3RGb3JUZXh0TWFya2VyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlmIChv
YmopCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iaik7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01NTMsMTkgKzUzOCwxOSBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5
KQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0g
ICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2Vy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgcHJldmlvdXNN
YXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOnRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIo
cHJldmlvdXNNYXJrZXIpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4
dE1hcmtlcikKIHsKLSAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFya2VyRm9y
TWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgbmV4
dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5l
eHRNYXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKW1hcmtlclJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gbWFy
a2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWYgKCF0ZXh0TWFya2Vy
cyB8fCAhW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUVtcHR5SlNTdHJpbmcoKTsKICAgICByZXR1cm4gW1ttX2VsZW1lbnQg
c3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKQEAg
LTY3MCw3ICs2NTUsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TgogewogICAgIE5TQXJyYXkg
KnRleHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkKLSAgICAgICAgdGV4dE1h
cmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxd
OworICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0ZXh0TWFya2Vy
UmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzOnRleHRNYXJrZXJz
IHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4dF1dOwogICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklP
Uy5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQpp
bmRleCA2NTMzOWIzY2JlYjgzZWI1MjRmMThhZmVjYjBlMmNmMjJhMTlkM2RjLi45NjVmYWY1OTk3
YTMyMzhlMTMyOWI1NzI1OWJhOWM1ZDcyODJlNmVlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm0KQEAgLTc2LDcgKzc2LDcgQEAgLSAo
TlNBcnJheSAqKW1hcmtlZFJhbmdlCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAoW3JhbmdlIHN0YXJ0
T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pLCBuaWxdOworICAgIHJldHVybiBAW0AoW3Jh
bmdlIHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pXTsKIH0KIAogLSAodm9pZClp
bnNlcnRUZXh0OihOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMGI4NjdhZGNiOTBjMzEyMjQxNmRj
YzI2NWYzODUzYjYxYjZkNDcxMy4uNzk0MDczOGEzMzkwZWIyNzBhNjA4YmZkMDU5ZTE3MmFmNGI3
OTA5MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0KQEAgLTQ4LDE3ICs0OCwxNyBAQCAtIChKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4pY3JlYXRlSlNTdHJpbmdSZWYKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKIH0KIAotTlNEaWN0aW9uYXJ5
ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0RWxlbWVu
dCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJl
ZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJv
b2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNh
dGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVj
dGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpT
U3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVz
Y2VuZGFudHNPbmx5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICAKICAgICBp
ZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSkKLSAg
ICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OihpZClzdGFydEVsZW1lbnQt
PnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKLSAgICAKKyAg
ICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnN0YXJ0RWxlbWVudC0+cGxh
dGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdOworCiAgICAgW3BhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVj
dGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJd
OwotICAgIAorCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAocmVzdWx0
c0xpbWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOwotICAgIAorCiAgICAgaWYgKHNlYXJj
aEtleSkgewogICAgICAgICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBuaWw7CiAgICAgICAgIGlm
IChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgc2VhcmNoS2V5KSkgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tCmluZGV4IDlkN2ZmNmU5YmU2NDQ0NTM3YTlmZmE1YmE4NjNiZWM0NjdhYWZiYTYuLmQx
Njc4Mjc4ZDg0YjNkZWViYmM1NjJmYmNlNDA3YThhZDU0NTk1NDAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0KQEAgLTI5LDMzICsyOSwyMCBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAKKyNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBOU09iamVjdCAo
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBZGRpdGlvbnMpCiArICh2b2lkKWFjY2Vzc2li
aWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdDsKIEBlbmQKIAot
QGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0tIChKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0KLS0gKEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJldHVybiBhZG9wdChKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc2VsZikpOwotfQotCi1AZW5k
Ci0KIEBpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcgogCiAt
IChpZClpbml0CkBAIC0xMzIsMjcgKzExOSwyMiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtYWtlVmFs
dWVSZWZGb3JWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaWQgdmFsdWUpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VBcnJheVJlZkZvckFycmF5KEpT
Q29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICphcnJheSkKK3N0YXRpYyBKU09iamVjdFJlZiBt
YWtlQXJyYXlSZWZGb3JBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqYXJyYXkp
CiB7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwogICAgIEpTVmFsdWVSZWYg
YXJndW1lbnRzW2NvdW50XTsKLQogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50
OyBpKyspCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG1ha2VWYWx1ZVJlZkZvclZhbHVlKGNvbnRl
eHQsIFthcnJheSBvYmplY3RBdEluZGV4OmldKTsKLQogICAgIHJldHVybiBKU09iamVjdE1ha2VB
cnJheShjb250ZXh0LCBjb3VudCwgYXJndW1lbnRzLCBudWxscHRyKTsKIH0KIAotc3RhdGljIEpT
VmFsdWVSZWYgbWFrZU9iamVjdFJlZkZvckRpY3Rpb25hcnkoSlNDb250ZXh0UmVmIGNvbnRleHQs
IE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKK3N0YXRpYyBKU09iamVjdFJlZiBtYWtlT2JqZWN0
UmVmRm9yRGljdGlvbmFyeShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNEaWN0aW9uYXJ5ICpkaWN0
aW9uYXJ5KQogewogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0
LCBudWxscHRyLCBudWxscHRyKTsKLQotICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRP
YmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIG9iaiwgQk9PTCAqc3RvcCkKLSAg
ICB7Ci0gICAgICAgIGlmIChKU1ZhbHVlUmVmIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFsdWVSZWZG
b3JWYWx1ZShjb250ZXh0LCBvYmopKQorICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRP
YmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIHZhbHVlLCBCT09MKiBzdG9wKSB7
CisgICAgICAgIGlmIChhdXRvIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFsdWVSZWZGb3JWYWx1ZShj
b250ZXh0LCB2YWx1ZSkpCiAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQs
IG9iamVjdCwgW2tleSBjcmVhdGVKU1N0cmluZ1JlZl0uZ2V0KCksIHByb3BlcnR5VmFsdWUsIGtK
U1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CiAgICAgfV07Ci0KICAgICByZXR1cm4g
b2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJNYWMubW0KaW5kZXggMGVmZjkxNjk1MDY0NTg5ZmQ5ZThlZmI1YzYz
NTYxZGExOTk4MDVkNy4uMWJmY2FjN2ZiMzRjZmMwYTc1ZWIyMmEzMTJkYTQ2OTg5YmVhMDU3YiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbQpAQCAtMjgsMTEgKzI4LDExIEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKIAotI2lmIFNVUFBPUlRT
X0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpCiAKIC8v
IE1BUks6IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyCiAKLUFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGlkIG1hcmtlcikK
ICAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIpCiB7CiB9CkBAIC00OCwxNyArNDgsMTcgQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpCiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IG90aGVyKQogewotICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlcigp
IGlzRXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
cmV0dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CiB9CiAKLVBsYXRmb3JtVGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QgCitpZCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIG1fdGV4dE1hcmtl
ci5nZXQoKTsKIH0KIAogLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZQogCi1B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShpZCBtYXJrZXJSYW5nZSkK
ICAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQogewogfQpAQCAtNzQsMTIgKzc0
LDEyIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKCkKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFs
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90aGVyKQogewotICAgIHJldHVybiBbKF9f
YnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNFcXVhbDooX19icmlkZ2UgaWQp
b3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBbcGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
XTsKIH0KIAotUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAoraWQgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKIH0KIAotI2VuZGlmIC8vIFNVUFBPUlRTX0FY
X1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCmluZGV4IGNlNmI2MjMxZTMyZDVlOWYzZWQ4ZjVhN2I2MzQ3NzM0M2Y1MDQxMGYuLjZi
NWI1ZWZiZGI3ODMxZjA4YjA1YWYwNTYxODJjM2JjMzA2NGRjMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwxMSArMjQs
MTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
LmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCi0jaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCisjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2ltcG9ydCAiRHVtcFJlbmRlclRy
ZWUuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CkBA
IC0zNiw3ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCisjaW1wb3J0
IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlPd25z
QXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUgQCJBWE93bnMi
CkBAIC04NiwyNiArODYsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVh
dGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKLSAgICA6IG1fZWxl
bWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCitzdGF0aWMgT3B0
aW9uYWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCosIGlkIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6IGFwQHdl
YmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFz
ZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJldGFpbl07
CisgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBv
dGhlcikKLSAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAgLCBtX25vdGlmaWNh
dGlvbkhhbmRsZXIoMCkKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiwgaWQgZWxlbWVudCkKIHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CisgICAgcmV0dXJuIHsg
eyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoKQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudChpZCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiB7Ci0gICAgLy8gVGhl
IG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0LgotICAg
IEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBbbV9lbGVtZW50IHJlbGVhc2Vd
OwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVj
dCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCkBAIC0xNzksMTYgKzE3MiwxMyBAQCBz
dGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQgYWNjZXNzaWJpbGl0eU9iamVj
dCkKICAgICByZXR1cm4gYXR0cmlidXRlc1N0cmluZzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KEpTQ29udGV4
dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQogewotICAgIEpTVmFs
dWVSZWYgYXJyYXlSZXN1bHQgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCAwKTsK
LSAgICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcnJh
eVJlc3VsdCwgMCk7Ci0gICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNpemUoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQotICAgICAgICBK
U09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaSwgSlNPYmplY3RN
YWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLmdldEpTQ2xhc3MoKSwgbmV3IFQoZWxlbWVudHNbaV0p
KSwgMCk7Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAgYXV0byBhcnJheSA9IEpTT2Jq
ZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVk
IHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJy
YXksIGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS5nZXRKU0NsYXNzKCksIG5l
dyBUKGVsZW1lbnRzW2ldKSksIG51bGxwdHIpOworICAgIHJldHVybiBhcnJheTsKIH0KIAogc3Rh
dGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KE5TU3RyaW5nICphdHRyaWJ1dGUsIE5TU3RyaW5nICp2YWx1ZSkKQEAgLTIwNSwxNyArMTk1LDYg
QEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNvbnZlcnROU0FycmF5VG9WZWN0
b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7Ci0gICAgTlNVSW50ZWdlciBj
b3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7
Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgdi5h
cHBlbmQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pOwotICAgIHJldHVybiB2OwotfQotCiBzdGF0
aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgTlNNdXRhYmxl
U3RyaW5nKiBhbGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwpAQCAt
MzE1LDcgKzI5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlF
bGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1l
bnRzQXR0cmlidXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihsaW5rZWRFbGVtZW50cyk7CisgICAgZWxlbWVudFZl
Y3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua2VkRWxlbWVudHMp
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzIzLDcgKzMwMiw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4mIGVsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZl
cnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua0VsZW1lbnRzKTsK
KyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihs
aW5rRWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzMxLDcg
KzMxMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9y
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAg
ZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9
CiAKQEAgLTMzOSw3ICszMTgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENo
aWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PgogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKLSAgICBlbGVtZW50
VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihj
aGlsZHJlbik7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4oY2hpbGRyZW4pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAt
NTI4LDggKzUwNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKIHsKLSAgICBOU1N0cmlu
ZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9lbGVtZW50KTsKLSAgICByZXR1
cm4gW2F0dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIHJldHVybiBbYXR0cmlidXRl
c09mRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTU0OCw3ICs1MjYsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoVmVjdG9yPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+JiBlbGVtZW50cwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlk
IHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0gY29udmVydE5T
QXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7CisgICAgICAgIGVs
ZW1lbnRzID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC01NTcsNyArNTM1LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYgZWxlbWUKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBlbGVt
ZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTY2LDcgKzU0NCw3IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUsCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5n
V2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnROU0FycmF5VG9W
ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBlbGVtZW50cyA9
IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNjQzLDcgKzYyMSw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFt
ZXMoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nICpyb2xl
ID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3Ry
aW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0
KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlIiwg
cm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjUzLDcgKzYzMSw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xl
KCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJy
b2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogcm9s
ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBO
U1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVt
ZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
U3Vicm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNjYzLDcg
KzY0MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJp
YnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4g
Y29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2NyaXB0aW9uIiwgcm9sZSk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjczLDcgKzY1MSw3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3Jp
cHRpb24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUiXSwgbV9lbGVt
ZW50KTsKKyAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBUm9sZSJd
LCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbY29tcHV0ZWRSb2xlU3RyaW5nIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC02ODMs
NyArNjYxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0s
IG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxl
QXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogCkBAIC02OTMsNyArNjcxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1
cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24iLCBkZXNjcmlw
dGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MDMsNyArNjgxLDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0
aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpv
cmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdLCBt
X2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MTMsNyArNjkxLDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1
ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRl
c2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50Lmdl
dCgpKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCkBAIC03MjQsNyArNzAyLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0s
IG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1fZWxl
bWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJB
WExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApA
QCAtNzM0LDcgKzcxMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1
dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhl
bHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKQEAgLTEwMjYsNyArMTAwNCw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAog
aW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJh
bWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpp
bmRleF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBm
b3JQYXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1ZSBpbnRWYWx1
ZV07IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEwMzcsNyArMTAxNSw3IEBAIGlu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShp
bnQgbGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJh
bmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBu
dW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1cm4gW05TU3RyaW5nRnJvbVJh
bmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKQEAgLTExNjYsNyArMTE0NCw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRSZWYgY29udGV4
dCwKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBzZWFyY2hUZXh0
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIHNlYXJjaFN0cmluZ3Ms
IHN0YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdpdGhDcml0ZXJpYSIgZm9yUGFy
YW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbcmVzdWx0IGlzS2luZE9m
Q2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09i
amVjdEFycmF5PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KGNvbnRleHQsIGNvbnZlcnRO
U0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4ocmVzdWx0KSk7Cisg
ICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheShjb250ZXh0LCBtYWtlVmVj
dG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KHJlc3VsdCkpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNzcsNyArMTE1NSw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBwS2l0
Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNvbHVt
bkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBjb2x1bW5IZWFkZXJzVmVjdG9y
ID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihjb2x1bW5I
ZWFkZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9IG1ha2VWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uSGVhZGVyc0FycmF5KTsKICAgICByZXR1cm4g
ZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0b3IpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTExODgsNyArMTE2Niw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJz
KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dIZWFk
ZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93
SGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gcm93SGVhZGVyc1ZlY3RvciA9IGNvbnZlcnRO
U0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4ocm93SGVhZGVyc0FycmF5KTsK
KyAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhyb3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBA
IC0xMTk5LDcgKzExNzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07Ci0g
ICAgYXV0byBjb2x1bW5zVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pihjb2x1bW5zQXJyYXkpOworICAgIGF1dG8gY29sdW1uc1ZlY3RvciA9IG1h
a2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uc0FycmF5KTsKICAgICByZXR1
cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKQEAgLTEyMTAsNyArMTE4OCw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzQXJyYXkgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHJvd3NBcnJheSk7CisgICAgYXV0byByb3dzVmVjdG9yID0g
bWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihyb3dzQXJyYXkpOwogICAgIHJldHVy
biBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIApAQCAtMTIyMSw3ICsxMTk5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2VsbHNBcnJheSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhWaXNpYmxlQ2VsbHMi
XTsKLSAgICBhdXRvIGNlbGxzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKKyAgICBhdXRvIGNlbGxzVmVjdG9yID0gbWFr
ZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKICAgICByZXR1cm4g
ZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCkBAIC0xMzAyLDcgKzEyODAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiAKIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKLSAgICBOU0FycmF5ICpjb2xSb3dBcnJh
eSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25l
ZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10sIG5pbF07Cisg
ICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBAW0AoY29sKSwgQChyb3cpXTsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRlcjpjb2xSb3dB
cnJheV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKQEAgLTE0MjgsNyArMTQwNiw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQogdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJh
eSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxhdGZvcm1VSUVs
ZW1lbnQoKV07CisgICAgTlNBcnJheSogYXJyYXkgPSBAW2VsZW1lbnQtPnBsYXRmb3JtVUlFbGVt
ZW50KCldOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFycmF5IGZvckF0
dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTQ0MCw3ICsxNDE4LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBp
bmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQucGxhdGZvcm1VSUVsZW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dDplbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIE5TQXJyYXkgKmFycmF5ID0gQFtl
bGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChzZWxlY3RlZENoaWxkcmVuKQog
ICAgICAgICBhcnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJv
bUFycmF5OmFycmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJy
YXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVd
OwpAQCAtMTY2Niw4ICsxNjQ0LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVTZWxlY3Rpb24oKQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4
dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJr
ZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
Njc3LDEwICsxNjU1LDEwIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcGFyYW1ldGVycyA9
IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotICAgIFtwYXJhbWV0ZXJzIHNldE9i
amVjdDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yS2V5
OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJhbWV0ZXJzIHNldE9iamVjdDpz
dGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtl
clJhbmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJlY3Rpb24iXTsKICAgICBpZCB0
ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJzXTsK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBl
UmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2OTAsNyArMTY2OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxl
bWVudChBCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRN
YXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRmb3JtVUlF
bGVtZW50KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2Jy
aWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MDAsNyArMTY3OCw3IEBAIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0
ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBlUmVm
KXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzQxLDcgKzE3MTksNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIGludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNO
dW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBp
ZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgTlNOdW1iZXIqIGxlbmd0
aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0
aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJr
ZXJSYW5nZSgpXTsKICAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNzUxLDcgKzE3MjksNyBAQCBpbnQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKV07CiAgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0
cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xNzY2LDcgKzE3
NDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBpbmRleE51bWJl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJbmRleEZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
Om1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbaW5kZXhOdW1iZXIg
aW50VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE3NzcsNyAr
MTc1NSw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZvclBhcmFtZXRlcjpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3ODYsNyArMTc2NCw3IEBA
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
VGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNW
YWxpZCIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlkIiBmb3JQYXJhbWV0ZXI6
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbdmFsaWROdW1i
ZXIgYm9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTE3OTYsOCAr
MTc3NCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNN
YXJrZXIpOworICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODA2LDggKzE3ODQsOCBA
QCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91
c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOworICAgIGlkIG5leHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0TWFya2Vy
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xODE2LDcgKzE3OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dAogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRl
cjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgcmV0dXJuIFt0
ZXh0U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCkBAIC0xODQ2LDcgKzE4MjQsNyBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7Ci0gICAg
aWQgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0
dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIGlkIHN0cmlu
ZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVk
U3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6bWFya2VyUmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVybiBjcmVhdGVKU1N0cmluZ1JlZihzdHJp
bmcpOwogfQogCkBAIC0xODU0LDkgKzE4MzIsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQog
ewogICAgIGlkIHBhcmFtZXRlciA9IG5pbDsKICAgICBpZiAoaW5jbHVkZVNwZWxsQ2hlY2spCi0g
ICAgICAgIHBhcmFtZXRlciA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aW5jbHVkZVNwZWxsQ2hlY2tdLCBAIkFYU3Bl
bGxDaGVjayIsIChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKSwgQCJBWFRleHRNYXJrZXJSYW5nZSIsIG5pbF07CisgICAgICAgIHBhcmFtZXRlciA9IEB7
IEAiQVhTcGVsbENoZWNrIjogaW5jbHVkZVNwZWxsQ2hlY2sgPyBAWUVTIDogQE5PLCBAIkFYVGV4
dE1hcmtlclJhbmdlIjogbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgfTsK
ICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlciA9IChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVyID0gbWFya2VyUmFu
Z2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgc3RyaW5nID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CiAgICAgcmV0
dXJuIGNyZWF0ZUpTU3RyaW5nUmVmKHN0cmluZyk7CiB9CkBAIC0xODY0LDkgKzE4NDIsOSBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
ZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1h
cmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiB0ZXh0
TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9fYnJpZGdlIGlkKXN0YXJ0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlkKWVuZE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBAW3N0YXJ0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJz
IiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4
NzUsOCArMTg1Myw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBCiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODg1LDgg
KzE4NjMsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZwogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZv
clBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCld
OwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVm
KXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9y
UGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg5Niw3ICsxODc0LDcgQEAg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1h
cmtlckZvckJvdW5kcyhpbnQgeCwgaW4KIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigo
X19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTA2LDcgKzE4ODQsNyBAQCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3Vu
ZHMoaW50IHgsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZU
eXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0
ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xOTE2LDcgKzE4OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZvclBvc2l0
aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtlUG9pbnQoeCwg
eSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlw
ZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4
dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTkyNSw3ICsxOTAzLDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdWlFbGVtZW50ID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJr
ZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1
aUVsZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE5MzYsNyAr
MTkxNCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
aWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhTdGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIo
KF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0Niw3ICsxOTI0LDcgQEAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1h
cmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE5NTUsNyArMTkzMyw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSog
bWFya2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
U2V0VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yQXR0cmli
dXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTY0
LDggKzE5NDIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlz
aWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcgogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlZnRXb3JkVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRl
eHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTc0LDggKzE5NTIsOCBAQCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3Jk
VGV4dE1hcmtlclJhbmdlRm9yVAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29yZFRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xOTg0LDggKzE5NjIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJrZXJSYW5n
ZUZvcgogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJl
dmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBp
ZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0g
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJl
dmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIocHJldmlvdXNUZXh0
TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xOTk0LDggKzE5NzIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZQogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0VGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0V29yZEVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4
dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIobmV4dFRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMDQsOCArMTk4Miw4IEBAIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwot
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIwMTQsOCArMTk5Miw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yCiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFn
cmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJl
dmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0g
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJl
dmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNQYXJhZ3JhcGhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihwcmV2aW91
c1RleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTIwMjQsOCArMjAwMiw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2Vy
CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFy
YWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4
dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9f
YnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtl
cik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBm
b3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjAzNCw4ICsyMDEy
LDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4
dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXgKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2Vy
UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VudGVu
Y2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0NCw4ICsyMDIyLDggQEAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJr
ZXJSYW5nZUZvclQKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIGlkIHByZXZpb3VzVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRn
ZSBDRlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKHByZXZpb3VzVGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1NCw4ICsyMDMyLDggQEAgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0
YXJ0VGV4dE1hcmtlckYKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZilu
ZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5leHRUZXh0TWFya2VyKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMGI3NDQ0OTUyMWMw
NjI4ZWE2NzY1YjQzZDBmYmM2N2VjMzYzZGIyZS4uOTkwNmE5ZjdjZjMzODk0ZDNlMTVlMzlkMmFl
MTA2NjdhZTlkYjE3NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtOTIsOSArOTIsOSBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8Z2V0b3B0Lmg+CisjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1w
b3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgc3RhdGljIHZv
aWQgYWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29uc3QgY2hhciogZXhlY3V0YWJs
ZVBhdGgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNTdHJpbmcgKnB3ZCA9
IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZXhlY3V0YWJsZVBhdGhdIHN0cmluZ0J5
RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07Ci0gICAgW1dlYlBsdWdpbkRhdGFiYXNlIHNldEFk
ZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cHdkXV07Cisg
ICAgW1dlYlBsdWdpbkRhdGFiYXNlIHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpAW3B3ZF1d
OwogICAgIFtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0YWJhc2VdIHJlZnJlc2hdOwogI2Vu
ZGlmCiB9CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbgogCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBnZW5lcmFsIHBhc3RlYm9hcmQKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2Fy
ZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1N0cmluZ1Bib2FyZFR5
cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRl
Y2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCiAg
ICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0Zv
clRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0cigpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJv
YXJkLm1tCmluZGV4IDExOWMzZGI5ZDM0ZmI2NjY3NzE2YzA5NTI2ZjhjOGQ5ZjI0NTYyYjUuLmY5
MzFjNmFmNTEzNDE0NDIzNGYwYjY3OWU1NDg3YjlmOGVmMGM0ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQpAQCAtODYs
NyArODYsNyBAQCArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiAvLyBvZiB0aGUgdXN1
YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3VuZAogLSAoTlNJbnRlZ2VyKWRl
Y2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiB7Ci0gICAgcmV0
dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3du
ZXI6bmV3T3duZXJdOworICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6QFt0eXBlXSBvd25l
cjpuZXdPd25lcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggZGM5Mjg3ODE3YWUyYWUzOWU3NmI1NmJm
YzZjNjNhZTExYzVkNDI5NS4uMzZhNDA0YjA1OWE0NmZjYmY2YWUyZmQ3MWI3MzY3ODM1ZDMzOWI5
YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlczoo
V2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2VydChbanNGaWxlUGF0aHMgaXNL
aW5kT2ZDbGFzczpbV2ViU2NyaXB0T2JqZWN0IGNsYXNzXV0pOwogCiAgICAgTlNQYXN0ZWJvYXJk
ICpwYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAg
W3Bib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVz
UGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbcGJvYXJkIGRlY2xhcmVUeXBlczpAW05TRmls
ZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKIAogICAgIE5TVVJMICpjdXJyZW50VGVzdFVS
TCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltbbWFpbkZyYW1lIHdlYlZpZXddIG1haW5GcmFtZVVS
TF1dOwogCkBAIC0xNDkzLDggKzE0OTMsOCBAQCAtICh2b2lkKXNlbnRUb3VjaEV2ZW50T2ZUeXBl
OihXZWJFdmVudFR5cGUpdHlwZQogCiAgICAgZm9yIChTeW50aGV0aWNUb3VjaCAqY3VyclRvdWNo
IGluIHRvdWNoZXMpIHsKICAgICAgICAgW3RvdWNoTG9jYXRpb25zIGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhDR1BvaW50OmN1cnJUb3VjaC5sb2NhdGlvbl1dOwotICAgICAgICBbdG91Y2hJ
ZGVudGlmaWVycyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpjdXJy
VG91Y2guaWRlbnRpZmllcl1dOwotICAgICAgICBbdG91Y2hQaGFzZXMgYWRkT2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y3VyclRvdWNoLnBoYXNlXV07CisgICAgICAgIFt0
b3VjaElkZW50aWZpZXJzIGFkZE9iamVjdDpAKGN1cnJUb3VjaC5pZGVudGlmaWVyKV07CisgICAg
ICAgIFt0b3VjaFBoYXNlcyBhZGRPYmplY3Q6QChjdXJyVG91Y2gucGhhc2UpXTsKIAogICAgICAg
ICBpZiAoKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VFbmRlZCkgfHwgKGN1cnJUb3Vj
aC5waGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpKQogICAgICAgICAgICAgY29udGludWU7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRp
b25Qcm92aWRlci5tbQppbmRleCBkOWY1MGQzMDc2NTFjYTI2YzQ1YjQ3MzIwNTYxNzlkM2NjZGQx
NzcyLi4yNDI4NGYwZTA2NzljODM1ZmFlNTFhOTc0ZWQ1NGUyMWY1MmQ4NjQ3IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIubW0KQEAgLTc1LDcgKzc1LDcgQEAgLSAodm9pZCljYW5jZWxOb3RpZmljYXRpb246KFdlYk5v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0g
W25vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF07CiAgICAgQVNTRVJUKF9ub3RpZmljYXRpb25z
LmNvbnRhaW5zKG5vdGlmaWNhdGlvbklEKSk7CiAKLSAgICBbKF9fYnJpZGdlIFdlYlZpZXcgKilf
bm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmljYXRpb25zRGlk
Q2xvc2U6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWdu
ZWRMb25nTG9uZzpub3RpZmljYXRpb25JRF1dXTsKKyAgICBbKF9fYnJpZGdlIFdlYlZpZXcgKilf
bm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmljYXRpb25zRGlk
Q2xvc2U6QFtbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6bm90aWZpY2F0aW9u
SURdXV07CiB9CiAKIC0gKHZvaWQpbm90aWZpY2F0aW9uRGVzdHJveWVkOihXZWJOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9P
YmpDQ29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVy
Lm0KaW5kZXggMGIxMjFlOTAxYmE0NTFmZDk3MWI2NDExOWY0MDJkNzZiODUxMGY2Zi4uYzFhMTBh
N2I3NTM2MTBiYzI4YmM4ZjdhY2UyOTEyMWU2NDU2MmEyZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL09iakNDb250cm9sbGVyLm0KQEAgLTE0NiwyNSArMTQ2LDIwIEBAIC0gKGlkKW9iamVj
dE9mQ2xhc3M6KE5TU3RyaW5nICopYUNsYXNzCiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3Ry
aW5nOkAiTlNDRkJvb2xlYW4iXSkKICAgICAgICAgcmV0dXJuIEBZRVM7CiAgICAgaWYgKFthQ2xh
c3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNDRk51bWJlciJdKQotICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgIHJldHVybiBAKDEpOwogICAgIGlmIChbYUNs
YXNzIGlzRXF1YWxUb1N0cmluZzpAIk5TQ0ZTdHJpbmciXSkKICAgICAgICAgcmV0dXJuIEAiIjsK
ICAgICBpZiAoW2FDbGFzcyBpc0VxdWFsVG9TdHJpbmc6QCJXZWJTY3JpcHRPYmplY3QiXSkKICAg
ICAgICAgcmV0dXJuIHNlbGY7CiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNB
cnJheSJdKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4g
QFtdOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAoTlNBcnJheSAqKWFycmF5T2ZTdHJpbmcK
IHsKLSAgICBOU1N0cmluZyAqc3RyaW5nc1szXTsKLSAgICBzdHJpbmdzWzBdID0gQCJvbmUiOwot
ICAgIHN0cmluZ3NbMV0gPSBAInR3byI7Ci0gICAgc3RyaW5nc1syXSA9IEAidGhyZWUiOwotICAg
IE5TQXJyYXkgKmFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdHJpbmdzIGNvdW50
OjNdOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gQFsgQCJvbmUiLCBAInR3byIsIEAi
dGhyZWUiIF07CiB9CiAKIC0gKEJPT0wpaWRlbnRpdHlJc0VxdWFsOihXZWJTY3JpcHRPYmplY3Qg
KilhIDooV2ViU2NyaXB0T2JqZWN0ICopYgpAQCAtMjE3LDkgKzIxMiwxMSBAQCAtIChCT09MKXRl
c3RXcmFwcGVyUm91bmRUcmlwcGluZzooV2ViU2NyaXB0T2JqZWN0ICopd2ViU2NyaXB0T2JqZWN0
CiAgICAgaWYgKFtbd2ViU2NyaXB0T2JqZWN0IGV2YWx1YXRlV2ViU2NyaXB0OkAiKHsgfSkiXSBj
bGFzc10gIT0gW3dlYlNjcmlwdE9iamVjdCBjbGFzc10pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFt3ZWJTY3JpcHRPYmplY3Qgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
NjY2XSBmb3JLZXk6QCJrZXkiXTsKLSAgICBpZiAoIVtbd2ViU2NyaXB0T2JqZWN0IHZhbHVlRm9y
S2V5OkAia2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fAotICAgICAgICAh
W1t3ZWJTY3JpcHRPYmplY3QgdmFsdWVGb3JLZXk6QCJrZXkiXSBpc0VxdWFsVG9OdW1iZXI6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6NjY2XV0pCisgICAgW3dlYlNjcmlwdE9iamVjdCBzZXRWYWx1
ZTpAKDY2NikgZm9yS2V5OkAia2V5Il07CisgICAgaWQgdmFsdWUgPSBbd2ViU2NyaXB0T2JqZWN0
IHZhbHVlRm9yS2V5OkAia2V5Il07CisgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpOU051
bWJlci5jbGFzc10pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVt2YWx1ZSBpc0Vx
dWFsVG9OdW1iZXI6QCg2NjYpXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgW3dlYlNj
cmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6QCJrZXkiXTsKQEAgLTI3Miw3ICsyNjksNyBA
QCAtICh2b2lkKXN0b3JlV2ViU2NyaXB0T2JqZWN0OihXZWJTY3JpcHRPYmplY3QgKil3ZWJTY3Jp
cHRPYmplY3QKIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheQogewotICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheU9m
T2JqZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCAw
MDY1OTU2YzgxZGQ3MTM1ZGUwMjdmNDlhMWY1M2JlYzY4MzYwNzJhLi45MzEyZDhiOGE5NzZmYTVh
MmIxNGRhYTRlMzM2MDRlNDI0YmEwNTMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQpAQCAtMTczLDE5ICsxNzMsMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVh
ckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogICAgIFtvcmlnaW4g
cmVsZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKK3N0YXRpYyBKU09iamVjdFJlZiBvcmlnaW5zQXJy
YXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpvcmlnaW5zKQogewotICAgIE5T
VUludGVnZXIgY291bnQgPSBbb3JpZ2lucyBjb3VudF07Ci0KLSAgICBKU1ZhbHVlUmVmIGFycmF5
UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgMCwgMCk7Ci0gICAgSlNPYmpl
Y3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJyYXlSZXN1bHQsIDAp
OworICAgIGF1dG8gY291bnQgPSBbb3JpZ2lucyBjb3VudF07CisgICAgYXV0byBhcnJheSA9IEpT
T2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgTlNTdHJpbmcgKm9y
aWdpbiA9IFtbb3JpZ2lucyBvYmplY3RBdEluZGV4OmldIGRhdGFiYXNlSWRlbnRpZmllcl07CiAg
ICAgICAgIGF1dG8gb3JpZ2luSlMgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpb3JpZ2luKSk7Ci0gICAgICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0
LCBvcmlnaW5KUy5nZXQoKSksIDApOworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRl
eChjb250ZXh0LCBhcnJheSwgaSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgb3JpZ2luSlMu
Z2V0KCkpLCAwKTsKICAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAgcmV0dXJu
IGFycmF5OwogfQogCiBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRoQXBwbGljYXRp
b25DYWNoZShKU0NvbnRleHRSZWYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tCmluZGV4IDFjYmJkNzFkNGFjMWJhYWU3MWI0
ZjljNDc1Y2FiMjE3YmEyM2MyNDUuLjM1ZWFlOGYwNTNkODc5YWJhNTcxZmI5YjM5ZDAzNGYyZDg2
ODRjNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250
cm9sbGVyTWFjLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRy
b2xsZXJNYWMubQpAQCAtMzg3LDcgKzM4Nyw3IEBAIC0gKE5TQXJyYXkgKiltYXJrZWRSYW5nZQog
CiAgICAgaWYgKHRleHRJbnB1dCkgewogICAgICAgICBOU1JhbmdlIHJhbmdlID0gW3RleHRJbnB1
dCBtYXJrZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRpb25dLCBbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07CisgICAgICAgIHJl
dHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwogICAgIH0KIAogICAg
IHJldHVybiBuaWw7CkBAIC0zOTksNyArMzk5LDcgQEAgLSAoTlNBcnJheSAqKXNlbGVjdGVkUmFu
Z2UKIAogICAgIGlmICh0ZXh0SW5wdXQpIHsKICAgICAgICAgTlNSYW5nZSByYW5nZSA9IFt0ZXh0
SW5wdXQgc2VsZWN0ZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRpb25dLCBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07CisgICAg
ICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwogICAgIH0K
IAogICAgIHJldHVybiBuaWw7CkBAIC00MTUsMTIgKzQxNSw3IEBAIC0gKE5TQXJyYXkgKilmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCiAgICAg
ICAgICAgICByZWN0Lm9yaWdpbiA9IFtbd2ViVmlldyB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jh
c2U6cmVjdC5vcmlnaW5dOwogICAgICAgICAgICAgcmVjdCA9IFt3ZWJWaWV3IGNvbnZlcnRSZWN0
OnJlY3QgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
cmVjdC5vcmlnaW4ueF0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnJl
Y3Qub3JpZ2luLnldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpyZWN0
LnNpemUud2lkdGhdLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpyZWN0
LnNpemUuaGVpZ2h0XSwKLSAgICAgICAgICAgIG5pbF07CisgICAgICAgIHJldHVybiBAWyBAKHJl
Y3Qub3JpZ2luLngpLCBAKHJlY3Qub3JpZ2luLnkpLCBAKHJlY3Quc2l6ZS53aWR0aCksIEAocmVj
dC5zaXplLmhlaWdodCkgXTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpAQCAtNDg0LDcgKzQ3
OSw3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVkU3RyaW5nV2l0aFBy
aW1hcnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nCiAgICAgaWYgKCFzdWJTdHJpbmdXaXRoQWx0
ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMq
IGFsdGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0
aFByaW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0aXZlU3RyaW5n
czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07Cisg
ICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVjdCA9IFtbW05TVGV4dEFsdGVy
bmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dpdGhBbHRlcm5h
dGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6QFthbHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNlXTsKICAg
ICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC01Mzgs
NyArNTMzLDcgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKilldmVudEFy
cmF5IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGUKIAogICAgIFttb2RpZmllcnMgcmVs
ZWFzZV07CiAgICAgCi0gICAgaWQgcmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2Vi
U2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOmlucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbSwgbmlsXV07CisgICAgaWQgcmVzdWx0
ID0gW2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFy
Z3VtZW50czpAW2lucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbV1dOwogICAgIGlmICghW3Jl
c3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJvb2xWYWx1ZSldIHx8ICFbcmVzdWx0
IGJvb2xWYWx1ZV0pIHsKICAgICAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVk
LXNlbGVjdG9yIikKICAgICAgICAgW3NlbmRlciBkb0NvbW1hbmRCeVNlbGVjdG9yOkBzZWxlY3Rv
cihub29wOildOyAvLyBBcHBLaXQgc2VuZHMgbm9vcDogaWYgdGhlIGltZSBkb2VzIG5vdCBoYW5k
bGUgYW4gZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlw
dENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tCmluZGV4IDBlZWFhMDhjYTIyM2JlNDk2Njc2MDRkOWU5ZjY1MTlkYWZlN2My
YzYuLmVlMzIzNTkyMTUxM2MzZTllMGExMTVjZDBhM2NmOTBjZjZlNzI3NDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtMTY0
LDcgKzE2NCw3IEBAIE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cGxhdGZv
cm1VbmRvTWFuYWdlcigpIGNvbnN0CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRl
eHQoSlNTdHJpbmdSZWYgdGV4dCkKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBO
U1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSBvd25l
cjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVib2FyZFR5cGVT
dHJpbmddIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnRleHQtPnN0cmlu
ZygpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAppbmRl
eCA3OTdjNzBkYzRhNzMzMGQxNzAzYjc0MThmZWM4M2UzZDcxZmZhODAxLi5iNzM4NDBlZTA1MGVh
OWI5NjM3MDBlMjZlMzJlMzQ5NDY4OGU1Njk0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC01OCwxNSArNTgs
NiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRm
b3JtVUlFbGVtZW50IGVsZW1lbnQpCiB7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIp
Ci0gICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotewotfQotCi1BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci19Ci0KIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVs
ZW1lbnQpCiB7CiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlQ29tcGFyYWJsZT4gY29tcGFyYWJsZSA9
IGNvbXBhcmFibGVPYmplY3QobV9lbGVtZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQppbmRleCA2Mjlk
MWRmY2YyMzdiN2U2ZDk0OGU1YWQyNzBjNmViMTU5MWZjNGE5Li43YTFkM2Y3NjExNTg3NDAyYjBk
MTRhZDc2NGZiZGRlODNlMzg3MTYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0yNDIsMTIgKzI0MiwxMCBA
QCAtICh2b2lkKXNldFJlc3VsdHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlc3VsdHNPYmpl
Y3QgaW5Db250ZXh0OihKU0NvbnRleHRSZQogICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09i
amVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBkZXRhaWxzVmFsdWUsIG51bGxwdHIpOwog
ICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09iamVjdFByb3BlcnRpZXMgPSBKU09iamVjdENv
cHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIGRldGFpbHNPYmplY3QpOwogICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGRldGFpbEluZGV4ID0gMDsgZGV0YWlsSW5kZXggPCBKU1Byb3BlcnR5TmFt
ZUFycmF5R2V0Q291bnQoZGV0YWlsc09iamVjdFByb3BlcnRpZXMpOyArK2RldGFpbEluZGV4KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBkZXRhaWxP
YmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5k
ZXgoY29udGV4dCwgZGV0YWlsc09iamVjdCwgZGV0YWlsSW5kZXgsIG51bGxwdHIpLCBudWxscHRy
KTsKICAgICAgICAgICAgICAgICAgICAgbG9uZyBmcm9tID0gbHJvdW5kbChKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBkZXRhaWxPYmplY3QsIGZy
b21Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGxvbmcgdG8gPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGRldGFpbE9iamVjdCwgdG9Qcm9wZXJ0eU5hbWUuZ2V0KCks
IG51bGxwdHIpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRhaWwgc2V0T2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIHRvIC0gZnJvbSld
IGZvcktleTpOU0dyYW1tYXJSYW5nZV07Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRhaWxzIGFk
ZE9iamVjdDpkZXRhaWwuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICBbZGV0YWlscyBhZGRP
YmplY3Q6QHsgTlNHcmFtbWFyUmFuZ2U6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJh
bmdlKGZyb20sIHRvIC0gZnJvbSldIH1dOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxzT2JqZWN0UHJvcGVydGllcyk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCmlu
ZGV4IDQyMzczYzQ3YjY1YzdlZjUwZDg0YjQ5YjdiMGQ2NzNmN2M2MjQ0M2EuLjk5MjU4ZDVjZDI1
YTdjNTA2NzJjMTQ2MmE0MzdlNjg5NGQxNjVhNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLQ29u
dGVudFJ1bGVMaXN0QWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZE5vdGlmaWNhdGlv
bjsKQEAgLTU4LDE1ICs1OSw2IEBAIHN0cnVjdCBOb3RpZmljYXRpb24gewogICAgIH0KIH07CiAK
LXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1ZlY3RvcihOU0FycmF5PE5TU3RyaW5nICo+ICphcnJh
eSkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnN0cmluZyBpbiBh
cnJheSkKLSAgICAgICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIHJldHVybiB2ZWN0b3I7
Ci19Ci0KIHN0YXRpYyBWZWN0b3I8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25MaXN0Owogc3Rh
dGljIFJldGFpblB0cjxOU1VSTD4gbm90aWZpY2F0aW9uVVJMOwogc3RhdGljIFJldGFpblB0cjxO
U1N0cmluZz4gbm90aWZpY2F0aW9uSWRlbnRpZmllcjsKQEAgLTg4LDcgKzgwLDcgQEAgLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBVUkw6KE5TVVJMICopdXJsIGNvbnRlbnRS
dWxlTGlzdElkZW50aWZpZXIKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIHBl
cmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uICopYWN0aW9uIGZvclVSTDoo
TlNVUkwgKil1cmwKIHsKLSAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50aWZpZXIs
IHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9uLmJsb2Nr
ZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIHRvVmVjdG9yKGFjdGlvbi5ub3RpZmljYXRp
b25zKSB9KTsKKyAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50aWZpZXIsIHVybC5h
YnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9uLmJsb2NrZWRDb29r
aWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIG1ha2VWZWN0b3I8U3RyaW5nPihhY3Rpb24ubm90aWZp
Y2F0aW9ucykgfSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBkYjAwODg3N2U3NTdjYTYyNWFiN2U3MjdmNWE5MDRl
YmFjYTdkYWRlLi42OGJlODFiMWI5MzUzY2IwMTFlMTY4YzFkYzRjYTg0ODllZTg5NjhkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmREb21haW5zOl4oTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5ICpkb21haW5zVG9Db21wYXJl
ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwg
QCJiYXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0
ZXN0ZG9tYWluMSIsICBAIndlYmtpdC5vcmciLCBuaWxdOworICAgICAgICBOU0FycmF5ICpkb21h
aW5zVG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJiYXIuY29tIiwg
QCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0ZG9tYWluMSIs
ICBAIndlYmtpdC5vcmciXTsKIAogICAgICAgICBOU0FycmF5ICpzb3J0ZWREb21haW5zID0gW2Rv
bWFpbnMgc29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOkBzZWxlY3RvcihjYXNlSW5zZW5zaXRpdmVD
b21wYXJlOildOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Bhc3RlSW1hZ2UubW0KaW5kZXggM2EyZmM5MGYwYzJiY2VmZDEzNzllNjE4YTgwZWE3NTdl
NjU5NGI5NS4uOTg0ODlmMGI4NjExZWVhMDA1OGJlNTkwNGMyNTZiNzFiNmM4ZjgyYyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5t
bQpAQCAtMzksMTMgKzM5LDEzIEBACiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUltYWdl
RGF0YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRhICpkYXRhKQogewotICAgIFtb
TlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW3R5cGVdIG93bmVyOm5pbF07CiAgICAgW1tOU1Bh
c3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YSBmb3JUeXBlOnR5cGVdOwog
fQogI2Vsc2UKIHZvaWQgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnR5cGUs
IE5TRGF0YSAqZGF0YSkKIHsKLSAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
c2V0SXRlbXM6QFtbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRhdGEgZm9yS2V5
OnR5cGVdXV07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0ZW1z
OkBbQHsgdHlwZTogZGF0YSB9XV07CiB9CiAjZW5kaWYKIApAQCAtMTU1LDggKzE1NSw4IEBAIFRF
U1QoUGFzdGVJbWFnZSwgUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJQYXN0aW5nSW1hZ2UpCiAjaWYgUExB
VEZPUk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3RlYm9hcmQoaWQgb2JqZWN0KQog
ewotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsK
LSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gd3JpdGVPYmplY3RzOltOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6b2JqZWN0LCBuaWxdXTsKKyAgICBbW05TUGFzdGVib2FyZCBn
ZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNGaWxlbmFtZXNQYm9hcmRUeXBlXSBv
d25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB3cml0ZU9i
amVjdHM6QFtvYmplY3RdXTsKIH0KIAogVEVTVChQYXN0ZUltYWdlLCBQYXN0ZUdJRkZpbGUpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2Vi
QXJjaGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVX
ZWJBcmNoaXZlLm1tCmluZGV4IGI3ODVmNWM0ZjJiZDcwMmEzMjViMzcwNTA0NmJlZTU5ODI2MzEx
OGIuLmNjN2Y0NDM4YzgyZGY5NGIyOTBkNzc3YTZiYzZhZWI5MjdjNzdkODggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNo
aXZlLm1tCkBAIC0yNDksNyArMjQ5LDcgQEAgVEVTVChQYXN0ZVdlYkFyY2hpdmUsIFdlYkFyY2hp
dmVUeXBlSWRlbnRpZmllcikKICAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbV2ViQXJjaGl2
ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291cmNlLmdldCgpIHN1YnJlc291
cmNlczpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsKIAogICAgIE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwotICAgIFtwYXN0ZWJv
YXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgZGVj
bGFyZVR5cGVzOkBbKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVy
Om5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2ZSBkYXRhXSBmb3JUeXBlOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIAogICAgIGF1dG8gd2ViVmll
dyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50
Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDk0MTJhNGY1NmZjNmQ0Nzk3MWE0YWViY2VmNTlj
OTRkYTViNjdmNDQuLjgxYjZmZDgzYmI0ZjFkMjgwMzk4N2NmNjUyNDUyY2Q0NjczNmE4MjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC04MTcsNyArODE3LDcgQEAgVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQogCiBURVNU
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogewotICAg
IFdLVXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBbW1tXS1VzZXJTY3JpcHQgYWxs
b2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbicpIiBp
bmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9y
TWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0FycmF5IGFycmF5XSBsZWdhY3lC
bGFja2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQgZGVmYXVs
dENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZRVNdIGF1dG9yZWxl
YXNlXTsKKyAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZpY2F0aW9uID0gW1tbV0tVc2Vy
U2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBub3RpZmlj
YXRpb24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVu
dFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10gbGVnYWN5Qmxh
Y2tsaXN0OkBbXSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9z
Y3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRlZmF1bHRDbGllbnRXb3JsZF0g
ZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFzZV07CiAgICAgV0tV
c2VyU2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhT
b3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmplY3Rpb25UaW1lOldL
VXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFtZU9ubHk6WUVT
XSBhdXRvcmVsZWFzZV07CiAKICAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9IFtbVGVzdFdL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDk5NzUw
NWJjNDBkYzA4N2EwNWU5M2M4Njk4ZTkwOGM0YjlkZGEzYzguLmM0NGYwZGFiZGZlMThhYWIwNTQ4
Y2M5MmM3MzIzNzM1MTIwODBkN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTcxNiw3ICsx
NzE2LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgVGFyZ2V0ZWRQcmV2aWV3c1doZW5E
cm9wcGluZ0ltYWdlcykKICAgICBbc2Vjb25kSXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiYXBwbGUi
XTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpEcm9wQW5pbWF0aW9u
U2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBbc2ltdWxhdG9yIHNldEV4dGVy
bmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmZpcnN0SXRlbS5nZXQo
KSwgc2Vjb25kSXRlbS5nZXQoKSwgbmlsXSBkZWZhdWx0RHJvcFByZXZpZXdzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6Zmlyc3RQcmV2aWV3LmdldCgpLCBzZWNvbmRQcmV2aWV3LmdldCgpLCBu
aWxdXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAW2ZpcnN0SXRl
bS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW2ZpcnN0UHJl
dmlldy5nZXQoKSwgc2Vjb25kUHJldmlldy5nZXQoKV1dOwogICAgIFtzaW11bGF0b3IgcnVuRnJv
bTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSg0NTAsIDQ1MCldOwogCiAgICAgRVhQ
RUNUX0VRKFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10uY291bnQsIDJVKTsKQEAgLTE3
NTUsNyArMTc1NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIFRhcmdldGVkUHJldmll
d0lzQ2xpcHBlZFdoZW5Ecm9wcGluZ1RhbGxJbWFnZSkKICAgICBbaXRlbSBzZXRTdWdnZXN0ZWRO
YW1lOkAiZ3JlZW4iXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpE
cm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBbc2ltdWxh
dG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6aXRl
bS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cHJl
dmlldy5nZXQoKV1dOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBb
aXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW3ByZXZpZXcuZ2V0KCldXTsKICAgICBb
c2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMzUwLCAz
NTApXTsKIAogICAgIEVYUEVDVF9FUShbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdLmNv
dW50LCAxVSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA3YTdhYzY2YzFjNDUwMDVkOTk1NmQ1
ZTZjYjgxNzVmNDk0YjE0M2JmLi5mYTQ0ZTI2NmI1ZGUxZTVmNzcyOWY3ZjMwYzEzZDg1MzgyMWZk
NWZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFdLSFRU
UENvb2tpZVN0b3JlLCBDcmVhdGlvblRpbWUpCiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2Jq
ZWN0OkAiY29va2llVmFsdWUiIGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CiAgICAgW2Nvb2tp
ZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiLnd3dy53ZWJraXQub3JnIiBmb3JLZXk6TlNIVFRQQ29v
a2llRG9tYWluXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIvcGF0aCIgZm9y
S2V5Ok5TSFRUUENvb2tpZVBhdGhdOwotICAgIFJldGFpblB0cjxOU051bWJlcj4gY3JlYXRpb25U
aW1lID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MTAwMDAwXTsKKyAgICBSZXRhaW5QdHI8
TlNOdW1iZXI+IGNyZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJvcGVydGll
cyBzZXRPYmplY3Q6Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsKICAgICBS
ZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQ
cm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLT2JqZWN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS09iamVjdC5tbQppbmRleCBiNzQ2ZTM3Y2MwNTMwMjQ0NDU2
OTA5ZmQxZjc1M2M5ODE0YjI1Y2JiLi4xZDZlZmYyMjZhMGJlZGFhOGJjN2U4MzU0MDg4MWFmNWRl
YTE4M2Y5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLT2JqZWN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tPYmplY3QubW0KQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChXZWJLaXQsIFdLT2JqZWN0KQogewog
ICAgIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJqdXN0IHRlc3RpbmciKTsKICAgICBBU1NFUlRfVFJVRShbQCJqdXN0IHRlc3RpbmciIGlzRXF1
YWxUb1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmdSZWZdKTsKLSAgICBBU1NFUlRfVFJVRShbKE5T
U3RyaW5nICopc3RyaW5nUmVmIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAg
IEFTU0VSVF9UUlVFKFsoTlNTdHJpbmcgKilzdHJpbmdSZWYgIGNsYXNzXV0pOwogCiAgICAgTlNT
dHJpbmcgKndlYWtTdHJpbmcgPSBuaWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KaW5kZXggOWJi
MzZkNGFmYTE3NWYwZTEyM2MxY2FmNWU3OTA3YWFmNmYyNzhmZi4uYjk1OGYzYjIzZDBiYWM5Mzll
ZTBlOGNiMDUzNjhmZDVlN2Q5Mzc1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KQEAgLTIwMSw3
ICsyMDEsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlTm9uUGVyc2lzdGVudENy
ZWRlbnRpYWxzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAKICAgICBk
b25lID0gZmFsc2U7Ci0gICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdIGZvckRhdGFS
ZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpleHBlY3RlZFJlY29yZC5nZXQoKV0gY29t
cGxldGlvbkhhbmRsZXI6Xih2b2lkKSB7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHNdIGZvckRhdGFSZWNvcmRzOkBbZXhwZWN0ZWRSZWNvcmQuZ2V0KCldIGNvbXBsZXRpb25IYW5k
bGVyOl4odm9pZCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5tbQppbmRleCAxM2EzZTk4ZWJhYmJkZmVlYWEyNGRkODg2MTM4Y2RlNzMxYmY2Yjg0Li5j
OTBlYTFjYjJhMjhlY2JlZmZhZTIzZWRlNWFkNjllMzVlOGU4NTIzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2Fy
bWluZyBzaG91bGRFCiAgICAgICAgIEVYUEVDVF9FUShbcmVjb3JkcyBjb3VudF0sICh1bnNpZ25l
ZCBsb25nKTMpOwogICAgICAgICBmb3IgKGlkIHJlY29yZCBpbiByZWNvcmRzKSB7CiAgICAgICAg
ICAgICBpZiAoW1tyZWNvcmQgZGlzcGxheU5hbWVdIGlzRXF1YWw6IEAiYXBwbGUuY29tIl0pIHsK
LSAgICAgICAgICAgICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdldCgp
IGZvckRhdGFSZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpyZWNvcmRdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7CisgICAgICAgICAgICAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZU
eXBlczp0eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpAW3JlY29yZF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmcmFtZUlEQlBhdGguZ2V0KCkucGF0aF0pOwog
ICAgICAgICAgICAgICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvV2ViVmlld0NhblBhc3RlVVJMLm1tCmluZGV4IDEwNmEyNWFhNzRiOWI3MWQ3YWI2ZTgxN2Qw
Y2M1OTQxMDA1M2I0OGUuLjRiMjllNzlkYjdkODc2M2UwYmFkMWU2YjNiYTIyOWFlZjcxYjNiZTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0
ZVVSTC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFz
dGVVUkwubW0KQEAgLTM3LDcgKzM3LDcgQEAgVEVTVChXZWJLaXRMZWdhY3ksIFdlYlZpZXdDYW5Q
YXN0ZVVSTCkKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXTsKICAgICBbd2Vi
VmlldyBzZXRFZGl0YWJsZTpZRVNdOwogCi0gICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3Rl
Ym9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNVUkxQYm9hcmRU
eXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBk
ZWNsYXJlVHlwZXM6QFtOU1VSTFBib2FyZFR5cGVdIG93bmVyOm5pbF07CiAgICAgW1tOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3d3dy53ZWJraXQub3JnLyJdIHdyaXRlVG9QYXN0ZWJvYXJk
OltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKICAgICBbd2ViVmlldyBwYXN0ZTpu
aWxdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3
Q2FuUGFzdGVaZXJvUG5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmll
d0NhblBhc3RlWmVyb1BuZy5tbQppbmRleCA1OGUwN2MxNDBlZWZjYWI0NWI4ZTJkZTczYzgwZGY3
MWVkZWZiMDg2Li5mYTJlMmFhOTY3YWJhMjMxYTc3MDcwZDJjMTcwYTE4ZWIxYmRmOGEyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVaZXJv
UG5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0
ZVplcm9QbmcubW0KQEAgLTM4LDcgKzM4LDcgQEAgVEVTVChXZWJLaXRMZWdhY3ksIFdlYlZpZXdD
YW5QYXN0ZVplcm9QbmcpCiAgICAgW3dlYlZpZXcgc2V0RWRpdGFibGU6WUVTXTsKICAgICAKICAg
ICAvL3Bhc3RpbmcgYSAweDAgaW1hZ2UgYXMgcGRmIGJvYXJkIHR5cGUuIFJlZmVycmluZyB0byA8
cmRhcjovL3Byb2JsZW0vMTExNDE5MjA+Ci0gICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3Rl
Ym9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNQREZQYm9hcmRU
eXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBk
ZWNsYXJlVHlwZXM6QFtOU1BERlBib2FyZFR5cGVdIG93bmVyOm5pbF07CiAgICAgW1tbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCIwIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdIHdyaXRlVG9QYXN0ZWJvYXJk
OltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKICAgICBbd2ViVmlldyBwYXN0ZTpu
aWxdOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2Vi
Vmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tCmluZGV4IDY5ZjQ0
ODllNzdmYTBiNjY4NjViMWJhNjUxYTcyYzVlNTExNjBlN2EuLmEwZjM0ODEzNGFlNDU0ODFlNGI2
ZWVmOGViYmI5ZTg2YWVjMmY2MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQu
bW0KQEAgLTk0LDcgKzk0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBk
aWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDooSlNDb250ZXh0ICopY29udGUKICAgICB9OwogCiAg
ICAgY29udGV4dFtAImNhbGxNZUJhY2siXSA9IF4oSlNWYWx1ZSAqZnVuY3Rpb25WYWx1ZSkgewot
ICAgICAgICBbZnVuY3Rpb25WYWx1ZSBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheV1d
OworICAgICAgICBbZnVuY3Rpb25WYWx1ZSBjYWxsV2l0aEFyZ3VtZW50czpAW11dOwogICAgIH07
CiAKICAgICBjb250ZXh0W0AiY2hlY2tGb3JNeUN1c3RvbVByb3BlcnR5Il0gPSBeKEpTVmFsdWUg
KmVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1Mu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCmluZGV4IGNmMDhhNzQ4MDli
ZTEwMWQ4ZWIzOTQxMWYzNDJiNjUwMjM5MmVhODEuLjAxYzdkMjczNjE1NjcxYmUwMDhmMjE4OGZj
ZDNjN2UxZmQwMGI1ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5J
T1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQpAQCAtMzcsOSAr
MzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgaWYgKCFhcmd1bWVu
dERvbWFpbikKICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdOwogICAgIAotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgQFlFUywgICAgQCJXZWJLaXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBAeyBAIldl
YktpdExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmciOiBAWUVTIH07CiAKICAgICBbYXJndW1lbnRE
b21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRpY3RdOwogICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWlu
IGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggM2EzM2MyZGFiY2Mz
MDIwNWViYTczYjNkNDg4YmE0ODA4Y2YyM2Y5OC4uNmY2MzRmMTc2NmMyYzEwOTgxNzIxYjAxNTQz
ZWE4MDcxNGRkNGRiMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0lu
amVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQpAQCAtMzYsMTQgKzM2LDE0IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRh
YmxlQ29weV07CiAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKICAgICAgICAgYXJndW1lbnREb21h
aW4gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIAotICAgIE5TRGlj
dGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2Vy
OjRdLCAgIEAiQXBwbGVBbnRpQWxpYXNpbmdUaHJlc2hvbGQiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6MF0sICAgQCJBcHBsZUZvbnRTbW9v
dGhpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBATk8sICAgICBAIk5TU2Nyb2xsQW5p
bWF0aW9uRW5hYmxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEBOTywgICAgIEAiTlNP
dmVybGF5U2Nyb2xsZXJzRW5hYmxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEAiQWx3
YXlzIiwgICAgICAgICAgICAgICAgICAgICAgICBAIkFwcGxlU2hvd1Njcm9sbEJhcnMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworCisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0g
QHsKKyAgICAgICAgQCJBcHBsZUFudGlBbGlhc2luZ1RocmVzaG9sZCI6IEAoNCksCisgICAgICAg
IEAiQXBwbGVGb250U21vb3RoaW5nIjogQCgwKSwKKyAgICAgICAgQCJOU1Njcm9sbEFuaW1hdGlv
bkVuYWJsZWQiOiBATk8sCisgICAgICAgIEAiTlNPdmVybGF5U2Nyb2xsZXJzRW5hYmxlZCI6IEBO
TywKKyAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIjogQCJBbHdheXMiLAorICAgIH07CiAK
ICAgICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRpY3RdOwogICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWlu
OmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvbWFpbk1hYy5tbQppbmRleCA3Y2E5OWU2YTNiNWU0MDgyZWFmY2Q5NDc0NDkwYWMwOTVmZjBk
NDNjLi5iZTdkODcyNjdlYzIyMTU0M2E1NDlmZTJiODhkMWM4MzI5OTJmYTI2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL21haW5NYWMubW0KQEAgLTM5LDkgKzM5LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQogICAgIGlmICghYXJndW1lbnREb21haW4pCiAgICAgICAgIGFyZ3VtZW50
RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICAKLSAgICBO
U0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0Fu
ZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEBZRVMsICAgIEAiV2ViS2l0TGlua2Vk
T25PckFmdGVyRXZlcnl0aGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Cisg
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gQHsgQCJXZWJLaXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRo
aW5nIjogQFlFUyB9OwogCiAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlv
bmFyeTpkaWN0XTsKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBz
ZXRWb2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFpbiBmb3JOYW1lOk5TQXJndW1lbnREb21haW5d
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IGE1ZDU4ZWNjMTYyMDdmODQ5ZDc0
YzJkZjExZjM5ODY2ODlhOWY0OWIuLjViNjc4MTEwMTI1MTM4ZDYyYmRkYjhiMzMzMzRmNGQyNDUx
ZjAzNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTkwLDcgKzkwLDcgQEAg
cHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFu
ZGxlcjsKICNlbGlmIFVTRShBVEspCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaAppbmRleCAwNDFmODFiYzc2ZDUwMzZiOWE5MjllOTBhMmM2MmU3
MTE3OGJlYjNjLi44ZmM5NGY2ZjU0OTQ4ODM1NTViMTQ0YjE0NTAzMDYyMDQ4MTYwMWU2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIENGVHlwZVJl
ZiBQbGF0Zm9ybVRleHRNYXJrZXI7Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXIgPSBpZDsKICNl
bHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlcjsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAppbmRleCAxOGMxOGQ0OGU0MWNkZjA5OGFjOTE1
ODhmZjY2MzExMDYyOTkxMjNmLi43ODE4MmVlOTBjNGUyNzk3NTZmYzY5NThhNDEyZTFjYWIyNDBl
MjYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQAog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRl
ZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7Cit1c2luZyBQbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2U7CiAjZW5kaWYKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmKTsK
ICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJhbmdlOworICAgIFJldGFpblB0cjxpZD4gbV90ZXh0TWFy
a2VyUmFuZ2U7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1fdGV4dE1hcmtl
clJhbmdlOwogI2VuZGlmCkBAIC02Nyw0ICs2Nyw4IEBAIHByaXZhdGU6CiBpbmxpbmUgYm9vbCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAgICAgCisjaWZkZWYgX19PQkpD
X18KK2lubGluZSBPcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+
IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiosIGlkIHJhbmdlKSB7IHJldHVybiB7IHsgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6Y3JlYXRlKHJhbmdlKSB9IH07IH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMzVmYjM3MDcxNmIyYWMzZTkyNWUxNjc2YzUy
ZTEyMmFhODFiYjc3Zi4uMTQxZGIyMGFlYjkyYTgxODQ3ZTkwZDg4YTA1OTQ0MDdlNjhjNmVjMiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTM1LDExICszNSw4IEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWZkZWYgX19PQkpDX18K
LXR5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1lbnQ7Ci0jZWxzZQotdHlwZWRlZiBzdHJ1Y3Qgb2Jq
Y19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwotI2VuZGlmCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgordXNpbmcgUGxhdGZvcm1VSUVsZW1lbnQgPSBpZDsKICNlbGlmIEhBVkUoQUNDRVNT
SUJJTElUWSkgJiYgVVNFKEFUSykKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlckF0ay5oIgogI2luY2x1ZGUgPGF0ay9hdGsuaD4KQEAgLTQ5LDE0ICs0Niw2IEBAIHR5
cGVkZWYgR1JlZlB0cjxBdGtPYmplY3Q+IFBsYXRmb3JtVUlFbGVtZW50OwogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaWZk
ZWYgX19PQkpDX18KLXR5cGVkZWYgaWQgTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNlbHNlCi10eXBl
ZGVmIHN0cnVjdCBvYmpjX29iamVjdCogTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNlbmRpZgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IDog
cHVibGljIEpTV3JhcHBhYmxlIHsKQEAgLTY2LDcgKzU1LDEzIEBAIHB1YmxpYzoKIAogICAgIH5B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZCBw
bGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQorI2VuZGlmCisj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRmb3JtVUlFbGVt
ZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgSlNDbGFz
c1JlZiB3cmFwcGVyQ2xhc3MoKTsKIAogICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCYpOwpAQCAtMzU2LDEyICszNTEsMTUgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKIAorI2lmICFQTEFURk9STShDT0NPQSkK
ICAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7Ci0gICAgCisjZW5kaWYKKwogICAgIC8v
IEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2VkIHRvIGhlbHAgbWFuYWdl
IG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBOb3RpZmljYXRpb25IYW5kbGVyIG1fbm90aWZpY2F0
aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZWxlbWVudDsKKyAgICBSZXRhaW5QdHI8
aWQ+IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKIAogICAgIHZvaWQgZ2V0TGlua2VkVUlFbGVtZW50
cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKICAgICB2b2lkIGdl
dERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7
CkBAIC0zNzgsNCArMzc2LDggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKICAgICAKKyNpZmRlZiBf
X09CSkNfXworaW5saW5lIE9wdGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4g
bWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Kiwg
aWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShl
bGVtZW50KSB9IH07IH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0aXZhdGVGb250
c0NvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9B
Y3RpdmF0ZUZvbnRzQ29jb2EubW0KaW5kZXggZDFjZjdmNTUwNGVlZTBiYzMyOWYxOTNkMjU1YjZm
MmM0NDM5MmNlMS4uZGIzYzI4OTMxZDA1ZjU0MjA2YjFiZjVkNTI5ODE0ODQ5OThhYTI0MCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9BY3Rp
dmF0ZUZvbnRzQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0KQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBv
cnQgPENvcmVUZXh0L0NURm9udE1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZ0NG
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVu
dGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgVVNFKEFQUEtJ
VCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KaW5kZXggMWYx
MDdjZTc5ZDdlNDNiOGQ4MzA4MDhkMzExZGZjN2FiNjhhNDAxNS4uNTM3MThmZTVhYmRkZWIwNzZj
MmUzM2Q4NDExYjY1MWM2ZmQ2NmZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJJT1MubW0KQEAgLTI5LDggKzI5LDcgQEAgbmFtZXNwYWNlIFdUUiB7CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IG90aGVyKQogewotICAgIHJldHVybiBbKGlkKXBsYXRmb3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6
KGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIFtwbGF0Zm9ybVRl
eHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdUUgotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbQppbmRleCAzNjQxNzU1ODVlOTcxZTdhYWY2NzJhYWE4NzliNmRkMTdmYTRkYzA2Li41NmQy
N2I0YzBmMGY3NjQ0NGJiMGVhZGM5ODE4ZThhY2Q2ZTU2OGJkIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTI0LDkgKzI0LDEwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgi
CiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVQYWdl
LmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KQEAgLTM2LDYgKzM3LDcgQEAK
ICNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQg
ZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKQEAgLTEz
NywxMyArMTM5LDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVFbXB0
eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cyhudWxscHRyLCAwKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZlcnROU0FycmF5VG9WZWN0b3Io
TlNBcnJheSogYXJyYXksIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYg
ZWxlbWVudFZlY3RvcikKLXsKLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2FycmF5IGNvdW50XTsK
LSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBlbGVt
ZW50VmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2FycmF5IG9i
amVjdEF0SW5kZXg6aV0pKTsKLX0gICAgCi0KIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlLCBOU1N0
cmluZyAqdmFsdWUpCiB7CiAgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihbYXR0cmlidXRlIGxl
bmd0aF0pOwpAQCAtMTYwLDIzICsxNTUsMTcgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUKICAg
ICAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZv
cm1VSUVsZW1lbnQgZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9u
b3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5
cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1j
b21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCYgb3RoZXIpCiAgICAgOiBKU1dyYXBwYWJsZSgpCiAgICAgLCBtX2VsZW1l
bnQob3RoZXIubV9lbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0g
ICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCgpCiB7Ci0gICAgW21fZWxlbWVudCByZWxlYXNlXTsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIG90aGVyRWxlbWVudCkKQEAgLTI0MywyNiArMjMyLDIwIEBAIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQg
eCwgaW50CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KTsKIH0KICAgICAKLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJy
YXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4+JiBlbGVtZW50cykKK3N0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRFbGVtZW50c1RvT2Jq
ZWN0QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykKIHsKLSAgICBKU1ZhbHVlUmVmIGFycmF5UmVz
dWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0g
ICAgSlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJyYXlS
ZXN1bHQsIG51bGxwdHIpOwotICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXpl
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEpTT2Jq
ZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS0+d3JhcHBlckNsYXNzKCksIGVsZW1lbnRzW2ld
LmdldCgpKSwgbnVsbHB0cik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5UmVzdWx0OworICAgIGF1
dG8gYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCBudWxscHRyLCBudWxscHRy
KTsKKyAgICBhdXRvIHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNv
bnRleHQsIGFycmF5LCBpLCBKU09iamVjdE1ha2UoY29udGV4dCwgZWxlbWVudHNbaV0tPndyYXBw
ZXJDbGFzcygpLCBlbGVtZW50c1tpXS5nZXQoKSksIG51bGxwdHIpOworICAgIHJldHVybiBhcnJh
eTsKIH0KLQogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50c0ZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgV0tCdW5kbGVG
cmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKICAgICBKU0NvbnRleHRSZWYgY29udGV4
dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwotCiAgICAg
TlNBcnJheSAqZWxlbWVudHNGb3JSYW5nZSA9IFttX2VsZW1lbnQgZWxlbWVudHNGb3JSYW5nZTpO
U01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV07Ci0gICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7Ci0gICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcihl
bGVtZW50c0ZvclJhbmdlLCBlbGVtZW50cyk7Ci0gICAgcmV0dXJuIGNvbnZlcnRFbGVtZW50c1Rv
T2JqZWN0QXJyYXkoY29udGV4dCwgZWxlbWVudHMpOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVu
dHNUb09iamVjdEFycmF5KGNvbnRleHQsIG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+PihlbGVtZW50c0ZvclJhbmdlKSk7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50
KQpAQCAtMTEwMCw5ICsxMDgzLDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVTZWxlY3Rpb24oKQogLy8gVGV4dCBtYXJrZXJzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAg
aWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJrZXI6
KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBpZCBlbmRUZXh0TWFy
a2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtlciwgbmlsXTsK
KyAgICBpZCBzdGFydFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFydE1hcmtlckZvck1h
cmtlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgZW5kVGV4dE1h
cmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0VGV4
dE1hcmtlciwgZW5kVGV4dE1hcmtlcl07CiAgICAgCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5n
ZSk7CkBAIC0xMTEwLDcgKzEwOTMsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZQogCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSog
c3RhcnQsIGJvb2wgZm9yd2FyZCkKIHsKLSAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxl
bWVudCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTooaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKKyAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0g
W21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZTpzdGFydC0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKSBmb3J3YXJkOmZvcndhcmRdOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUobWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAKQEAgLTExMjIs
NDcgKzExMDUsNDYgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckUKIAogaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKTsgICAgCi0gICAgcmV0dXJuIFttX2VsZW1lbnQgbGVuZ3RoRm9y
VGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdOworICAgIHJldHVybiBbbV9lbGVtZW50IGxlbmd0aEZv
clRleHRNYXJrZXJzOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKIH0KIAogUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0g
ICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2Vy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgcHJldmlvdXNN
YXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOnRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1l
bnQgbmV4dE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRl
eHRNYXJrZXJzID0gKGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwot
ICAgIGlmICghdGV4dE1hcmtlcnMgfHwgIVt0ZXh0TWFya2VycyBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0pCisgICAgaWQgdGV4dE1hcmtlcnMgPSBtYXJrZXJSYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZiAoIVt0ZXh0TWFya2VycyBpc0tpbmRPZkNsYXNzOltO
U0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBjcmVhdGVFbXB0eUpTU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIFtbbV9lbGVtZW50IHN0cmluZ0ZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXSBj
cmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKGlk
KWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJheSAqdGV4
dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxl
bWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiB9
CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gcmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3Rh
cnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0OllFU107
CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7
CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IHJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IHN0
YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnMgaXNTdGFydDpOT107
CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7
CiB9CkBAIC0xMTk0LDcgKzExNzYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeAogCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJr
ZXIpCiB7Ci0gICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4
dE1hcmtlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgb2JqID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjptYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKICAgICBpZiAob2JqKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y3JlYXRlKG9iaik7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjk0
LDcgKzEyNzYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0YwogewogICAgIE5TQXJyYXkgKnRl
eHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkKLSAgICAgICAgdGV4dE1hcmtl
cnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOwor
ICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzOnRleHRNYXJrZXJzIHdp
dGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4dF1dOwogICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0luamVjdGVkQnVuZGxlSU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KaW5kZXggNDI5MDhiZWZlZjdhNThmN2FlMDRm
MDU4MDUzMTRlNWE0NWU0ZTNlZC4uYmQ3MmY5ODQ1YzAxMzcwYjFmZGE4ZWQ3ZDNiYjQ3OTI5Y2Vh
MGRhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KQEAgLTM2LDEyICszNiw4IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZShXS1R5cGVSZWYpCiAKICAgICAv
LyBMYW5ndWFnZSB3YXMgc2V0IHVwIGVhcmxpZXIgaW4gbWFpbigpLiBEb24ndCBjbG9iYmVyIGl0
LgogICAgIE5TQXJyYXkgKmxhbmd1YWdlcyA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gdmFsdWVG
b3JLZXk6QCJBcHBsZUxhbmd1YWdlcyJdOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGRpY3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OwotICAgIGlmIChsYW5ndWFnZXMpCi0gICAgICAgIFtkaWN0IHNldE9iamVjdDpsYW5ndWFnZXMg
Zm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKLQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmRpY3QuZ2V0KCkgZm9yTmFtZTpOU0Fy
Z3VtZW50RG9tYWluXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBsYW5ndWFnZXMg
PyBAeyBAIkFwcGxlTGFuZ3VhZ2VzIjogbGFuZ3VhZ2VzIH0gOiBAeyB9OworICAgIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmRpY3Rpb25h
cnkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQppbmRleCBjZjc3OGM2ZTFkNGFhMGE4
YzUzNDM0Yzc4ODJlNjlmOGFjYjQ2ZWQxLi4zOWFhYTI0YTk3NDBhOGMyMzA0NmFiOGY1MzJkOTg3
MzFjZDI5NTVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTU1
LDcgKzU1LDcgQEAgTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0
cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmUKICAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeV07CiAgICAgCiAgICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRm
b3JtVUlFbGVtZW50KCkpCi0gICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVj
dDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRF
bGVtZW50Il07CisgICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDpzdGFy
dEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsK
ICAgICAKICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6KGlzRGlyZWN0aW9u
TmV4dCkgPyBAIkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlvdXMiIGZvcktl
eTpAIkFYRGlyZWN0aW9uIl07CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tCmluZGV4IDVlYjk1ZjIyNzQwMWY4N2Q2ZjM5ZjRkNTQ5YzBmY2M4NTQ2ZDdh
ODcuLmJhMjg5YjFkNmNkZTdhMjIxMTMyZGExOGMyMGY5NjI5MzJlMmQzOTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCkBAIC0yOSw4ICsyOSw3IEBAIG5h
bWVzcGFjZSBXVFIgewogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhfX2JyaWRnZSBp
ZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOihfX2JyaWRnZSBpZClvdGhlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVh
bDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIK
LQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggOWI1OWJm
Y2UwZjRjNDg1NWJmY2RmYWU2NWQ0NTk1ZTRiZjY2MWNhMy4uMjdmMGZiNWUxODAwOWQ1NTlkMjE0
ODZlNDg5MzRiYTJmYWFkNzdhYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCisjaW1wb3J0
IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlPd25z
QXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUgQCJBWE93bnMi
CkBAIC05MiwyNyArOTIsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVh
dGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKK0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVudCkKICAgICA6IG1f
ZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAg
Ly8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJl
dGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9l
bGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCiAgICAgOiBK
U1dyYXBwYWJsZSgpCiAgICAgLCBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotICAgICwgbV9u
b3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCiB7Ci0gICAg
Ly8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0
LgotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBbbV9lbGVtZW50IHJl
bGVhc2VdOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KQpAQCAtMTY0LDkgKzE1Niw5IEBAIHN0YXRp
YyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBmb2N1c2Vk
QWNjZXNzaWJpbGl0eU9iamVjCiAgICAgcmV0dXJuIFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07
CiB9CiAKLXN0YXRpYyBOU1N0cmluZyogYXR0cmlidXRlc09mRWxlbWVudChpZCBhY2Nlc3NpYmls
aXR5T2JqZWN0KQorc3RhdGljIE5TU3RyaW5nICphdHRyaWJ1dGVzT2ZFbGVtZW50KGlkIGFjY2Vz
c2liaWxpdHlPYmplY3QpCiB7Ci0gICAgTlNBcnJheSogc3VwcG9ydGVkQXR0cmlidXRlcyA9IFth
Y2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CisgICAgTlNB
cnJheSAqc3VwcG9ydGVkQXR0cmlidXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVOYW1lc107CiAKICAgICBOU011dGFibGVTdHJpbmcqIGF0dHJpYnV0ZXNT
dHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgW3N1cHBvcnRlZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKQEAgLTIxOSwxNyAr
MjExLDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUKICAgICByZXR1cm4gYWRvcHQoSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNvbnZlcnROU0FycmF5
VG9WZWN0b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7Ci0gICAgTlNVSW50
ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShj
b3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAg
ICAgdi5hcHBlbmQoVDo6VmFsdWVUeXBlOjpjcmVhdGUoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0p
KTsKLSAgICByZXR1cm4gdjsKLX0KLQogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBk
ZXNjcmlwdGlvbk9mRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiA+JiBlbGVtZW50VmVjdG9yKQogewogICAgIE5TTXV0YWJsZVN0cmluZyogYWxsRWxlbWVudFN0
cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKQEAgLTMyOCwzNCArMzA5LDM0IEBAIHN0
YXRpYyBOU0RpY3Rpb25hcnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZUZvckNyaXRlcmlhKEFjY2Vzc2liCiB7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcGFyYW1l
dGVycyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwogCi0gICAgW3BhcmFtZXRl
cnMgc2V0T2JqZWN0OihfX2JyaWRnZSBpZClzdGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KSBmb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl07CisgICAgW3BhcmFtZXRlcnMgc2V0
T2JqZWN0OnN0YXJ0LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvcktleTpAIkFYU3RhcnRU
ZXh0TWFya2VyUmFuZ2UiXTsKICAgICBbcGFyYW1ldGVycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhCb29sOmZvcndhcmRdIGZvcktleTpAIkFYU2VhcmNoVGV4dERpcmVjdGlvbiJdOwog
CiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExp
bmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVs
ZW1lbnRWZWN0b3IpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJh
eSogbGlua2VkRWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICBlbGVtZW50
VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4+KGxpbmtlZEVsZW1lbnRzKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGxpbmtlZEVsZW1lbnRzKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0
RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVs
ZW1lbnRWZWN0b3IpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlu
a3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRWZWN0b3Ip
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua0VsZW1l
bnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVs
ZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihsaW5rRWxlbWVudHMpOworICAgIGVsZW1lbnRW
ZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4obGlua0Vs
ZW1lbnRzKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRz
KSBjb25zdAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0
dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4+JiBlbGVtZW50cykgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CiAgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRz
ID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KHZhbHVlKTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApA
QCAtMzYzLDcgKzM0NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRy
ZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+CiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0
ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CisgICAgZWxlbWVudFZlY3RvciA9IG1h
a2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNzMsNyArMzU0LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUUKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CiAgICAgYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJmVsZW1l
bnRWZWN0b3IsIGxvY2F0aW9uLCBsZW5ndGgsIHRoaXNdIHsKICAgICAgICAgTlNBcnJheSogY2hp
bGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczpOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2NhdGlvbiBtYXhDb3VudDpsZW5n
dGhdOwotICAgICAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsKKyAgICAgICAgZWxlbWVudFZl
Y3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJl
bik7CiAgICAgfSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtMzg3LDcgKzM2
OCw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycygpIGNv
bnN0CiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7
CiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgZWxlbWVudHMgPSBj
b252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFs
dWUpOworICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29udGV4dCwgZWxlbWVudHMpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTQwMSw3ICszODIsNyBAQCBKU1ZhbHVlUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAogICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGVsZW1lbnRzOwogICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0gY29udmVydE5TQXJy
YXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKKyAgICAg
ICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4o
dmFsdWUpOwogICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheTxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbnRleHQsIGVsZW1lbnRzKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiB9CkBAIC02MTAsMTQgKzU5MSwxNCBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQogCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmli
dXRlcygpCiB7Ci0gICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50
KG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVt
ZW50KG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIFthdHRyaWJ1dGVzIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKIH0KICAgICAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5n
ICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dLCBt
X2VsZW1lbnQpOworICAgIE5TU3RyaW5nICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmF0dHJpYnV0ZV1dLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbdmFs
dWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTcyOSw3ICs3MTAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAqcm9sZSA9IGRl
c2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyAq
cm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsK
ICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZSIsIHJvbGUp
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTczOSw3ICs3MjAsNyBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcqIHJvbGUgPSBk
ZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJp
bmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudC5n
ZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFN1YnJv
bGUiLCByb2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc0OSw3ICs3MzAs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vi
cm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBO
U1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVd
LCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVE
ZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNh
dGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNjcmlwdGlvbiIsIHJvbGUpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTc1OSw3ICs3NDAsNyBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9u
KCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21w
dXRlZFJvbGVTdHJpbmcoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5T
U3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEFSSUFSb2xlIl0sIG1fZWxlbWVudCk7
CisgICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUiXSwgbV9l
bGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW2NvbXB1dGVkUm9sZVN0cmluZyBjcmVhdGVKU1N0
cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNzY5LDcgKzc1
MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b21wdXRlZFJvbGVTdHJpbmcoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRpdGxlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQpOworICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJp
YnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUoQCJBWFRpdGxlIiwgdGl0bGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
IApAQCAtNzc5LDcgKzc2MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0
cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNv
bmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0aW9uIiwgZGVzY3JpcHRpb24p
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzg5LDcgKzc3MCw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigp
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50
YXRpb24oKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRl
c2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSwgbV9lbGVt
ZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0
dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVzY3JpcHRpb24pOyAgICAKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc5OSw3ICs3ODAsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVl
KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9
IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVz
Y3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0
KCkpOwogICAgIGlmIChkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoQCJBWFZhbHVlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKQEAgLTgxMCw3ICs3OTEsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1
ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFuZ3VhZ2UiXSwg
bV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFuZ3VhZ2UiXSwgbV9lbGVt
ZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
TGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBA
IC04MjAsNyArODAxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omxhbmd1YWdlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0
ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVs
cEF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoQCJBWEhlbHAiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIApAQCAtMTEyOSw3ICsxMTEwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0CiBp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRleCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmVGb3JJbmRleFBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50Omlu
ZGV4XV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZv
clBhcmFtZXRlcjpAKGluZGV4KV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZhbHVlIGludFZhbHVl
XTsgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTE0MCw3ICsxMTIxLDcgQEAgaW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKGlu
dCBsaW5lKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UmFu
Z2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6bGluZV1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6QChsaW5lKV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9tUmFu
Z2UoW3ZhbHVlIHJhbmdlVmFsdWVdKSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwpAQCAtMTI3Miw3ICsxMjUzLDcgQEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKEpTQ29udGV4dFJlZiBjb250ZXh0
LAogICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IHNlYXJjaFRleHRQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoY29udGV4dCwgc2VhcmNoU3RyaW5ncywg
c3RhcnRGcm9tLCBkaXJlY3Rpb24pOwogICAgIGlkIHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZWFyY2hUZXh0V2l0aENyaXRlcmlhIiBmb3JQYXJh
bWV0ZXI6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgaWYgKFtyZXN1bHQgaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2Jq
ZWN0QXJyYXk8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pihjb250ZXh0LCBj
b252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Pj4ocmVzdWx0KSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheTxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+KGNvbnRleHQsIG1ha2VWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+PihyZXN1bHQpKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyODQsNyArMTI2
NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBw
S2l0Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNv
bHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBjb2x1bW5IZWFkZXJzVmVj
dG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4+KGNvbHVtbkhlYWRlcnNBcnJheSk7CisgICAgYXV0byBjb2x1bW5IZWFkZXJzVmVjdG9yID0g
bWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVtbkhlYWRlcnNB
cnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5IZWFkZXJzVmVj
dG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMjk1LDcgKzEyNzYs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93SGVhZGVycygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgTlNBcnJheSogcm93SGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFJvd0hlYWRlclVJRWxlbWVudHMiXTsKLSAgICBhdXRvIHJvd0hlYWRl
cnNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4ocm93SGVhZGVyc0FycmF5KTsKKyAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBt
YWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93SGVhZGVyc0FycmF5
KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd0hlYWRlcnNWZWN0b3IpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMDYsNyArMTI4Nyw3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZDb2x1bW5zKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5
KiBjb2x1bW5zQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKLSAgICBhdXRvIGNvbHVtbnNWZWN0b3Ig
PSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4o
Y29sdW1uc0FycmF5KTsKKyAgICBhdXRvIGNvbHVtbnNWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29sdW1uc0FycmF5KTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKQEAgLTEzMTcsNyArMTI5OCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzQXJyYXkgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRl
XTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93c0FycmF5KTsKKyAgICBhdXRvIHJvd3NWZWN0b3Ig
PSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93c0FycmF5KTsK
ICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEzMjgsNyArMTMwOSw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxl
Q2VsbHMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNl
bGxzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVmlz
aWJsZUNlbGxzIl07Ci0gICAgYXV0byBjZWxsc1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjZWxsc0FycmF5KTsKKyAgICBhdXRv
IGNlbGxzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KGNlbGxzQXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY2VsbHNWZWN0
b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE0MDksNyArMTM5MCw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1
bW5JbmRleFJhbmdlKCkKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25l
ZCByb3cpCiB7Ci0gICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29sXSwgW05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOworICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5
ID0gQFtAKGNvbCksIEAocm93KV07CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2VsbEZvckNvbHVtbkFuZFJvdyIgZm9yUGFyYW1ldGVy
OmNvbFJvd0FycmF5XSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKQEAgLTE0OTAs
NyArMTQ3MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0
UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlCiBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooX19icmlkZ2UgaWQpbWFya2Vy
UmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJp
bGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKKyAgICBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlTZXRWYWx1ZTptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VBdHRy
aWJ1dGVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTU0OCw3ICsxNTI5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzeW5jUHJl
c3MoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgTlNBcnJheSogYXJyYXkgPSBlbGVtZW50ID8gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldIDogW05TQXJyYXkgYXJyYXld
OworICAgIE5TQXJyYXkqIGFycmF5ID0gZWxlbWVudCA/IEBbZWxlbWVudC0+cGxhdGZvcm1VSUVs
ZW1lbnQoKV0gOiBAW107CiAgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJy
YXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVd
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCiB9CkBAIC0xNTYwLDcgKzE1NDEsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
ICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
LSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDplbGVtZW50LT5w
bGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBOU0FycmF5ICphcnJheSA9IEBbZWxlbWVudC0+cGxh
dGZvcm1VSUVsZW1lbnQoKV07CiAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4pCiAgICAgICAgIGFy
cmF5ID0gW3NlbGVjdGVkQ2hpbGRyZW4gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YXJy
YXldOwogICAgIFttX2VsZW1lbnQgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTphcnJheSBmb3JBdHRy
aWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CkBAIC0xNzY5
LDggKzE3NTAsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlv
bigpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6
KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFy
a2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE3ODEsNyArMTc2Miw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaXNzcGVsbGluZ1RleHRNYXJrCiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJz
ID0gbWlzc3BlbGxpbmdTZWFyY2hQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoc3Rh
cnQsIGZvcndhcmQpOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZSIgZm9y
UGFyYW1ldGVyOnBhcmFtZXRlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJh
bmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3OTEsNyArMTc3Miw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxl
bWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwotICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlw
ZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODAwLDcgKzE3ODEsNyBAQCBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlRm9yRQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogbGVuZ3RoVmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3RoRm9yVGV4dE1h
cmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZSgpXTsKKyAgICBOU051bWJlciogbGVuZ3RoVmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiBm
b3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVy
biBbbGVuZ3RoVmFsdWUgaW50VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKQEAgLTE4MTAsOCArMTc5MSw4IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSoKIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRl
KChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNNYXJrZXIpOworICAgIGlkIHByZXZpb3VzTWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3Vz
VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUocHJldmlvdXNNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MjAsOCArMTgwMSw4IEBAIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2Vy
KEFjY2VzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRNYXJrZXIgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOworICAgIGlkIG5leHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRN
YXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE4MzAsNyArMTgxMSw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpCiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRTdHJpbmcgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpXTsKKyAgICBpZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFy
YW1ldGVyOm1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICByZXR1
cm4gW3RleHRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKQEAgLTE4NDAsOSArMTgyMSw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNz
CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
c3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOihfX2JyaWRnZSBpZClzdGFydE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCksIChfX2JyaWRnZSBpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBuaWxdOworICAgIE5TQXJyYXkqIHRleHRNYXJrZXJzID0gQFtzdGFydE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCksIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlk
IHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyIgZm9yUGFyYW1ldGVy
OnRleHRNYXJrZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTg1Miw3ICsxODMzLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclIKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZUF0dHJpYnV0ZV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2Up
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE4NzcsOCArMTg1OCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIg
Zm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdl
IENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xODg3LDggKzE4NjgsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYQogUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBpZCB0ZXh0TWFya2Vy
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUo
dGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTg5OCw3ICsxODc5LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKGkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4
dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1Zh
bHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwotICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTkyNCw3ICsxOTA1LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3Vu
ZHMKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Rh
cnRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6
W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01ha2VSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpXV07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENG
VHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTM0LDcgKzE5MTUsNyBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2lu
dChpbnQgeAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtl
ckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtl
UG9pbnQoeCwgeSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0
ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NDMsNyArMTkyNCw3IEBAIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlckZvclBvaW50KGludCB4CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlk
Z2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgdWlFbGVtZW50ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAg
ICBpZiAodWlFbGVtZW50KQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKHVpRWxlbWVudCk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTk3NSw3
ICsxOTU2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKICAgICBOU0F0dHJpYnV0ZWRTdHJp
bmcqIHN0cmluZyA9IG5pbDsKIAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHN0
cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1
dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKW1h
cmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBzdHJpbmcgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOm1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZSgpXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICBpZiAoIVtz
dHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCkBAIC0xOTkw
LDkgKzE5NzEsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogCiAgICAgaWQgcGFyYW1ldGVy
ID0gbmlsOwogICAgIGlmIChpbmNsdWRlU3BlbGxDaGVjaykKLSAgICAgICAgcGFyYW1ldGVyID0g
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDppbmNsdWRlU3BlbGxDaGVja10sIEAiQVhTcGVsbENoZWNrIiwgKF9fYnJpZGdl
IGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpLCBAIkFYVGV4dE1hcmtl
clJhbmdlIiwgbmlsXTsKKyAgICAgICAgcGFyYW1ldGVyID0gQHsgQCJBWFNwZWxsQ2hlY2siOiBp
bmNsdWRlU3BlbGxDaGVjayA/IEBZRVMgOiBATk8sIEAiQVhUZXh0TWFya2VyUmFuZ2UiOiBtYXJr
ZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSB9OwogICAgIGVsc2UKLSAgICAgICAg
cGFyYW1ldGVyID0gKF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpOworICAgICAgICBwYXJhbWV0ZXIgPSBtYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKTsKIAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIHN0cmluZyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJd
OwpAQCAtMjAwNyw3ICsxOTg4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKIGJvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNv
bnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
TlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFy
YW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07Cisg
ICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9y
UGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICBpZiAoIVtz
dHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKQEAgLTIwMjIsNyArMjAwMyw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5z
QXR0cmlidXRlCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OihfX2JyaWRnZSBpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBOU051bWJl
ciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYSW5kZXhGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6bWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CiAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRWYWx1ZV07CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMjAzMiw3ICsyMDEzLDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogbWFya2VyKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxp
ZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogdmFsaWROdW1iZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlcklzVmFsaWQiIGZvclBhcmFt
ZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gW3ZhbGlkTnVtYmVyIGJvb2xWYWx1ZV07
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMjA0Myw3ICsyMDI0LDcgQEAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyRm9ySW5kZXgoaW50IHQKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFRleHRNYXJrZXJGb3JJbmRleCIgZm9yUGFyYW1ldGVyOltOU051bWJlciBudW1iZXJX
aXRoSW50ZWdlcjp0ZXh0SW5kZXhdXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNTMsNyArMjAz
NCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RhcnRUZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFN0YXJ0VGV4dE1hcmtlciJdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA2Myw3ICsy
MDQ0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplbmRUZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWEVuZFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNzIsOCArMjA1
Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZW5kVGV4dE1hcmtlcigpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRl
eHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwODIsOCArMjA2Myw4
IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmlnaHRXb3JkVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7Cisg
ICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOTIs
OCArMjA3Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyCiBSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNXb3JkU3Rh
cnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJl
dmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZilwcmV2aW91
c1dvcmRTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNXb3JkU3RhcnRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0
ZShwcmV2aW91c1dvcmRTdGFydE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEwMiw4ICsyMDgzLDggQEAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dv
cmRTdGFydFRleHRNYXIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZCBuZXh0V29yZEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBm
b3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKW5leHRXb3JkRW5kTWFya2VyKTsKKyAgICBpZCBuZXh0V29yZEVuZE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0V29yZEVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRl
KG5leHRXb3JkRW5kTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTEyLDggKzIwOTMsOCBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1h
cmtlckZvcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9f
YnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5n
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQYXJhZ3JhcGhU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTIyLDggKzIxMDMsOCBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFy
YWdyYXBoVGV4dE1hcmtlcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1BhcmFn
cmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNQYXJh
Z3JhcGhTdGFydE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1BhcmFn
cmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUocHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEzMiw4ICsyMTEz
LDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGUKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFw
aEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRQYXJhZ3JhcGhFbmRN
YXJrZXIpOworICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRQYXJhZ3Jh
cGhFbmRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTIxNDIsOCArMjEyMyw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJr
CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENG
VHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0
ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNTIsOCArMjEzMyw4IEBAIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRN
YXJrZXJSCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1h
cmtlcik7CisgICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShw
cmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTYyLDggKzIxNDMsOCBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
U2VudGVuY2VTdGFydFRleAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRQYXJhZ3JhcGhFbmRNYXJrZXIpOworICAgIGlk
IG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dFBhcmFncmFwaEVuZE1hcmtlcik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBjYmQxNDY5YjkyODhl
YzY0ZWQ2YzZhNTdjMTNmYjY3YmY1ZjcwYjk0Li42MWNkZjBlYzE0YTdlYzg3NzUzMTEzMjUzZWU1
Yjc2OTNhOGUxNzU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0SGFzSGFk
VXNlckludGVyYWN0aW9uKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDApOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCit2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmlu
Zz4mJiBkb21haW5zKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZl
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMiKSk7CiAgICAgCkBAIC0yMDA1LDcgKzIwMDUsNyBAQCB2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCi12b2lkIFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYgd2ViVmlld0NhdGVnb3J5
KQordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcm
JiB3ZWJWaWV3Q2F0ZWdvcnkpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJl
Y2VpdmVXZWJWaWV3Q2F0ZWdvcnkiKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKaW5kZXggZTg0ZjVlYjc0OWEyNDAyYmI5ODVhMDE2MzY0YzgxYTY2MjlkOWJi
Ni4uYzdhOTU2NDM0NDYzMjk0YjE1NWM1YzA1MDAyNGRlZjQ3ZmNiNzFmNSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGVzdEludm9jYXRpb25f
aAotI2RlZmluZSBUZXN0SW52b2NhdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpT
V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKQEAgLTUzLDE3ICs1MiwxNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElzUGl4ZWxUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBl
eHBlY3RlZFBpeGVsSGFzaCk7CiAKLSAgICB2b2lkIHNldEN1c3RvbVRpbWVvdXQoV1RGOjpTZWNv
bmRzIGR1cmF0aW9uKSB7IG1fdGltZW91dCA9IGR1cmF0aW9uOyB9CisgICAgdm9pZCBzZXRDdXN0
b21UaW1lb3V0KFNlY29uZHMgZHVyYXRpb24pIHsgbV90aW1lb3V0ID0gZHVyYXRpb247IH0KICAg
ICB2b2lkIHNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihib29sIHZhbHVlKSB7IG1fZHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyID0gdmFsdWU7IH0KIAotICAgIFdURjo6U2Vjb25kcyBzaG9ydFRp
bWVvdXQoKSBjb25zdDsKKyAgICBTZWNvbmRzIHNob3J0VGltZW91dCgpIGNvbnN0OwogCiAgICAg
dm9pZCBpbnZva2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogICAg
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5KTsKIAogICAgIHN0YXRpYyB2b2lkIGR1bXBXZWJQcm9jZXNzVW5yZXNwb25zaXZlbmVzcyhj
b25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgb3V0cHV0VGV4dChjb25zdCBXVEY6
OlN0cmluZyYpOworICAgIHZvaWQgb3V0cHV0VGV4dChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZv
aWQgZGlkQmVnaW5Td2lwZSgpOwogICAgIHZvaWQgd2lsbEVuZFN3aXBlKCk7CkBAIC04Nyw5ICs4
Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNldFByZXZhbGVudFJlc291cmNlKCk7CiAgICAg
dm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldEhhc0hh
ZFVzZXJJbnRlcmFjdGlvbigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBbGxT
dG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlu
cyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYpOworICAgIHZv
aWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmJik7CiAgICAgdm9pZCBkaWRTZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCiAgICAgdm9pZCBkaWRSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMoKTsKQEAgLTEzOCwxMiArMTM3LDEyIEBAIHByaXZhdGU6CiAgICAgY29u
c3QgVGVzdE9wdGlvbnMgbV9vcHRpb25zOwogICAgIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVm
PiBtX3VybDsKLSAgICBXVEY6OlN0cmluZyBtX3VybFN0cmluZzsKKyAgICBTdHJpbmcgbV91cmxT
dHJpbmc7CiAgICAgUnVuTG9vcDo6VGltZXI8VGVzdEludm9jYXRpb24+IG1fd2FpdFRvRHVtcFdh
dGNoZG9nVGltZXI7CiAKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOwogCi0g
ICAgV1RGOjpTZWNvbmRzIG1fdGltZW91dDsKKyAgICBTZWNvbmRzIG1fdGltZW91dDsKICAgICBi
b29sIG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKIAogICAgIC8vIEludm9j
YXRpb24gc3RhdGUKQEAgLTE3Myw1ICsxNzIsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBUZXN0SW52b2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNTQ4ZmU3
MzEzMDY2NDY4ZjJkYWE3NmMyMTUwMGUwYTJhNDA4NDFiZi4uNmYzMjllNzViOTcxN2YzMGNjODdh
YzljZmMzMWNmYzk2ODNhZjAxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTIsNiArNTIsNyBAQAogI2ltcG9ydCA8
V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3Rm
L3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTEwMSwxMCAr
MTAyLDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0Zm9ybUluaXRpYWxpemUoKQog
ICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyID0gU3RyaW5nKGR1bXBSZW5k
ZXJUcmVlVGVtcCkgKyAnLycgKyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyI7CiAgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvbGRlciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOiBuaWxdOwogICAgIFN0cmluZyBmdWxsQnJvd3NpbmdTZXNzaW9uUmVz
b3VyY2VMb2cgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyICsgJy8nICsgImZ1bGxfYnJv
d3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCI7Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZXNv
dXJjZUxvZ1BsaXN0ID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdLCBAInZlcnNpb24iLCBuaWxdOworICAgIE5T
RGljdGlvbmFyeSAqcmVzb3VyY2VMb2dQbGlzdCA9IEB7IEAidmVyc2lvbiI6IEAoMSkgfTsKICAg
ICBpZiAoIVtyZXNvdXJjZUxvZ1BsaXN0IHdyaXRlVG9GaWxlOmZ1bGxCcm93c2luZ1Nlc3Npb25S
ZXNvdXJjZUxvZyBhdG9taWNhbGx5OllFU10pCiAgICAgICAgIFdURkNyYXNoKCk7Ci0gICAgW3Jl
c291cmNlTG9nUGxpc3QgcmVsZWFzZV07CiB9CiAKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1Db250ZXh0KCkKQEAgLTMzMiwxMiArMzMyLDggQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAgIGlmICghcGFyZW50VmlldykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOnBhcmVudFZpZXctPnBs
YXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNE
b21haW5zKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Ci0gICAgICAgIGRvbWFp
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOwotICAgICAgICBmb3Ig
KE5TU3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCi0gICAgICAgICAgICBkb21haW5zLnVuY2hl
Y2tlZEFwcGVuZChkb21haW4pOwotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNl
aXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoZG9tYWlucyk7CisgICAgW2dsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
Rm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5k
aWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMobWFrZVZlY3RvcjxTdHJpbmc+KGRvbWFp
bnMpKTsKICAgICB9XTsKIH0KIApAQCAtMzQ3LDEyICszNDMsOCBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRm
b3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNEb21h
aW5zKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Ci0gICAgICAgIGRvbWFpbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOwotICAgICAgICBmb3IgKE5T
U3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCi0gICAgICAgICAgICBkb21haW5zLnVuY2hlY2tl
ZEFwcGVuZChkb21haW4pOwotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZl
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21h
aW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5kaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMobWFrZVZlY3RvcjxTdHJpbmc+KGRv
bWFpbnMpKTsKICAgICB9XTsKIH0KIApAQCAtMzg3LDcgKzM3OSw3IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSgpCiAgICAgICAgICAgICBjYXRlZ29yeSA9ICJXZWJC
cm93c2VyIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIG1fY3VycmVu
dEludm9jYXRpb24tPmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoY2F0ZWdvcnkpOworICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFdURk1vdmUo
Y2F0ZWdvcnkpKTsKICAgICB9XTsKIH0KIApAQCAtNDk0LDEwICs0ODYsNyBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgZGlzbWlzc2VzQQogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dlZE1lbnVBY3Rpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhY3Rpb25zKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgYXV0byBhY3Rpb25OYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheTxOU1N0
cmluZyAqPiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphY3Rpb25zLnNpemUoKV0pOwotICAgIGZv
ciAoYXV0byYgYWN0aW9uIDogYWN0aW9ucykKLSAgICAgICAgW2FjdGlvbk5hbWVzIGFkZE9iamVj
dDphY3Rpb25dOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBzZXRBbGxvd2Vk
TWVudUFjdGlvbnM6YWN0aW9uTmFtZXMuZ2V0KCldOworICAgIFttX21haW5XZWJWaWV3LT5wbGF0
Zm9ybVZpZXcoKSBzZXRBbGxvd2VkTWVudUFjdGlvbnM6Y3JlYXRlTlNBcnJheShhY3Rpb25zKS5n
ZXQoKV07CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhY3Rpb25zKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRleCBiYzNi
NjM1ZTdhYTBiNjJhMzM4OWY3YzdkMmZkZWEwNGI0YWQ5ODVmLi5lMjk4MzhiYTgyOGZiNGJkOTA4
NTdhYjZiZWYyZmQ0NjU5ZmI0MjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgLSAoTlNBcnJheSAq
KWludGVycG9sYXRlZEV2ZW50czooTlNEaWN0aW9uYXJ5ICopaW50ZXJwb2xhdGlvbnNEaWN0aW9u
YXJ5CiAgICAgd2hpbGUgKHRpbWUgPCBlbmRUaW1lKSB7CiAgICAgICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKm5ld0V2ZW50ID0gW2VuZEV2ZW50IG11dGFibGVDb3B5XTsKICAgICAgICAgZG91Ymxl
IHRpbWVSYXRpbyA9ICh0aW1lIC0gc3RhcnRUaW1lKSAvIChlbmRUaW1lIC0gc3RhcnRUaW1lKTsK
LSAgICAgICAgbmV3RXZlbnRbSElERXZlbnRUaW1lT2Zmc2V0S2V5XSA9IFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOih0aW1lKV07CisgICAgICAgIG5ld0V2ZW50W0hJREV2ZW50VGltZU9mZnNl
dEtleV0gPSBAKHRpbWUpOwogICAgICAgICAKICAgICAgICAgTlNFbnVtZXJhdG9yICpzdGFydEVu
dW1lcmF0b3IgPSBbc3RhcnRUb3VjaGVzIG9iamVjdEVudW1lcmF0b3JdOwogICAgICAgICBOU0Rp
Y3Rpb25hcnkgKnN0YXJ0VG91Y2g7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9Q
bGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggNWUzM2YxZjU2Mzg4MzZiZmI2ZjYwNjQ4YjEwNzk4
ODVhNDY4NGYyMS4uNjQxNzgyY2E5N2UxZGFmYjkwMDkxOWRiMTliMzQ3NGE1NTQzODhlNSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpA
QCAtMjIzLDEwICsyMjMsMTAgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmNoYW5nZVdpbmRvd1Nj
YWxlSWZOZWVkZWQoZmxvYXQgbmV3U2NhbGUpCiAKICAgICAvLyBJbnN0ZWFkIG9mIHJlLWNvbnN0
cnVjdGluZyB0aGUgY3VycmVudCB3aW5kb3csIGxldCdzIGZha2UgcmVzaXplIGl0IHRvIGVuc3Vy
ZSB0aGF0IHRoZSBzY2FsZSBjaGFuZ2UgZ2V0cyBwaWNrZWQgdXAuCiAgICAgZm9yY2VXaW5kb3dG
cmFtZXNDaGFuZ2VkKCk7CisKICAgICAvLyBDaGFuZ2luZyB0aGUgc2NhbGluZyBmYWN0b3Igb24g
dGhlIHdpbmRvdyBkb2VzIG5vdCB0cmlnZ2VyIE5TV2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3Bl
cnRpZXNOb3RpZmljYXRpb24uIFdlIG5lZWQgdG8gc2VuZCB0aGUgbm90aWZpY2F0aW9uIG1hbnVh
bGx5LgotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBub3RpZmljYXRpb25Vc2Vy
SW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OjFdKTsKLSAgICBbbm90aWZpY2F0aW9uVXNlckluZm8gc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOmN1cnJlbnRTY2FsZV0gZm9yS2V5Ok5TQmFja2luZ1Byb3BlcnR5T2xk
U2NhbGVGYWN0b3JLZXldOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6TlNXaW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGll
c05vdGlmaWNhdGlvbiBvYmplY3Q6bV93aW5kb3cgdXNlckluZm86bm90aWZpY2F0aW9uVXNlcklu
Zm8uZ2V0KCldOworICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBAeyBOU0JhY2tpbmdQcm9w
ZXJ0eU9sZFNjYWxlRmFjdG9yS2V5OiBAKGN1cnJlbnRTY2FsZSkgfTsKKyAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOk5TV2luZG93
RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXNOb3RpZmljYXRpb24gb2JqZWN0Om1fd2luZG93IHVz
ZXJJbmZvOnVzZXJJbmZvXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvcmNlV2luZG93
RnJhbWVzQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9U
ZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tCmluZGV4IDhjNTk1NTUxNjE3ZmUwMzk1YWFlNDc3OTc2Yjk3ZjQ4ZmZlNjlm
YjYuLjQ5OGUzNzJmMjA0MzQzMGVjYjllN2UyODkzZTA0MzZkZTZlYTU2MDkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC00NCw3ICs0
NCw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+CiAj
aW1wb3J0IDxtYWNoLW8vZHlsZC5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+
CiAKIEBpbnRlcmZhY2UgTlNTb3VuZCAoKQogKyAodm9pZClfc2V0QWxlcnRUeXBlOihOU1VJbnRl
Z2VyKWFsZXJ0VHlwZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJ
U2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBhNDRjZmQwYzE4ZDU4NGJkNDk1MjJhMWY0OGJkZGM1
NDNjYTk2OGM4Li5lOTU2ZWVkOTJhMGE1ODc4MzY2ZWM1MzAwOTcyMjQxNjk4ODU2NzljIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2
YXRlQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dChKU1N0cmluZ1JlZiB0ZXh0KQogewogICAgIE5T
UGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IE5TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZDsK
LSAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5T
UGFzdGVib2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgZGVjbGFy
ZVR5cGVzOkBbTlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gb3duZXI6bmlsXTsKICAgICBbcGFzdGVi
b2FyZCBzZXRTdHJpbmc6dGV4dC0+c3RyaW5nKCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3Ry
aW5nXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0
VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJL
aXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQppbmRleCAxYjYyODZjZjkzMTIzZWJmOTAxM2M2MTI2
MmExNjYyYjZkOTkwZWMxLi4wZDMwNGZjMjg0YTI4ODNjZmQwZjcyZTJmOTY2MDUwY2YyNWVkYjBm
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZC5tbQpAQCAtODIsNyArODIsNyBAQCArICh2b2lkKXJlbGVhc2VMb2Nh
bFBhc3RlYm9hcmRzCiAvLyBvZiB0aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFz
c2VkIGFyb3VuZAogLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3du
ZXI6KGlkKW5ld093bmVyCiB7Ci0gICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3duZXI6bmV3T3duZXJdOworICAgIHJldHVybiBbc2Vs
ZiBkZWNsYXJlVHlwZXM6QFt0eXBlXSBvd25lcjpuZXdPd25lcl07CiB9CiAKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395873</attachid>
            <date>2020-04-08 14:57:05 -0700</date>
            <delta_ts>2020-04-08 16:02:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210138-20200408145704.patch</filename>
            <type>text/plain</type>
            <size>477721</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NzI5N2EwYzBkYjNlNjEyODVjMTI3ZDdlYzhlZWJjZmUwMjRiZjVjLi4zNmNhY2QxMWI5NmQ5M2Uw
YzRkYzA1MzNiY2JlNDA5ZTE2MTQ2NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0V2l0aG91dENvcHkpOiBVc2UgQCgpLgorICAgICAgICAodmFsdWVUb051bWJlcik6IERp
dHRvLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAoLVtUZXN0T2Jq
ZWN0IGNhbGxiYWNrOl0pOiBVc2UgQFtdLCBAKCksIGFuZCBAe30uCisgICAgICAgICgtW1RleHRY
WVogY2xpY2tdKTogRGl0dG8uCisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOiBEaXR0
by4KKwogMjAyMC0wNC0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIFRocmVhZGluZyBKU0dsb2JhbE9iamVjdCBpbiBSZWdFeHA6Om1hdGNoIHBy
b3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDkyYjYwY2NhM2U0MDJiODcyNWI0MDhjMWIyOWQ5YWRlMWM2NzBmZmYuLmVj
N2JkOTI1YmFhMDU1ODk5NzM5OTk5YjA1M2I2NGM4YTVkYjkxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRp
b21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBWZWN0
b3JDb2NvYS5oLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZTogRGl0dG8uCisKKyAg
ICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVk
ZS4KKyAgICAgICAgKiB3dGYvY29jb2EvVVJMQ29jb2EubW06IERpdHRvLgorCisgICAgICAgICog
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg6IEFkZGVkLiBDb250YWlucyBjcmVhdGVOU0FycmF5IGFu
ZCBtYWtlVmVjdG9yCisgICAgICAgIGZ1bmN0aW9uIHRlbXBsYXRlcyBmb3IgY29udmVydGluZyBO
U0FycmF5IHRvIGFuZCBmcm9tIFZlY3Rvci4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOiBBZGRlZCBtYWtlTlNBcnJheUVsZW1lbnQgYW5kIG1ha2VWZWN0b3JFbGVtZW50CisgICAg
ICAgIGZ1bmN0aW9ucywgbWFraW5nIGNyZWF0ZU5TQXJyYXkgYW5kIG1ha2VWZWN0b3IgY29tcGF0
aWJsZSB3aXRoIFN0cmluZy4KKyAgICAgICAgKiB3dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5t
bToKKyAgICAgICAgKFdURjo6bWFrZU5TQXJyYXlFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChX
VEY6Om1ha2VWZWN0b3JFbGVtZW50KTogQWRkZWQuCisKIDIwMjAtMDQtMDggIEFkcmlhbiBQZXJl
eiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLNF0gTWFrZSBQ
QUw6OnN5c3RlbUJlZXAoKSB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2MDMzMThhZmJkZjRhZDQ1ZjM1
NTMyYjNhNWU3YjRjYzE0MzM1Mi4uOTM0NjlmMTY3NWZhOWM1ZjRiZWZkYmQyMzY0YmVhNjgyOTI3
OGIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1OCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5
LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkZWQgY3Jl
YXRlTlNBcnJheSBhbmQgbWFrZVZlY3Rvci4KKyAgICAgICAgLSBVc2UgY3JlYXRlTlNBcnJheSBh
bmQgbWFrZVZlY3RvcjxTdHJpbmc+IGluIG1hbnkgcGxhY2VzIHdoZXJlIHdlIGNvbnZlcnQKKyAg
ICAgICAgICBiZXR3ZWVuIE5TQXJyYXkgYW5kIFZlY3RvciwgcmVwbGFjaW5nIG11bHRpcGxlIGV4
aXN0aW5nIGZ1bmN0aW9ucyB0aGF0IHdlcmUKKyAgICAgICAgICBkb2luZyB0aGUgc2FtZSBqb2Ig
YmVmb3JlOyBsYXRlciBjYW4gdXNlIHRoZW0gZXZlbiBtb3JlLgorICAgICAgICAtIFVzZSBAW10g
bWFueSBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU0FycmF5LgorICAg
ICAgICAtIFVzZSBAe30gbWFueSBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNl
ZCBOU0RpY3Rpb25hcnkuCisgICAgICAgIC0gVXNlIEAoKSBtYW55IHBsYWNlcyB3aGVyZSB3ZSBj
cmVhdGUgYW4gYXV0b3JlbGVhc2VkIE5TTnVtYmVyLgorCisgICAgICAgICogUGxhdGZvcm1NYWMu
Y21ha2U6IE1vdmVkIEZsb2F0L0ludFJlY3RNYWMubW0gdG8gRmxvYXQvSW50UmVjdENvY29hLm1t
LgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKEFY
QXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKEFY
QXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uXSk6
IFVzZSBAW10uCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9zdHJp
bmdGcm9tU3RhcnRNYXJrZXI6dG9FbmRNYXJrZXI6YXR0cmlidXRlZDpdKTogVXNlIEBbXS4KKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZWxlbWVudHNGb3JSYW5nZTpd
KTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4
dE1hcmtlcnNGb3JSYW5nZTpdKTogVXNlIEBbXS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UmVwbGFjZW1l
bnRDaGFuZ2VEaWN0aW9uYXJ5KTogVXNlIEAoKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246dXNlckluZm86XSk6CisgICAgICAgIFVzZSBAe30uCisgICAgICAgIChtYWtlVmVjdG9y
RWxlbWVudCk6IEFkZWQgb3ZlcmxvYWQgZm9yIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkuCisgICAg
ICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0
ZXJpemVkQXR0cmlidXRlKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVNl
YXJjaEtleT4uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlUZXh0Q3JpdGVyaWFG
b3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAg
ICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmli
dXRlKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5n
U2V0U3R5bGUpOiBVc2UgQCgpLgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1
b3RlTGV2ZWwpOiBVc2UgQCgpLgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5n
TGV2ZWwpOiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdKTogVXNlIEBbXS4KKyAgICAgICAgKGNvbnZlcnRT
dHJpbmdzVG9OU0FycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICBVc2Ug
QCgpLCBAW10sIGFuZCBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0p
OgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IF9jb252ZXJ0VmFsdWVUb09iamNWYWx1
ZTpvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6XSk6CisgICAgICAgIFVzZSBAKCkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dCk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChkZWZhdWx0UGFyYWdy
YXBoU3R5bGUpOiBVc2UgQFtdLgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRy
aWJ1dGVzRm9yRWxlbWVudCk6IFVzZSBAKCkuCisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJv
Y2Vzc01ldGFFbGVtZW50V2l0aE5hbWUpOiBVc2UgQCgpLgorICAgICAgICAoSFRNTENvbnZlcnRl
cjo6X2FkZFRhYmxlRm9yRWxlbWVudCk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBwYWdlL2lvcy9G
cmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JD
dXJyZW50Um9vdCBjb25zdCk6IFVzZSBAW10uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0Lmg6IEFkZGVkIG1ha2VOU0Fy
cmF5RWxlbWVudCBvdmVybG9hZCBzbyB3ZSBjYW4KKyAgICAgICAgY29udmVydCBWZWN0b3I8Rmxv
YXRSZWN0PiBpbnRvIE5TQXJyYXk8TlNWYWx1ZT4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5oOiBTaW1pbGFybHkgZm9yIEludFJlY3QuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9u
cyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Om1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKTogVXNlIEBbXS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
QXNzZXRGb3JVUkwpOiBVc2UgQCgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKTogVXNlIEAoKS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNoZWNrUGxh
eWFiaWxpdHkpOiBVc2UgQFtdLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOiBVc2UgQHt9IGFuZCBAKCkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnZh
bHVlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hOjpjb3B5RnJvbVZhbHVlRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VG9WYWx1ZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VmFsdWVzRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEtleVRpbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weUtleVRpbWVzRnJvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRpbWluZ0Z1bmN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlUaW1p
bmdGdW5jdGlvbnNGcm9tKToKKyAgICAgICAgVXNlIEAoKSwgQFtdLCBtb2Rlcm4gZm9yIGxvb3Bz
LCBhdXRvLCBhbmQgYWxsb2NhdGUgd2l0aCBjYXBhY2l0eS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24pOiBVc2Ug
QCgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2Eu
bW06IE1vdmVkIGZyb20gbWFjL0Zsb2F0UmVjdE1hYy5tbS4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VOU0FycmF5RWxlbWVudCk6IEFkZGVkIHNvIHdlIGNhbiBjb252ZXJ0IFZlY3RvcjxGbG9hdFJl
Y3Q+CisgICAgICAgIGludG8gTlNBcnJheTxOU1ZhbHVlPi4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW06IE1vdmVkIGZyb20gbWFjL0ludFJlY3RNYWMu
bW0uCisgICAgICAgIChXZWJDb3JlOjptYWtlTlNBcnJheUVsZW1lbnQpOiBTaW1pbGFybHkgZm9y
IEludFJlY3QuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KTogVXNlIGNsYW1w
VG8gdG8gYmUgY29uc2lzdGVudCB3aXRoIHdoYXQKKyAgICAgICAgZW5jbG9zaW5nSW50UmVjdChG
bG9hdFJlY3QpIGRvZXMgKHdoaWxlIGZpeGluZyBjaGVjay13ZWJraXQtc3R5bGUgY29tcGxhaW50
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW06Cisg
ICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxheV0pOiBBZGQgV2ViQ29yZSBuYW1lc3BhY2UgcHJl
Zml4OyBuZWVkZWQgZGVwZW5kaW5nIG9uCisgICAgICAgIGhvdyBzb3VyY2VzIGdldCB1bmlmaWVk
IChhbmQgd2FzIGFmZmVjdGluZyBteSBsb2NhbCBidWlsZCB3aGVuIGl0IHRlbXBvcmFyaWx5Cisg
ICAgICAgIGhhZCBhbiBhZGRpdGlvbmFsIHNvdXJjZSBmaWxlKS4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXplOnVzaW5nQWxwaGE6XSk6
IERpdHRvLgorICAgICAgICAoLVtXZWJHTExheWVyIGJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWls
YWJsZVN1cmZhY2VdKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
Rm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVtRm9udE1vZGlmaWNhdGlv
bkF0dHJpYnV0ZXMpOiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
Z2V0VHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSk6IFVzZSBAW10uCisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XQUtWaWV3Lm1tOgorICAgICAgICAoLVtXQUtWaWV3IHN1YnZpZXdzXSk6IERp
dHR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKTogVXNlIG1h
a2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
Z2V0UGF0aG5hbWVzRm9yVHlwZSBjb25zdCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKTogVXNlIG1ha2VWZWN0
b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlw
ZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5oOiBSZW1vdmVkCisgICAgICAgIHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9t
TlNTdHJpbmdBcnJheSwgcmVwbGFjZWQgYnkgbWFrZVZlY3RvcjxTdHJpbmc+CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNv
cmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1
ZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dCk6IFVzZSBAKCkuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24pOiBVc2UgQCgp
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqIF9OdWxsYWJsZSAg
Y29uc3QpOiBVc2UgQCgpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00gY29uc3QpOiBVc2UgQHt9LgorCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOiBV
c2UgQFlFUy9ATk8uCisKIDIwMjAtMDQtMDggIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBNYWtlIG1vcmUgdXNlIG9mIEZyYW1lTG9hZGVyIHBhZ2VJRC9mcmFtZUlEIGdl
dHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOGIxNjgzNjE5NjMxNWFlYzYzYThkMjBkNmZiOTIzMGEyNzJmZDU3
ZC4uYzI0NzhkYTlkZDk3ZjIxOTgyOTgxNzlkMmFlNjU4MmUyNWUyNjc0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNjAgQEAKKzIwMjAtMDQtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQg
TlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06IFJlbW92ZSB1bmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogUGxhdGZv
cm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbTogRGl0dG8uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBsYWNlZE5T
Q29uY3JldGVUYXNrX2xhdW5jaCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChX
ZWJLaXQ6OnJlcGxhY2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25z
X2NvbmZpZ3VyYXRpb25fZXJyb3IpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIFNoYXJl
ZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0Ojp0b1N1cHBvcnRlZE5ldHdvcmtzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3Qp
OiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJFcnJvcnND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTlNFcnJvcik6IFVzZSBAe30uCisKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKTogVXNlIEBbXS4KKyAgICAgICAgKFdlYktpdDo6
UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVi
b2FyZFR5cGVzOjpmb3JJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2Fy
ZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQ
YXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6IERpdHRvLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJz
Ol0pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2dldEFjdGl2ZVBhZ2Vz
T3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRv
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAg
ICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWlu
RnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3Js
ZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25U
aW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDphc3Nv
Y2lhdGVkVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBf
aW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJT
Y3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdh
Y3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0ZWRVUkw6Y29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6
Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0
ZWRVUkw6Y29udGVudFdvcmxkOmRlZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uOl0pOgorICAg
ICAgICBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0dXBQYWdlQ29uZmln
dXJhdGlvbjpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX2NvcnNEaXNhYmxpbmdQYXR0ZXJuc10pOiBVc2UgY3JlYXRlTlNBcnJh
eS4KKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb250
ZW50c09mVXNlckludGVyZmFjZUl0ZW06XSk6IFVzZSBAKCkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW06CisgICAgICAgICgtW19XS0Nv
bnRlbnRSdWxlTGlzdEFjdGlvbiBub3RpZmljYXRpb25zXSk6IFVzZSBjcmVhdGVOU0FycmF5Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tOgor
ICAgICAgICAoLVtfV0tDdXN0b21IZWFkZXJGaWVsZHMgdGhpcmRQYXJ0eURvbWFpbnNdKTogVXNl
IGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW19XS0N1c3RvbUhlYWRlckZpZWxkcyBzZXRUaGly
ZFBhcnR5RG9tYWluczpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM6XSk6IFVzZSBtYWtlVmVjdG9yPFN0
cmluZz4uCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM6XSk6
IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oOgorICAgICAgICAoQVBJOjp0b1N0cmluZ1Zl
Y3Rvcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJj
ZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNv
bnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3Vy
Y2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VV
Ukw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6IFVzZSBAW10u
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6IFVz
ZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1l
c09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKTogVXNlIEBbXS4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbGxlY3RLZXlib2FyZExheW91dENvbW1hbmRzRm9yRXZl
bnQpOiBVc2UgQFtdLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblBy
b2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5Ojps
YXVuY2hQcm9jZXNzKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgIChXZWJLaXQ6OmlzSmF2
YVVwZGF0ZXJVUkwpOiBVc2UgQFtdLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwpOiBVc2UgQHt9IGFuZCBjcmVhdGVOU0FycmF5Lgor
ICAgICAgICAoV2ViS2l0Ojppc1NpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwpOiBVc2UgQFtdLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2Uu
bW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OkhpZFNlcnZpY2UpOiBVc2UgQCgpIGFu
ZCBmaXhlZCBhbiBvdmVyLXJlbGVhc2UgbWlzdGFrZS4KKyAgICAgICAgVGhpcyBjb2RlIHdhcyBk
b2luZyBhZG9wdE5TIG9uIHRoZSByZXN1bHQgb2YgK1tOU051bWJlcldpdGhJbnQ6XSwgd2hpY2gg
aXMgaW5jb3JyZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29u
bmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOiBVc2UgQFtdLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgdGV4dFN0eWxpbmdBdFBvc2l0aW9uOmluRGlyZWN0aW9uOl0pOiBVc2UgQCgpLgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25D
b21tYW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nlc3Npb25X
aXRoUmVnaXN0cmF0aW9uTGlzdHM6c3RhZ2VkRHJhZ1NvdXJjZTpdKToKKyAgICAgICAgRml4ZWQg
YSB3YXN0ZWZ1bCBjYWxsIHRvIGF1dG9yZWxlYXNlIHdoZXJlIHdlIGFyZSBhZGRpbmcgYW4gaXRl
bSB0byBhIGRpY3Rpb25hcnkuIENhbGxpbmcgZ2V0CisgICAgICAgIGlzIG1vcmUgZWZmaWNpZW50
IGFuZCBzdGlsbCBjb3JyZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zp
bGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgaW1hZ2VQaWNr
ZXJDb250cm9sbGVyOmRpZEZpbmlzaFBpY2tpbmdNZWRpYVdpdGhJbmZvOl0pOiBVc2UgQFtdLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbToKKyAg
ICAgICAgKC1bV0tDb2xvck1hdHJpeFZpZXcgaW5pdFdpdGhGcmFtZTpjb2xvck1hdHJpeDpdKTog
UmVtb3ZlZCB1bmVlZGVkIFJldGFpblB0cgorICAgICAgICBsb2NhbCB2YXJpYWJsZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoV2ViS2l0
OjpDb3JyZWN0aW9uUGFuZWw6OnNob3cpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRD
aGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBVc2UgY3JlYXRlTlNB
cnJheS4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKTog
VXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmlu
dGluZ1ZpZXcubW06CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hZGp1c3RQcmludGluZ01h
cmdpbnNGb3JIZWFkZXJBbmRGb290ZXJdKTogVXNlIEAoKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYXJyYXlGcm9tUmVjdHMpOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS1RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmluZ01hdGNo
ZXNXaXRoUmVjdHM6ZGlkV3JhcEFyb3VuZDpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbToK
KyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBub3RpZnlBY2Nlc3Np
YmlsaXR5Q2xpZW50czpdKTogVXNlIEB7fQorICAgICAgICBhbmQgZml4IGEgYnVnIHdoZXJlIHRo
aXMgd2FzIGNyZWF0aW5nIGEgYmFja3dhcmRzIGRpY3Rpb25hcnkuIFNvIHRoaXMgbmV2ZXIKKyAg
ICAgICAgY291bGQgaGF2ZSBiZWVuIHdvcmtpbmcgYmVmb3JlLCBtYWtpbmcgbWUgd29uZGVyIGhv
dyB3ZSB0ZXN0IGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VhcmNoVGhlV2ViKTogVXNlIEBb
XS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUlu
dGVybmFscy5oOiBSZW1vdmVkIHRvTlNBcnJheS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OnRv
TlNBcnJheSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01Ob2RlLm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgdGV4dFJlY3RzXSk6
IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIHRleHRSZWN0c10p
OiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVj
dGVkQnVuZGxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVu
ZGxlUGFyYW1ldGVyKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Om1ha2VSZW5k
ZXJMYXllcik6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0
ZWJvYXJkKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBVc2UgQCgpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGlu
Zyk6IFVzZSBAe30uCisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpyZXN1bWVQYWludGluZyk6IFVzZSBAe30uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgorICAgICAgICBS
ZW1vdmVkIGFuIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tOiBEaXR0by4KKyAgICAgICAg
KC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNd
KTogVXNlIEBbXS4KKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5dKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpnZXRB
Y3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKwog
MjAyMC0wNC0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWxsb3cgdXNlIG9mIHN5c2NhbGwgZnJvbSB0aGUgV2ViQ29udGVudCBzYW5kYm94CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggODNhMGQ5NWM0ODIwNjcxZjczYjYxYmE3YjY2MDU2
MGJkNGIxYTZkZi4uZjY2N2Q5OWNjYTZlNTBjNWI0NzdlM2ZjMDQ5YTk2ZTE2ZjJmOTQzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTA3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5
IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5TTnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVD
bGllbnRJT1M6OnJ1bk9wZW5QYW5lbCk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJWaXNp
YmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVz
Ol0pOgorICAgICAgICBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmg6CisgICAgICAgIEFkZGVkICNpZiBzbyB0
aGF0IHRoaXMgY29ycmVjdGx5IGRvZXNuJ3QgY29tcGlsZSBhbnl0aGluZyBvbiBNYWMuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdJT1MubW06CisgICAgICAgICgrW1dlYlBERlZpZXcg
c3VwcG9ydGVkTUlNRVR5cGVzXSk6IFVzZSBAW10uCisKIDIwMjAtMDQtMDQgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgbGl2ZSByYW5nZXMgaW4g
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NTgyYzA0ZTQ0NDcxNmFhYzM0ZDM3YWU2YTMxM2M4YmM1NjQ2NDYzOC4uODU2OTNlYTliNzEwMjA4
NDBhZTI0MGU0ZWE2MzhlMjM4MmRkOTVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1NyBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFu
ZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKGtpdCk6
IERlbGV0ZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBWZWN0b3I8SW50UmVjdD4uCisgICAgICAgICgt
W0RPTU5vZGUgdGV4dFJlY3RzXSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtET01S
YW5nZSB0ZXh0UmVjdHNdKTogRGl0dG8uCisKKyAgICAgICAgKiBET00vRXhjZXB0aW9uSGFuZGxl
cnMubW06CisgICAgICAgIChyYWlzZURPTUVycm9yRXhjZXB0aW9uKTogVXNlIEAoKS4KKworICAg
ICAgICAqIEhpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tOgorICAgICAgICAoLVtXZWJCYWNr
Rm9yd2FyZExpc3QgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uXSk6IFVzZSBAe30uCisKKyAgICAg
ICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgrW1dlYkhpc3RvcnlQcml2YXRl
IGluaXRpYWxpemVdKTogVXNlIEB7fS4KKyAgICAgICAgKC1bV2ViSGlzdG9yeSBfc2VuZE5vdGlm
aWNhdGlvbjplbnRyaWVzOl0pOiBVc2UgQHt9LgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb246XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgtW1dl
Ykhpc3RvcnlJdGVtIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKTogVXNlIGNyZWF0ZU5TQXJy
YXkgYW5kIEAoKS4KKworICAgICAgICAqIEhpc3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubToKKyAg
ICAgICAgKCtbV2ViVVJMc1dpdGhUaXRsZXMgYXJyYXlXaXRoSUZVUkxzV2l0aFRpdGxlc1Bib2Fy
ZFR5cGVdKTogVXNlIEBbXS4KKyAgICAgICAgKCtbV2ViVVJMc1dpdGhUaXRsZXMgd3JpdGVVUkxz
OmFuZFRpdGxlczp0b1Bhc3RlYm9hcmQ6XSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBNaXNjL1dl
YkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJDYWNoZSBzdGF0aXN0aWNzXSk6IFVzZSBAW10sIEB7
fSwgYW5kIEAoKS4KKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAg
ICAoK1tXZWJDb3JlU3RhdGlzdGljcyBtZW1vcnlTdGF0aXN0aWNzXSk6IERpdHRvLgorCisgICAg
ICAgICogTWlzYy9XZWJLaXRFcnJvcnMubToKKyAgICAgICAgKC1bTlNFcnJvciBfd2Via2l0X2lu
aXRXaXRoRG9tYWluOmNvZGU6VVJMOl0pOiBVc2UgQHt9LgorICAgICAgICAoK1tOU0Vycm9yIF9y
ZWdpc3RlcldlYktpdEVycm9yc10pOiBVc2UgQCgpLgorICAgICAgICAoLVtOU0Vycm9yIF9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTpjb250ZW50VVJMOnBsdWdpblBhZ2VVUkw6cGx1Z2luTmFtZTpN
SU1FVHlwZTpdKTogVXNlIEAoKS4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRy
YXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0ZXh0Q29s
b3I6XSk6IFVzZSBAe30uCisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfd2lkdGhXaXRoRm9udDpd
KTogVXNlIEB7fS4KKworICAgICAgICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbTog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW06CisgICAgICAgICgrW05TUGFzdGVib2FyZCBfd2ViX2RyYWdUeXBlc0ZvclVS
TF0pOiBVc2UgQFtdLgorICAgICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl93cml0ZVVSTDphbmRU
aXRsZTp0eXBlczpdKTogVXNlIEBbXS4KKyAgICAgICAgKCtbTlNQYXN0ZWJvYXJkIF93ZWJfc2V0
RmluZFBhc3RlYm9hcmRTdHJpbmc6d2l0aE93bmVyOl0pOiBVc2UgQFtdLgorCisgICAgICAgICog
TWlzYy9XZWJOU1VSTEV4dHJhcy5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0KTog
VXNlIEB7fS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5Lm1tOgorICAgICAgICAoV0tQQ0lkZW50aWZpZXJJbmZvKTogVXNlIEAoKS4KKworICAgICAg
ICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjphZGRWYWx1ZVRvQXJyYXkp
OiBVc2UgQCgpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbTogRGl0dG8uCisKKyAgICAgICAgKiBQbHVnaW5zL1dl
YlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250YWluZXJD
aGVjayBfYWN0aW9uSW5mb3JtYXRpb25XaXRoVVJMOl0pOiBVc2UgQHt9LgorCisgICAgICAgICog
UGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbToKKyAgICAgICAgKCtbV2ViUGx1Z2luRGF0YWJh
c2UgX2RlZmF1bHRQbHVnSW5QYXRoc10pOiBVc2UgQFtdLgorCisgICAgICAgICogU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkYXRh
YmFzZXNXaXRoT3JpZ2luOl0pOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6
c2hvdyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9D
b25zb2xlKTogVXNlIEAoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKGF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lv
bik6IFVzZSBAKCkuCisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldEd1ZXNzZXNGb3JXb3Jk
KTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFj
dGlvbkRpY3Rpb25hcnkgY29uc3QpOiBVc2UgQCgpLgorICAgICAgICAoa2l0KTogRGVsZXRlZCBv
dmVybG9hZCB0aGF0IHRha2VzIFZlY3RvcjxTdHJpbmc+LgorICAgICAgICAocGx1Z2luVmlldyk6
IFVzZSBAe30uCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKTog
VXNlIGNyZWF0ZU5TQXJyYXksIEB7fSwgYW5kIEAoKS4KKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbToKKyAg
ICAgICAgKC1bV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWVzOl0pOiBV
c2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoLVtXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lciBjaG9vc2VGaWxlbmFtZTpkaXNwbGF5U3RyaW5nOmljb25JbWFnZTpdKTogVXNlIEBbXS4K
KyAgICAgICAgKC1bV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWVzOmRp
c3BsYXlTdHJpbmc6aWNvbkltYWdlOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW06Cisg
ICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFuZGxlU2VsZWN0aW9uU2Vy
dmljZUNsaWNrKToKKyAgICAgICAgQ29tbWVudCBvdXQgYW4gdW51c2VkIGFyZ3VtZW50LgorCisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3JlY3Rz
Rm9yUmFuZ2U6XSk6IFVzZSBjcmVhdGVOU0FycnJheS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2Nv
bXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjpwYWdlU2l6ZTpdKTogVXNlIGNyZWF0
ZU5TQXJyYXkgYW5kIEBbXS4KKyAgICAgICAgKC1bV2ViRnJhbWUgY2hpbGRGcmFtZXNdKTogVXNl
IEBbXS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgrW1dl
YkhUTUxWaWV3IF9zZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXNdKTogVXNlIEBbXS4KKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpd
KTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcga25vd3NQYWdlUmFuZ2U6XSk6IFVz
ZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgY29weUZvbnQ6XSk6IFVzZSBA
W10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pbnRlcnByZXRLZXlFdmVudDpzYXZpbmdDb21t
YW5kczpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2VsZWN0aW9uVGV4dFJl
Y3RzXSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtXZWJIVE1MVmlldyByZWN0c0Zv
clRleHRNYXRjaGVzXSk6IFVzZSBjcmVhdGVOU0FycmF5IGFuZCBAW10uCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUu
CisgICAgICAgICgrW1dlYlBERlJlcHJlc2VudGF0aW9uIHBvc3RTY3JpcHRNSU1FVHlwZXNdKTog
VXNlIEBbXS4KKyAgICAgICAgKCtbV2ViUERGUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5
cGVzXSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAg
ICAgICgtW1dlYlBERlZpZXcgZWxlbWVudEF0UG9pbnQ6XSk6IFVzZSBAe30gYW5kIEAoKS4KKyAg
ICAgICAgKC1bV2ViUERGVmlldyB2aWV3U3RhdGVdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2Vi
UERGVmlldyBzZWxlY3Rpb25UZXh0UmVjdHNdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViUERG
VmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25dKTogVXNlIEBbXS4KKyAgICAgICAgKC1b
V2ViUERGVmlldyBfbWVudUl0ZW1zRnJvbVBERktpdEZvckV2ZW50Ol0pOiBVc2UgQCgpLgorICAg
ICAgICAoLVtXZWJQREZWaWV3IF9vcGVuV2l0aEZpbmRlcjpdKTogVXNlIEB7fSBhbmQgQCgpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJl
ZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0VW5zaWduZWRJbnRWYWx1ZTpmb3JLZXk6XSk6IFVzZSBAKCkuCisgICAgICAgICgrW1dl
YlByZWZlcmVuY2VzIF9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rp
bmddKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5Ol0pOiBVc2UgQHt9IGFuZCBAKCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNl
ZCk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyIF9wbGFjZVBv
cHVwV2luZG93Ol0pOiBVc2UgQHt9LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IFVzZSBtYWtlVmVjdG9y
PFN0cmluZz4uCisgICAgICAgICgtW1dlYlZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRl
bTpdKTogVXNlIEAoKS4KKyAgICAgICAgKHRvU3RyaW5nVmVjdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0
ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAg
IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHls
ZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0
ZWRGcmFtZXM6XSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgt
W1dlYlZpZXcgX2VsZW1lbnRBdFdpbmRvd1BvaW50Ol0pOiBVc2UgQHt9LgorICAgICAgICAoLVtX
ZWJWaWV3IHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbl0pOiBVc2UgQFtdLgorICAgICAgICAo
LVtXZWJWaWV3IHBhc3RlYm9hcmRUeXBlc0ZvckVsZW1lbnQ6XSk6IFVzZSBAW10uCisgICAgICAg
ICgtW1dlYlZpZXcgcmVjdHNGb3JUZXh0TWF0Y2hlc10pOiBVc2UgQFtdLgorICAgICAgICAoLVtX
ZWJWaWV3IF9zZWFyY2hXaXRoR29vZ2xlRnJvbU1lbnU6XSk6IFVzZSBAW10uCisgICAgICAgICgt
W1dlYlZpZXcgX3NldEZvbnRXaGl0ZWxpc3Q6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisK
IDIwMjAtMDQtMDggIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI1OTcwOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZS5tbQppbmRleCBmNjBkMWZiMzNlNDZjNTM3MzNjMDkwMzEyMzlkOGY2OWI0YWIxM2Q4Li5j
OTFlNmVhMjc4YWIxOTZhNjFlYmZmYWM0YzhjMDgwNGRmNzMxMTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC00Niw3ICs0Niw2IEBACiAjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1w
b3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgpAQCAtNzQyLDcgKzc0MSw3IEBAIHN0YXRpYyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFz
ayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNHbG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAg
ICAgICAvLyBOb3JtYWxpemUgdGhlIG51bWJlciwgc28gaXQgd2lsbCB1bmlxdWUgY29ycmVjdGx5
IGluIHRoZSBoYXNoIG1hcCAtCiAgICAgICAgICAgICAvLyBpdCdzIG5pY2VyIG5vdCB0byBsZWFr
IHRoaXMgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsIQogICAgICAgICAgICAgdmFsdWUg
PSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFs
dWUsIDApKTsKLSAgICAgICAgICAgIHByaW1pdGl2ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOkpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgMCldOworICAgICAgICAgICAgcHJp
bWl0aXZlID0gQChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIDApKTsKICAgICAgICAg
fSBlbHNlIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CiAgICAgICAgICAg
ICAvLyBXb3VsZCBiZSBuaWNlIHRvIHVuaXF1ZSBzdHJpbmdzLCB0b28uCiAgICAgICAgICAgICBh
dXRvIGpzc3RyaW5nID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1
ZSwgMCkpOwpAQCAtODM3LDcgKzgzNiw3IEBAIGlkIHZhbHVlVG9OdW1iZXIoSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIHZhbHVlKSA/IEBZRVMgOiBATk87
CiAKICAgICBkb3VibGUgcmVzdWx0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCBl
eGNlcHRpb24pOwotICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToqZXhjZXB0
aW9uID8gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSA6IHJlc3VsdF07
CisgICAgcmV0dXJuIEAoKmV4Y2VwdGlvbiA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkgOiByZXN1bHQpOwogfQogCiBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFsQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggZWZhZjMw
ZGQ0NGU2MmMzZjkxN2ZiNmJlZTZlYjFiOGYwYWM2MTY1Ni4uNDIyY2JhNTdmOTQxNTA3NzMwMjc0
NDI5YTE4YzQ0MTg5ZDk3MzFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIC0gKE5TU3RyaW5nICopdGVzdEFyZ3VtZW50
VHlwZXNXaXRoSW50OihpbnQpaSBkb3VibGU6KGRvdWJsZSlkIGJvb2xlYW46KEJPT0wpYiBzCiB9
CiAtICh2b2lkKWNhbGxiYWNrOihKU1ZhbHVlICopZnVuY3Rpb24KIHsKLSAgICBbZnVuY3Rpb24g
Y2FsbFdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoSW50OjQyXV1dOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpAW0AoNDIp
XV07CiB9CiAtICh2b2lkKWJvZ3VzQ2FsbGJhY2s6KHZvaWQoXikoaW50KSlmdW5jdGlvbgogewpA
QCAtMTk5LDcgKzE5OSw3IEBAIC0gKHZvaWQpY2xpY2sKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Ci0gICAgW2Z1bmN0
aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07CisgICAgW2Z1bmN0aW9uIGNh
bGxXaXRoQXJndW1lbnRzOkBbXV07CiB9CiBAZW5kCiAKQEAgLTExNzEsMTAgKzExNzEsOCBAQCBz
dGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAgICAgICAgIGNvbnRleHRbQCJoYW5k
bGVUaGVEaWN0aW9uYXJ5Il0gPSBeKE5TRGljdGlvbmFyeSAqZGljdCkgewogICAgICAgICAgICAg
TlNEaWN0aW9uYXJ5ICpleHBlY3RlZERpY3QgPSBAewotICAgICAgICAgICAgICAgIEAiZm9vIiA6
IFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdLAotICAgICAgICAgICAgICAgIEAiYmFyIiA6IEB7
Ci0gICAgICAgICAgICAgICAgICAgIEAiYmF6IjogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml0K
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQCJmb28iOiBAKDEpLAorICAgICAg
ICAgICAgICAgIEAiYmFyIjogQHsgQCJiYXoiOiBAKDIpIH0KICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICBjaGVja1Jlc3VsdChAInJlY3Vyc2l2ZWx5IGNvbnZlcnQgbmVzdGVkIGRpY3Rpb25h
cmllcyIsIFtkaWN0IGlzRXF1YWxUb0RpY3Rpb25hcnk6ZXhwZWN0ZWREaWN0XSk7CiAgICAgICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTI1ZTkz
NGExMTYyMWQzODg4NWM1MDgwN2JjYWE4OTdjMjlhODhjLi5lNDNiM2I0YzJhOThmZjVhYTUzZTY4
NDgxYzNhMzEyNDZjNjA2ZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ3Nyw2ICs0NzcsNyBAQAogCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyog
RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8q
IFR5cGVDYXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlQ2FzdHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIy
IC8qIFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzI0MTY1NzI0M0JDMkU1MDAz
MkZBQUUgLyogVmVjdG9yQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yQ29jb2EuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRDYzMTkxRkNCNkFCOTAwMzJFQ0Q2IC8qIFN0
cmluZ0hhc2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdIYXNo
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4NEI3M0UyMERFQTI4NDAwNUI3
M0IyIC8qIENGWFBDQnJpZGdlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGWFBDQnJpZGdlU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTdHJpbmdWaWV3Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTI0LDYgKzE1MjUsNyBAQAogCQkJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlu
a2luZy5oICovLAogCQkJCUVCNjFFREM2MjQwOUNDQzAwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5n
Q29jb2EuY3BwICovLAogCQkJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5t
bSAqLywKKwkJCQk5MzI0MTY1NzI0M0JDMkU1MDAzMkZBQUUgLyogVmVjdG9yQ29jb2EuaCAqLywK
IAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovLAog
CQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNmU4
NjMzMmNlMjNmZjJlMzNmYzE2MzY2NTI3MzJkODA1OWY2ZGVkYi4uYjc0YTI3NzI4ZWM1NTAwNzU1
ODdlMGE0ODI1YzIxODFmYjk1OTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4
LDYgKzE4LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgY29jb2EvTlNV
UkxFeHRyYXMuaAogICAgIGNvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLmgKICAg
ICBjb2NvYS9Tb2Z0TGlua2luZy5oCisgICAgY29jb2EvVmVjdG9yQ29jb2EuaAogCiAgICAgZGFy
d2luL1dlYWtMaW5raW5nLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNV
UkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQppbmRleCAz
YTRmY2E5OTFmNDZiZmZiYTc0MmQ2YjU5MTNjZGRkODViMWRlNTA1Li40N2RlZTYyOTU2YTMzNDRm
Njk1MTM4ZmU2ODNiODRiNmM3ODMxMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5t
bQpAQCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCAiTlNVUkxFeHRyYXMuaCIKIAogI2ltcG9ydCA8
d3RmL0Z1bmN0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9VUkxIZWxwZXJzLmg+CiAjaW1wb3J0
IDx3dGYvVVJMUGFyc2VyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCmluZGV4IDIzZWU5ZTZl
OGQwYzEyOWNlNTNkZWM5YTRmODM3NDc2NDQwZTA2OGMuLjZiZGFlODBiZDY3NjE2YTE0ODkyMWJm
ZjYzOTBiZDAxM2JhMTlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAotI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+CiAj
aW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaCBi
L1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYyOWMyZjNj
MTg0MGVlMDFjZTA0YTk2ZTdiZjcyODllM2I0NjlkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBTcGVjaWFsaXpl
IHRoZSBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnMgYnkgb3ZlcmxvYWRpbmcgdGhlIG1ha2VO
U0FycmF5RWxlbWVudAorLy8gZnVuY3Rpb25zIGFuZCBtYWtlVmVjdG9yRWxlbWVudCBmdW5jdGlv
bnMuIFRoZSBtYWtlTlNBcnJheUVsZW1lbnQgZnVuY3Rpb24gdGFrZXMKKy8vIGEgY29uc3QmIHRv
IGEgdmVjdG9yIGVsZW1lbnQgYW5kIGNhbiByZXR1cm4gZWl0aGVyIGEgUmV0YWluUHRyPGlkPiBv
ciBhbiBpZAorLy8gaWYgdGhlIHZhbHVlIGlzIGF1dG9yZWxlYXNlZC4gVGhlIG1ha2VWZWN0b3JF
bGVtZW50IGZ1bmN0aW9uIHRha2VzIGFuIGlnbm9yZWQKKy8vIHBvaW50ZXIgdG8gdGhlIHZlY3Rv
ciBlbGVtZW50IHR5cGUsIG1ha2luZyBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwIHdvcmssIGFu
ZCBhbgorLy8gaWQgZm9yIHRoZSBhcnJheSBlbGVtZW50LCBhbmQgcmV0dXJucyBhbiBPcHRpb25h
bDxUPiBvZiB0aGUgdGhlIHZlY3RvciBlbGVtZW50LAorLy8gYWxsb3dpbmcgdXMgdG8gZmlsdGVy
IG91dCBhcnJheSBlbGVtZW50cyB0aGF0IGFyZSBub3Qgb2YgdGhlIGV4cGVjdGVkIHR5cGUuCisv
LworLy8gICAgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgVmVjdG9yRWxl
bWVudFR5cGUmIHZlY3RvckVsZW1lbnQpOworLy8gICAgICAgIC1vci0KKy8vICAgIGlkIG1ha2VO
U0FycmF5RWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlwZSYgdmVjdG9yRWxlbWVudCk7Cisv
LworLy8gICAgT3B0aW9uYWw8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3JFbGVtZW50KGNv
bnN0IFZlY3RvckVsZW1lbnRUeXBlKiwgaWQgYXJyYXlFbGVtZW50KTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yVHlwZT4gUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJyYXkoY29uc3Qg
VmVjdG9yVHlwZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+IFZlY3Rv
cjxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICopOworCisvLyBJbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBmdW5jdGlvbiB0ZW1wbGF0ZXMgYWJvdmUuCisKK3RlbXBs
YXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0FycmF5
KGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikKK3sKKyAgICBhdXRvIHNpemUgPSB2ZWN0b3Iuc2l6
ZSgpOworICAgIGF1dG8gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6c2l6ZV0pOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IHZlY3RvcikK
KyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpnZXRQdHIobWFrZU5TQXJyYXlFbGVtZW50KGVsZW1l
bnQpKV07CisgICAgcmV0dXJuIGFycmF5OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JF
bGVtZW50VHlwZT4gVmVjdG9yPFZlY3RvckVsZW1lbnRUeXBlPiBtYWtlVmVjdG9yKE5TQXJyYXkg
KmFycmF5KQoreworICAgIFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gdmVjdG9yOworICAgIHZl
Y3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LmNvdW50KTsKKyAgICBmb3IgKGlkIGVs
ZW1lbnQgaW4gYXJyYXkpIHsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IFZlY3RvckVsZW1lbnRU
eXBlKiB0eXBlZE51bGwgPSBudWxscHRyOworICAgICAgICBpZiAoYXV0byB2ZWN0b3JFbGVtZW50
ID0gbWFrZVZlY3RvckVsZW1lbnQodHlwZWROdWxsLCBlbGVtZW50KSkKKyAgICAgICAgICAgIHZl
Y3Rvci51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdmVjdG9yRWxlbWVudCkpOworICAgIH0KKyAg
ICByZXR1cm4gdmVjdG9yOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpt
YWtlVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYzJhZGZiZTY4MDI1YWVhYWZm
ZDZlNjZkM2YxYTBjNzk0YmQ0ZGIwYy4uYTIzNzBjNzliNjhiNDIzMDY0NmFlNDdkNGFmYzNlNmU1
NTQ0YTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00NTQsNiArNDU0LDEzIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJpbmc+IHsK
ICAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OyB9CiB9OwogCisjaWZk
ZWYgX19PQkpDX18KKworV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxpZD4gbWFrZU5TQXJy
YXlFbGVtZW50KGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFN0
cmluZz4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgU3RyaW5nKiwgaWQpOworCisjZW5kaWYKKwog
Ly8gRGVmaW5pdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAogaW5saW5lIFN0cmluZzo6U3Ry
aW5nKFN0cmluZ0ltcGwmIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
Y29jb2EvU3RyaW5nQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0Nv
Y29hLm1tCmluZGV4IDFiZmM1MjhhMjFmYTU0NGFiNWM0MzYzNDQ2MzU0NmViNjk4Yjg3N2MuLjk1
OGJjZjA3Yjg2NjQ3MDQxYjMzNjI2MTA4Yzg3NmUzZDk0NjcyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQpAQCAtNDgsNCArNDgsMTYgQEAgU3RyaW5nOjpTdHJp
bmcoTlNTdHJpbmcgKnN0cikKICAgICB9CiB9CiAKK1JldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlF
bGVtZW50KGNvbnN0IFN0cmluZyYgdmVjdG9yRWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRO
UygoX19icmlkZ2VfdHJhbnNmZXIgaWQpdmVjdG9yRWxlbWVudC5jcmVhdGVDRlN0cmluZygpLmxl
YWtSZWYoKSk7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3Qg
U3RyaW5nKiwgaWQgYXJyYXlFbGVtZW50KQoreworICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tp
bmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4geyB7IGFycmF5RWxlbWVudCB9IH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKaW5kZXggYzIzZTQ5NDcwNDhmOThmY2Y0OGUxYWEzY2RmMGE1YWI5MDkyMmM1Zi4u
NjIyYjQzYWQwOWZjNDM3NDJkNGI1ZTFmYmQzYTg2NzM0MmMwNTFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTMwNywxNiArMzA3LDE4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCiAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCi0gICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29j
b2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNv
cmVUZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29h
Lm1tCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCkBAIC0zMzUsNyArMzM3LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRmxvYXRQb2ludE1hYy5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RN
YWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzQzLDcgKzM0NCw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFj
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lu
dFJlY3RNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50U2l6ZU1hYy5tbQogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBmZmM2MWI0ODY1NTIwZGZhNzdlZGE0YmE0ZDA5NzYyZDYyZWViMzE2Li4w
YmFmZDM2ZmE2NTg3NzYwMjM1OGY3ZmVmOWE3ZGI1NDJjMWQ2YmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTMxNSw2ICszMTUsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdp
c3RyeS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCitwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KQEAgLTMyNCw2ICszMjUs
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2VQb29sQ29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNv
Y29hLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVy
RGVsZWdhdGUubW0KQEAgLTM2Nyw3ICszNjksNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRSZWN0TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXpl
TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTM3NSw3ICszNzYsNiBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ljb25NYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW50UmVjdE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFNpemVNYWMubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYWQ1M2NmNWQyZDc3OGZkOGM2
YmQ2YWEyNjZlMGU3MTg0YjAxNzA1Li43YWNkYzRkYzJjNjEwZDU5MTE1NzJmZGYzNzY5YmNmYTQ3
NjQ4NWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMjc2OSwxMSArMTI3NjksMTEgQEAKIAkJQjI3NTM1NDgwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRTaXplSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0QTBC
MDUzODE0MDAyQ0U2NEYgLyogQ29sb3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ29sb3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNzUzNTRCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0UG9pbnRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmxvYXRS
ZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjc1MzU0QzBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRmxvYXRSZWN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyNzUzNTREMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmxvYXRTaXplTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1h
Z2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW1hZ2VN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTRGMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRQb2ludE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBJbnRQb2ludE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3
NTM1NTAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50UmVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjI3NTM1NTAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnRSZWN0Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRTaXplTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEludFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTUyMEIw
NTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NTMw
QjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MTQ3LDcgKzI1MTQ3
LDYgQEAKIAkJCQk0OUFGMkQ2QjE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmNwcCAqLywKIAkJCQkyREU3MDAyMjE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmggKi8sCiAJCQkJQjI3NTM1NEIwQjA1MzgxNDAwMkNFNjRGIC8qIEZs
b2F0UG9pbnRNYWMubW0gKi8sCi0JCQkJQjI3NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UmVjdE1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXpl
TWFjLm1tICovLAogCQkJCUIyQUZGQzc0MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FjaGVNYWMu
bW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwICovLApAQCAtMjUxNTYsNyArMjUxNTUsNiBAQAogCQkJCUIyNzUzNThEMEIwNTNB
NjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tICovLAogCQkJCUIyNzUzNTRFMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZU1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2NEYgLyogSW50
UG9pbnRNYWMubW0gKi8sCi0JCQkJQjI3NTM1NTAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RN
YWMubW0gKi8sCiAJCQkJQjI3NTM1NTEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVNYWMubW0g
Ki8sCiAJCQkJMkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJCIC8qIFBERkRvY3VtZW50SW1hZ2VNYWMu
bW0gKi8sCiAJCQkJMTYzRTg4RjUxMThBMzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29y
ZVRleHQuY3BwICovLApAQCAtMjU1MTMsNiArMjU1MTEsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhE
MkFBNDIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKKwkJCQlCMjc1MzU0QzBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCiAJCQkJMUMzOTY5Q0YxQjc0
MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLywKIAkJCQlDMjQ1OEU2MTFG
RTg5NzlFMDA1OTQ3NTkgLyogRm9udENhY2hlQ29yZVRleHQuaCAqLywKIAkJCQlCMkFGRkM3ODBE
MDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2NvYS5tbSAqLywKQEAgLTI1NTI1LDYgKzI1
NTI0LDcgQEAKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVW
Q1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhF
VkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKKwkJCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyog
SW50UmVjdENvY29hLm1tICovLAogCQkJCTJEMEI0QUE5MThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1
cmZhY2UuaCAqLywKIAkJCQkyRDBCNEFBQTE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1t
ICovLAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2Eu
bW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDE0OWE2
ZjI2OTg3MDNlOTNhYzcxMTYxZjkyM2MwZTlhNGYxZGE4YTYuLmFkNDcxY2MyODY4ZTIzMGFjYzQ2
MWIzMzVmMzQ0M2I1ZjNmNzNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCkBAIC0yMTM2LDcgKzIxMzYsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmlu
Z1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyUwogICAg
IGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRlcmVyKTsKICAgICAKICAgICBp
ZiAocXVvdGVMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNz
aWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHZhbHVlOltOU051bWJlciBudW1iZXJXaXRoSW50
OnF1b3RlTGV2ZWxdIHJhbmdlOnJhbmdlXTsKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmli
dXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHZhbHVlOkAocXVvdGVMZXZl
bCkgcmFuZ2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHJhbmdlOnJhbmdlXTsK
IH0KQEAgLTIxNTAsNyArMjE1MCw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0
SGVhZGluZ0xldmVsKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpCiAgICAgaW50
IHBhcmVudEhlYWRpbmdMZXZlbCA9IHBhcmVudE9iamVjdC0+aGVhZGluZ0xldmVsKCk7CiAgICAg
CiAgICAgaWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIHZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoSW50OnBhcmVudEhlYWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAgICAgICBb
YXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5IZWFkaW5nTGV2ZWwg
dmFsdWU6QChwYXJlbnRIZWFkaW5nTGV2ZWwpIHJhbmdlOnJhbmdlXTsKICAgICBlbHNlCiAgICAg
ICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRp
bmdMZXZlbCByYW5nZTpyYW5nZV07CiB9CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCAtIChOU0FycmF5
ICopdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uCiAgICAgaWYgKCFzdGFydE1hcmtlciB8fCAh
ZW5kTWFya2VyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0TWFya2VyLCBlbmRNYXJrZXIsIG5pbF07CisgICAgcmV0
dXJuIEBbc3RhcnRNYXJrZXIsIGVuZE1hcmtlcl07CiB9CiAKIC0gKFdlYkFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyICopdGV4dE1hcmtlckZvclBvc2l0aW9uOihOU0ludGVnZXIpcG9zaXRpb24KQEAg
LTI0NjgsNyArMjQ2OCw3IEBAIC0gKGlkKV9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6KFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKilzdGFydE1hcmtlciB0b0VuZE1hcmtlCiAgICAgaWYgKCFzdGFy
dE1hcmtlciB8fCAhZW5kTWFya2VyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIE5T
QXJyYXkqIGFycmF5ID0gW3NlbGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOnN0YXJ0TWFya2VyLCBlbmRNYXJrZXIsIG5pbF0gYXR0cmlidXRlZDph
dHRyaWJ1dGVkXTsKKyAgICBOU0FycmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9yVGV4
dE1hcmtlcnM6QFtzdGFydE1hcmtlciwgZW5kTWFya2VyXSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRd
OwogICAgIENsYXNzIHJldHVybkNsYXNzID0gYXR0cmlidXRlZCA/IFtOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nIGNsYXNzXSA6IFtOU011dGFibGVTdHJpbmcgY2xhc3NdOwogICAgIGlkIHJldHVy
blZhbHVlID0gW1soTlNTdHJpbmcgKilbcmV0dXJuQ2xhc3MgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKICAgICAKQEAgLTI1ODYsNyArMjU4Niw3IEBAIC0gKE5TQXJyYXkgKillbGVtZW50c0Zv
clJhbmdlOihOU1JhbmdlKXJhbmdlCiAgICAgaWYgKCFzdGFydE1hcmtlciB8fCAhZW5kTWFya2Vy
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIE5TQXJyYXkqIGFycmF5ID0gW3NlbGYg
YXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0
TWFya2VyLCBlbmRNYXJrZXIsIG5pbF0gYXR0cmlidXRlZDpOT107CisgICAgTlNBcnJheSogYXJy
YXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOkBbc3RhcnRNYXJrZXIsIGVuZE1h
cmtlcl0gYXR0cmlidXRlZDpOT107CiAgICAgTlNNdXRhYmxlQXJyYXkqIGVsZW1lbnRzID0gW05T
TXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBmb3IgKGlkIGVsZW1lbnQgaW4gYXJyYXkpIHsKICAg
ICAgICAgaWYgKCFbZWxlbWVudCBpc0tpbmRPZkNsYXNzOltBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBjbGFzc11dKQpAQCAtMjg1Miw3ICsyODUyLDcgQEAgLSAoTlNBcnJheSAqKXRleHRNYXJr
ZXJzRm9yUmFuZ2U6KFJlZlB0cjxSYW5nZT4pcmFuZ2UKICAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogZW5kID0gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0T3JFbmRUZXh0
TWFya2VyRm9yUmFuZ2U6cmFuZ2UgaXNTdGFydDpOTyBjYWNoZTpzZWxmLmF4QmFja2luZ09iamVj
dC0+YXhPYmplY3RDYWNoZSgpXTsKICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnQsIGVu
ZCwgbmlsXTsKKyAgICByZXR1cm4gQFtzdGFydCwgZW5kXTsKIH0KIAogLSAoTlNTdHJpbmcgKilh
Y2Nlc3NpYmlsaXR5RXhwYW5kZWRUZXh0VmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDY4ODc4MmNmZGVkN2Fl
NTM3ZDRhNzRiMjZiMmNhODQ5NTIxNDEzMmIuLmIxNWNkMDU4MDUyZTZiZDZjZjM0ZDE1MzRmYWZi
ODExZmNkMGEzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHN0YXRpYyBOU0RpY3Rp
b25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoQVhDb3JlT2JqZWN0JiBvYmpl
Y3QsIEFYVGV4CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY2hhbmdlID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdOwogICAgIFtjaGFuZ2Ugc2V0T2Jq
ZWN0OkAocGxhdGZvcm1FZGl0VHlwZUZvcldlYkNvcmVFZGl0VHlwZSh0eXBlKSkgZm9yS2V5Ok5T
QWNjZXNzaWJpbGl0eVRleHRFZGl0VHlwZV07CiAgICAgaWYgKGxlbmd0aCA+IEFYVmFsdWVDaGFu
Z2VUcnVuY2F0aW9uTGVuZ3RoKSB7Ci0gICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoSW50Omxlbmd0aF0gZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VW
YWx1ZUxlbmd0aF07CisgICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OkAobGVuZ3RoKSBmb3JLZXk6
TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlTGVuZ3RoXTsKICAgICAgICAgdGV4dCA9IFt0
ZXh0IHN1YnN0cmluZ1RvSW5kZXg6QVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGhdOwogICAg
IH0KICAgICBbY2hhbmdlIHNldE9iamVjdDp0ZXh0IGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0
Q2hhbmdlVmFsdWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmlu
ZGV4IDFhZTZhYTljNThlNGZlNDFmNWFkZDU4ZGI1NjVhNTNhNWMyNzljODguLmUwYmEwYmY0MDhi
YTA1Mzk3NWRhNDdjOGM4NzgxYzVlMGQ5NzUwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UubW0KQEAgLTY1LDYgKzY1LDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2lu
Z0hlbHBlci5oIgogI2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJh
bWVWaWV3LmgiCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFBMQVRG
T1JNKE1BQykKICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KQEAgLTYxNCw3
ICs2MTUsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246KE5TU3Ry
aW5nICopbm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzooTgogICAgIGlmIChhY2Nlc3NpYmlsaXR5
U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9ucykgewogICAgICAgICBBU1NFUlQobm90aWZpY2F0aW9u
TmFtZSk7CiAgICAgICAgIHVzZXJJbmZvID0gZGljdGlvbmFyeVJlbW92aW5nTm9uU3VwcG9ydGVk
VHlwZXModXNlckluZm8pOwotICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6bm90aWZpY2F0aW9uTmFtZSwgQCJub3Rp
ZmljYXRpb25OYW1lIiwgdXNlckluZm8sIEAidXNlckluZm8iLCBuaWxdOworICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmluZm8gPSBAeyBAIm5vdGlmaWNhdGlvbk5hbWUiOiBub3RpZmljYXRpb25OYW1l
LCBAInVzZXJJbmZvIjogdXNlckluZm8gfTsKICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIkFYRFJUTm90aWZpY2F0aW9u
IiBvYmplY3Q6c2VsZiB1c2VySW5mbzppbmZvXTsKICAgICB9CiB9CkBAIC02OTEsNiArNjkyLDEz
IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlG
b3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
c2VhcmNoS2V5KSA/IHNlYXJjaEtleSA6IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGU7
CiB9CiAKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBtYWtlVmVjdG9y
RWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5KiwgaWQgYXJyYXlFbGVtZW50KQor
eworICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IGFjY2Vzc2liaWxp
dHlTZWFyY2hLZXlGb3JTdHJpbmcoYXJyYXlFbGVtZW50KSB9IH07Cit9CisKIEFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVk
aWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZSkKIHsKICAgICBOU1N0cmluZyAqZGlyZWN0aW9uUGFyYW1ldGVyID0gW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhEaXJlY3Rpb24iXTsKQEAgLTcy
OSwxNiArNzM3LDkgQEAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXQKICAgICAKICAgICBpZiAoW3Nl
YXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAg
ICBjcml0ZXJpYS5zZWFyY2hLZXlzLmFwcGVuZChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKHNlYXJjaEtleVBhcmFtZXRlcikpOwotICAgIGVsc2UgaWYgKFtzZWFyY2hLZXlQYXJhbWV0
ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0gICAgICAgIHNpemVfdCBzZWFy
Y2hLZXlDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oW3NlYXJjaEtleVBhcmFtZXRlciBjb3Vu
dF0pOwotICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c2VhcmNoS2V5Q291bnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlYXJjaEtl
eUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpzZWFyY2hLZXkgPSBbc2VhcmNo
S2V5UGFyYW1ldGVyIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgICAgICBpZiAoW3NlYXJjaEtl
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgICAgIGNyaXRl
cmlhLnNlYXJjaEtleXMudW5jaGVja2VkQXBwZW5kKGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JT
dHJpbmcoc2VhcmNoS2V5KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCisgICAgZWxzZSBpZiAo
W3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAg
ICAgIGNyaXRlcmlhLnNlYXJjaEtleXMgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk+KHNlYXJjaEtleVBhcmFtZXRlcik7CisKICAgICByZXR1cm4gY3JpdGVyaWE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMzY0MDQzMzhkNjU3MzM2
MGRlMmVhMGU3MjlhYWI2OGQ5ZTU5YmQ2NS4uYjQwM2QzZjZjNTE2ZmI2YmQ2MGZhOWNiY2ZhZmM1
YTQ0NDE1MmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTc4LDcgKzc4LDcgQEAKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9I
SVNlcnZpY2VzU1BJLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBv
cnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5H
KQogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNjQ1LDE0ICs2NDUsOCBA
QCBzdGF0aWMgc3RkOjpwYWlyPEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEsIEFjY2Vz
c2liaWxpdHlUZXh0T3BlcmF0aW9uPiBhYwogICAgIGlmIChbcmVwbGFjZW1lbnRTdHJpbmdQYXJh
bWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgb3BlcmF0aW9u
LnJlcGxhY2VtZW50VGV4dCA9IHJlcGxhY2VtZW50U3RyaW5nUGFyYW1ldGVyOwogCi0gICAgaWYg
KFtzZWFyY2hTdHJpbmdzUGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkg
ewotICAgICAgICBzaXplX3Qgc2VhcmNoU3RyaW5nc0NvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90
Pihbc2VhcmNoU3RyaW5nc1BhcmFtZXRlciBjb3VudF0pOwotICAgICAgICBjcml0ZXJpYS5zZWFy
Y2hTdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VhcmNoU3RyaW5nc0NvdW50KTsKLSAg
ICAgICAgZm9yIChOU1N0cmluZyAqc2VhcmNoU3RyaW5nIGluIHNlYXJjaFN0cmluZ3NQYXJhbWV0
ZXIpIHsKLSAgICAgICAgICAgIGlmIChbc2VhcmNoU3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5ncy51bmNo
ZWNrZWRBcHBlbmQoc2VhcmNoU3RyaW5nKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoW3Nl
YXJjaFN0cmluZ3NQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAg
ICAgICBjcml0ZXJpYS5zZWFyY2hTdHJpbmdzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHNlYXJjaFN0
cmluZ3NQYXJhbWV0ZXIpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGNyaXRlcmlhLCBv
cGVyYXRpb24pOwogfQpAQCAtNjY1LDE0ICs2NTksOCBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNl
YXJjaFRleHRDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhRm9yUGFyYW1l
dAogICAgIE5TU3RyaW5nICpzdGFydCA9IFtwYXJhbXMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJp
bGl0eVNlYXJjaFRleHRTdGFydEZyb21dOwogICAgIE5TU3RyaW5nICpkaXJlY3Rpb24gPSBbcGFy
YW1zIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uXTsKIAot
ICAgIGlmIChbc2VhcmNoU3RyaW5ncyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsK
LSAgICAgICAgc2l6ZV90IHNlYXJjaFN0cmluZ3NDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
W3NlYXJjaFN0cmluZ3MgY291bnRdKTsKLSAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5ncy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlYXJjaFN0cmluZ3NDb3VudCk7Ci0gICAgICAgIGZvciAo
TlNTdHJpbmcgKnNlYXJjaFN0cmluZyBpbiBzZWFyY2hTdHJpbmdzKSB7Ci0gICAgICAgICAgICBp
ZiAoW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAg
ICAgICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHNlYXJjaFN0
cmluZyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKFtzZWFyY2hTdHJpbmdzIGlzS2luZE9m
Q2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5ncyA9
IG1ha2VWZWN0b3I8U3RyaW5nPihzZWFyY2hTdHJpbmdzKTsKIAogICAgIGlmIChbc3RhcnQgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICBpZiAoW3N0YXJ0IGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tQmVnaW5dKQpAQCAt
MTAxOSw5ICsxMDA3LDkgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICAvLyBzZXQgc3Vw
ZXIvc3ViIHNjcmlwdGluZwogICAgIFZlcnRpY2FsQWxpZ24gYWxpZ25tZW50ID0gc3R5bGUudmVy
dGljYWxBbGlnbigpOwogICAgIGlmIChhbGlnbm1lbnQgPT0gVmVydGljYWxBbGlnbjo6U3ViKQot
ICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2li
aWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoSW50Oigt
MSldLCByYW5nZSk7CisgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgQCgtMSksIHJhbmdl
KTsKICAgICBlbHNlIGlmIChhbGlnbm1lbnQgPT0gVmVydGljYWxBbGlnbjo6U3VwZXIpCi0gICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0
eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sIHJh
bmdlKTsKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlLCBAKDEpLCByYW5nZSk7CiAgICAg
ZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5
U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICAKQEAgLTEwNzQsNyAr
MTA2Miw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVs
KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTCiAgICAgaW50IHF1b3RlTGV2ZWwgPSBv
YmotPmJsb2NrcXVvdGVMZXZlbCgpOwogICAgIAogICAgIGlmIChxdW90ZUxldmVsKQotICAgICAg
ICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVs
QXR0cmlidXRlIHZhbHVlOltOU051bWJlciBudW1iZXJXaXRoSW50OnF1b3RlTGV2ZWxdIHJhbmdl
OnJhbmdlXTsKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0
eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSB2YWx1ZTpAKHF1b3RlTGV2ZWwpIHJhbmdlOnJhbmdl
XTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vz
c2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtMTE1
Myw3ICsxMTQxLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2
ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmkKICAgICB9CiAgICAgCiAgICAg
aWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRl
OkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOltOU051bWJlciBudW1iZXJXaXRoSW50OnBhcmVudEhl
YWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6QCJBWEhlYWRpbmdMZXZlbCIgdmFsdWU6QChwYXJlbnRIZWFkaW5nTGV2ZWwpIHJhbmdlOnJh
bmdlXTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpAIkFY
SGVhZGluZ0xldmVsIiByYW5nZTpyYW5nZV07CiB9CkBAIC0xMzEyLDE3ICsxMzAwLDE3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAgICAgLy8gQWxsIGVsZW1lbnRz
IHNob3VsZCBnZXQgU2hvd01lbnUgYW5kIFNjcm9sbFRvVmlzaWJsZS4KICAgICAvLyBCdXQgY2Vy
dGFpbiBlYXJsaWVyIFZvaWNlT3ZlciB2ZXJzaW9ucyBkbyBub3Qgc3VwcG9ydCBzY3JvbGwgdG8g
dmlzaWJsZSwgYW5kIGl0IGNvbmZ1c2VzIHRoZW0gdG8gc2VlIGl0IGluIHRoZSBsaXN0LgotICAg
IHN0YXRpYyBOU0FycmF5ICpkZWZhdWx0RWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3Np
YmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9uLCBuaWxdOworICAgIHN0YXRpYyBOU0FycmF5ICpk
ZWZhdWx0RWxlbWVudEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwg
TlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9uXSByZXRhaW5dOwogCiAgICAgLy8g
QWN0aW9uIGVsZW1lbnRzIGFsbG93IFByZXNzLgogICAgIC8vIFRoZSBvcmRlciBpcyBpbXBvcnRh
bnQgdG8gVm9pY2VPdmVyLCB3aGljaCBleHBlY3RzIHRoZSAnZGVmYXVsdCcgYWN0aW9uIHRvIGJl
IHRoZSBmaXJzdCBhY3Rpb24uIEluIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCBhY3Rpb24gc2hvdWxk
IGJlIHByZXNzLgotICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25FbGVtZW50QWN0aW9ucyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9u
LCBOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9W
aXNpYmxlQWN0aW9uLCBuaWxdOworICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25FbGVtZW50QWN0
aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTaG93
TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9uXSByZXRhaW5d
OwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2FuY2VsLgogICAgIHN0
YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVsZW1lbnRBY3Rpb25z
IGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0aW9uXSByZXRhaW5d
OwogCiAgICAgLy8gU2xpZGVyIGVsZW1lbnRzIGFsbG93IEluY3JlbWVudC9EZWNyZW1lbnQuCi0g
ICAgc3RhdGljIE5TQXJyYXkgKnNsaWRlckFjdGlvbnMgPSBbW2RlZmF1bHRFbGVtZW50QWN0aW9u
cyBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
Ok5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50
QWN0aW9uLCBuaWxdXSByZXRhaW5dOworICAgIHN0YXRpYyBOU0FycmF5ICpzbGlkZXJBY3Rpb25z
ID0gW1tkZWZhdWx0RWxlbWVudEFjdGlvbnMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6
QFtOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eURlY3JlbWVu
dEFjdGlvbl1dIHJldGFpbl07CiAKICAgICBOU0FycmF5ICphY3Rpb25zOwogICAgIGlmIChiYWNr
aW5nT2JqZWN0LT5zdXBwb3J0c1ByZXNzQWN0aW9uKCkpCkBAIC0xODg4LDE0ICsxODc2LDYgQEAg
c3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKICAgICB9CiB9CiAKLXN0YXRpYyBOU011dGFibGVBcnJh
eSAqY29udmVydFN0cmluZ3NUb05TQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3RvcikK
LXsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6dmVjdG9yLnNpemUoKV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdHJpbmcgOiB2
ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6c3RyaW5nXTsKLSAgICByZXR1cm4gYXJy
YXk7Ci19Ci0KIC0gKGlkKXRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbgogewogICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNlbGVjdGlvbigp
OwpAQCAtMjQwMiw5ICsyMzgyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExvYWRl
ZCJdKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5n
T2JqZWN0LT5pc0xvYWRlZCgpXTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpAIkFYTGF5b3V0Q291bnQiXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5sYXlvdXRDb3VudCgpXTsKKyAgICAgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmxheW91dENvdW50KCkpOwogICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVz
c0F0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6YmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCldOworICAgICAgICAg
ICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAgICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5wcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRl
XSkKQEAgLTI0MTgsNyArMjM5OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICAgICAgaW50IGxlbmd0aCA9IGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgo
KTsKICAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDps
ZW5ndGhdOworICAgICAgICAgICAgcmV0dXJuIEAobGVuZ3RoKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0ID0g
YmFja2luZ09iamVjdC0+c2VsZWN0ZWRUZXh0KCk7CkBAIC0yNDQ3LDcgKzI0MjcsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmIChsaW5lTnVt
YmVyIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZU51bWJlcl07CisgICAgICAgICAgICByZXR1
cm4gQChsaW5lTnVtYmVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjUwNiwxNiArMjQ4Niwx
NiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVt
YikKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmJhY2tpbmdP
YmplY3QtPnBhcmVudE9iamVjdCgpLT52YWx1ZUZvclJhbmdlKCldOwogICAgICAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNIZWFkaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+aGVhZGluZ0xldmVsKCldOworICAgICAgICAgICAg
cmV0dXJuIEAoYmFja2luZ09iamVjdC0+aGVhZGluZ0xldmVsKCkpOwogCiAgICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IGJhY2tpbmdPYmplY3QtPmlzTWVu
dUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1N3aXRjaCgpIHx8IGJhY2tpbmdPYmplY3QtPmlz
VG9nZ2xlQnV0dG9uKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYmFja2luZ09iamVjdC0+Y2hl
Y2tib3hPclJhZGlvVmFsdWUoKSkgewogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGU6Ok9mZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6MF07CisgICAgICAgICAgICAgICAgcmV0dXJuIEAoMCk7CiAgICAgICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoSW50OjFdOworICAgICAgICAgICAgICAgIHJldHVybiBAKDEpOwog
ICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkOgotICAgICAg
ICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gQCgyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yNTM1LDcg
KzI1MTUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYkl0ZW0oKSkKLSAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5pc1NlbGVjdGVk
KCldOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpKTsK
IAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNDb2xvcldlbGwoKSkgewogICAgICAgICAg
ICAgaW50IHIsIGcsIGI7CkBAIC0yNjkxLDcgKzI2NzEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKIAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlQ29sdW1u
KCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDpiYWNraW5nT2JqZWN0LT5jb2x1bW5JbmRleCgpXTsKKyAgICAg
ICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmNvbHVtbkluZGV4KCkpOwogCiAgICAgICAg
IC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwgdGhlIGVs
ZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93CiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0KQEAgLTI3
NDIsNyArMjcyMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAg
ICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5zLCBidXQgTWFjIEFYIGV4
cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0aGUgbGVhc3QuCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29s
dW1uc0F0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAg
ICAgICAgICAgcmV0dXJuIEBbXTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXSkgewpAQCAtMjc2MCwx
MyArMjc0MCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgICAgIHNpemVfdCBjb3VudCA9IHJvd3NDb3B5LnNpemUoKTsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGsgPSAwOyBrIDwgY291bnQ7ICsraykKICAgICAgICAgICAgICAgICBpZiAocm93c0Nv
cHlba10tPndyYXBwZXIoKSA9PSBzZWxmKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprXTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEAoayk7CiAKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPnJvd0luZGV4KCldOworICAgICAg
ICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cm93SW5kZXgoKSk7CiAgICAgfQogCiAgICAg
Ly8gVGhlIHJvd3MgdGhhdCBhcmUgY29uc2lkZXJlZCBpbnNpZGUgdGhpcyByb3cuCkBAIC0yODAx
LDcgKzI3ODEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgaW50IGxldmVsID0gYmFja2luZ09iamVjdC0+aGllcmFyY2hpY2FsTGV2ZWwoKTsKICAgICAg
ICAgaWYgKGxldmVsID4gMCkKICAgICAgICAgICAgIGxldmVsIC09IDE7Ci0gICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsZXZlbF07CisgICAgICAgIHJldHVybiBAKGxldmVs
KTsKICAgICB9CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5pc0V4cGFuZGVkKCldOwpAQCAtMjgzMiw5ICsy
ODEyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCbG9j
a1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZEludDpiYWNraW5nT2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07CisgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmJsb2NrcXVvdGVMZXZlbCgpKTsKICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUYWJsZUxldmVsIl0pCi0gICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT50YWJsZUxldmVsKCld
OworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT50YWJsZUxldmVsKCkpOwogCiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TGlua2Vk
VUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7CkBAIC0yODUxLDcgKzI4
MzEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZXJ2ZXNBc1RpdGxl
Rm9yVUlFbGVtZW50c0F0dHJpYnV0ZV0gJiYgYmFja2luZ09iamVjdC0+aXNNZW51QnV0dG9uKCkp
IHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdWlFbGVtZW50ID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKmJhY2tpbmdPYmplY3QpLm1lbnVGb3JNZW51QnV0dG9u
KCk7CiAgICAgICAgIGlmICh1aUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OnVpRWxlbWVudC0+d3JhcHBlcigpXTsKKyAgICAgICAgICAgIHJldHVy
biBAW3VpRWxlbWVudC0+d3JhcHBlcigpXTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRl
XSkgewpAQCAtMjkyMSwxNyArMjkwMSwxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUFSSUFQb3NJblNldEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5wb3NJblNldCgpXTsKKyAgICAg
ICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cG9zSW5TZXQoKSk7CiAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBU2V0U2l6ZUF0dHJpYnV0
ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0
LT5zZXRTaXplKCldOworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5zZXRTaXplKCkp
OwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlHcmFiYmVkQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpiYWNraW5nT2JqZWN0LT5pc0FSSUFHcmFiYmVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0
ZV0pIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZHJvcEVmZmVjdHMgPSBiYWNraW5nT2JqZWN0
LT5kZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKTsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRTdHJp
bmdzVG9OU0FycmF5KGRyb3BFZmZlY3RzKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZV0pCisg
ICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGJhY2tpbmdPYmplY3QtPmRldGVybWluZUFSSUFE
cm9wRWZmZWN0cygpKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRlXSkK
ICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnBsYWNlaG9sZGVyVmFsdWUoKTsKQEAgLTMw
MTYsNyArMjk5NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RE9NQ2xh
c3NMaXN0QXR0cmlidXRlXSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xpc3Q7CiAg
ICAgICAgIGJhY2tpbmdPYmplY3QtPmNsYXNzTGlzdChjbGFzc0xpc3QpOwotICAgICAgICByZXR1
cm4gY29udmVydFN0cmluZ3NUb05TQXJyYXkoY2xhc3NMaXN0KTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoY2xhc3NMaXN0KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIC8vIFRo
aXMgYWxsb3dzIHVzIHRvIGNvbm5lY3QgdG8gYSBwbHVnaW4gdGhhdCBjcmVhdGVzIGEgc2hhZG93
IG5vZGUgZm9yIGVkaXRpbmcgKGxpa2UgUERGcykuCkBAIC00MTAxLDcgKzQwNzksNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zID0gW3Byb3RlY3RlZFNlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1h
cmtlcjp0ZXh0TWFya2VyXTsKICAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5saW5l
Rm9yUG9zaXRpb24odmlzaWJsZVBvcyk7CiAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6cmVzdWx0XTsKKyAgICAgICAgcmV0dXJuIEAocmVzdWx0KTsK
ICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJr
ZXJSYW5nZUZvckxpbmUiXSkgewpAQCAtNDMyOSw3ICs0MzA3LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIH0pOwogICAgICAgICBpZiAobGVuZ3RoIDwg
MCkKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpsZW5ndGhdOworICAgICAgICByZXR1cm4gQChsZW5ndGgpOwogICAgIH0KIAog
ICAgIC8vIFVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSAoc28gZmFyKS4KQEAgLTQzNzksNyAr
NDM1Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAg
ICAgaW50IGxpbmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5kb0FYTGluZUZvckluZGV4KFtudW1i
ZXIgaW50VmFsdWVdKTsKICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoVW5zaWduZWRJbnQ6bGluZU51bWJlcl07CisgICAgICAgICAgICByZXR1cm4gQChsaW5lTnVt
YmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzogKE5TU3RyaW5nICopa0FYUmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCBk
ZTNhNDNkZWYwYjk3OGMwNzgxM2Q4MDA0NzJlOWY5OWFlZjc4NGNlLi5lOTA2MjIxY2E5OGMzZGFm
YzczMzMwZTU4MmE0ZDFmNjZkYmY4OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC01ODYsNyArNTg2LDcgQEAgKyAoaWQpX2NvbnZlcnRW
YWx1ZVRvT2JqY1ZhbHVlOihKU0M6OkpTVmFsdWUpdmFsdWUgb3JpZ2luUm9vdE9iamVjdDooUm9v
dE9iamVjdCoKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUocm9vdE9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hc051bWJlcigpXTsKKyAg
ICAgICAgcmV0dXJuIEAodmFsdWUuYXNOdW1iZXIoKSk7CiAKICAgICBpZiAodmFsdWUuaXNCb29s
ZWFuKCkpCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dmFsdWUuYXNC
b29sZWFuKCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQppbmRleCA1MDcyZDZiMzJhYzc1ZDcxY2I4
ZmJlNTM4Y2U4N2UxNTYzOTcyNmEzLi5lNThlYWVkZWMwMDdlNGI5OWM2ODI3MTQ3MjVkZTFhMjVk
NTA5NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpAQCAtMjgsNyArMjgsOCBAQAogCiAjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCiAKLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0
Lmg+CisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5o
PgpAQCAtNDcsMTIgKzQ4LDcgQEAgdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
OjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGUKIAogVmVjdG9yPFN0
cmluZz4gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpCiB7Ci0gICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJu
YXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRl
eHQpOwotICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsKLSAgICBhbHRlcm5h
dGl2ZVN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVy
bmF0aXZlU3RyaW5ncy5jb3VudCk7Ci0gICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGluIHRleHRB
bHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzKQotICAgICAgICBhbHRlcm5hdGl2ZVN0cmlu
Z3MudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7Ci0gICAgcmV0dXJuIGFsdGVybmF0aXZlU3RyaW5n
czsKKyAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KG1fY29udGV4dENvbnRyb2xsZXIuYWx0
ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KS5hbHRlcm5hdGl2ZVN0cmluZ3MpOwogfQogCiB2
b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGE1NDNhYzJkMWFlMmFjMzhm
OGNkMjdmYjI1N2ZlMmQxNjI0MGRjZWYuLjRmNDYzNTI4MGQ2NDU4MTQzOWFmN2NiNTJhZTYxNWM4
ZTEzM2Y1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KQEAgLTUzOSw3ICs1MzksNyBAQCBzdGF0aWMgTlNQYXJhZ3JhcGhTdHlsZSAqZGVmYXVs
dFBhcmFncmFwaFN0eWxlKCkKICAgICBpZiAoIWRlZmF1bHRQYXJhZ3JhcGhTdHlsZSkgewogICAg
ICAgICBkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBbW1BsYXRmb3JtTlNQYXJhZ3JhcGhTdHlsZSBk
ZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XTsKICAgICAgICAgW2RlZmF1bHRQYXJh
Z3JhcGhTdHlsZSBzZXREZWZhdWx0VGFiSW50ZXJ2YWw6MzZdOwotICAgICAgICBbZGVmYXVsdFBh
cmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOltOU0FycmF5IGFycmF5XV07CisgICAgICAgIFtkZWZh
dWx0UGFyYWdyYXBoU3R5bGUgc2V0VGFiU3RvcHM6QFtdXTsKICAgICB9CiAgICAgcmV0dXJuIGRl
ZmF1bHRQYXJhZ3JhcGhTdHlsZTsKIH0KQEAgLTEwMjcsNyArMTAyNyw3IEBAIE5TRGljdGlvbmFy
eSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogICAgIGZsb2F0IHN0cm9rZVdpZHRoID0gMC4wOwogICAgIGlmIChfY2FjaGVzLT5m
bG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZVdpZHRoLCBzdHJva2VXaWR0aCkpIHsKICAgICAgICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRo
ID0gc3Ryb2tlV2lkdGggLyAoW2ZvbnQgcG9pbnRTaXplXSAqIDAuMDEpOwotICAgICAgICBbYXR0
cnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRleHRTdHJva2VXaWR0aF0g
Zm9yS2V5Ok5TU3Ryb2tlV2lkdGhBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpAKHRleHRTdHJva2VXaWR0aCkgZm9yS2V5Ok5TU3Ryb2tlV2lkdGhBdHRyaWJ1dGVOYW1l
XTsKICAgICB9CiAgICAgaWYgKHN0cm9rZUNvbG9yKQogICAgICAgICBbYXR0cnMgc2V0T2JqZWN0
OnN0cm9rZUNvbG9yIGZvcktleTpOU1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZV07CkBAIC0xMDQy
LDcgKzEwNDIsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmli
dXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIGlmIChVSUZsb2F0
SXNaZXJvKGtlcm5WYWwpKQogICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6QDAuMCBm
b3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07IC8vIGF1dG8gYW5kIG5vcm1hbCwgdGhlIG90aGVy
IHBvc3NpYmxlIHZhbHVlcywgYXJlIGJvdGggImtlcm5pbmcgZW5hYmxlZCIKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoRG91YmxlOmtlcm5WYWxdIGZvcktleTpOU0tlcm5BdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAg
ICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAoa2VyblZhbCkgZm9yS2V5Ok5TS2VybkF0dHJpYnV0
ZU5hbWVdOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBOU0RpY3Rp
b25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCkKIAogICAgIGZsb2F0IGJhc2VsaW5lT2Zmc2V0ID0gMC4wOwogICAgIGlmIChf
Y2FjaGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5VmVy
dGljYWxBbGlnbiwgYmFzZWxpbmVPZmZzZXQpKQotICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOmJhc2VsaW5lT2Zmc2V0XSBmb3JLZXk6TlNCYXNlbGlu
ZU9mZnNldEF0dHJpYnV0ZU5hbWVdOworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAoYmFzZWxp
bmVPZmZzZXQpIGZvcktleTpOU0Jhc2VsaW5lT2Zmc2V0QXR0cmlidXRlTmFtZV07CiAKICAgICBT
dHJpbmcgdGV4dFNoYWRvdyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQs
IENTU1Byb3BlcnR5VGV4dFNoYWRvdyk7CiAgICAgaWYgKHRleHRTaGFkb3cubGVuZ3RoKCkgPiA0
KSB7CkBAIC0xNTU2LDcgKzE1NTYsNyBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzTWV0
YUVsZW1lbnRXaXRoTmFtZShOU1N0cmluZyAqbmFtZSwgTlNTdHJpbmcgKmNvbnRlbgogICAgICAg
ICBpZiAodmVyc2lvbk51bWJlciA+IDAuMCkgewogICAgICAgICAgICAgLy8gPz8/IHRoaXMgc2hv
dWxkIGJlIGtleWVkIG9mZiBvZiB2ZXJzaW9uIG51bWJlciBpbiBmdXR1cmUKICAgICAgICAgICAg
IFtfZG9jdW1lbnRBdHRycyByZW1vdmVPYmplY3RGb3JLZXk6TlNDb252ZXJ0ZWREb2N1bWVudEF0
dHJpYnV0ZV07Ci0gICAgICAgICAgICBbX2RvY3VtZW50QXR0cnMgc2V0T2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOnZlcnNpb25OdW1iZXJdIGZvcktleTpOU0NvY29hVmVyc2lvbkRv
Y3VtZW50QXR0cmlidXRlXTsKKyAgICAgICAgICAgIFtfZG9jdW1lbnRBdHRycyBzZXRPYmplY3Q6
QCh2ZXJzaW9uTnVtYmVyKSBmb3JLZXk6TlNDb2NvYVZlcnNpb25Eb2N1bWVudEF0dHJpYnV0ZV07
CiAgICAgICAgIH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIH0gZWxzZSBpZiAoTlNP
cmRlcmVkU2FtZSA9PSBbQCJHZW5lcmF0b3IiIGNvbXBhcmU6bmFtZSBvcHRpb25zOk5TQ2FzZUlu
c2Vuc2l0aXZlU2VhcmNoXSkgewpAQCAtMTY3Miw4ICsxNjcyLDggQEAgdm9pZCBIVE1MQ29udmVy
dGVyOjpfYWRkVGFibGVGb3JFbGVtZW50KEVsZW1lbnQgKnRhYmxlRWxlbWVudCkKICAgICB9CiAg
ICAgCiAgICAgW190ZXh0VGFibGVzIGFkZE9iamVjdDp0YWJsZS5nZXQoKV07Ci0gICAgW190ZXh0
VGFibGVTcGFjaW5ncyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6Y2VsbFNw
YWNpbmdWYWxdXTsKLSAgICBbX3RleHRUYWJsZVBhZGRpbmdzIGFkZE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTpjZWxsUGFkZGluZ1ZhbF1dOworICAgIFtfdGV4dFRhYmxlU3BhY2lu
Z3MgYWRkT2JqZWN0OkAoY2VsbFNwYWNpbmdWYWwpXTsKKyAgICBbX3RleHRUYWJsZVBhZGRpbmdz
IGFkZE9iamVjdDpAKGNlbGxQYWRkaW5nVmFsKV07CiAgICAgW190ZXh0VGFibGVSb3dzIGFkZE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6MF1dOwogICAgIFtfdGV4dFRhYmxlUm93
QXJyYXlzIGFkZE9iamVjdDpbTlNNdXRhYmxlQXJyYXkgYXJyYXldXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggYzBmMzFjMmViYzlkZGVlOWRjOTk0OGNhZjY4MDQzZTkx
ZmQ5MDNiNC4uYTIwN2NiMDliODA2MWU3ZDE5NDk5NTQ1ZmNkMTVjYWZmZDNkNDMxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTczMCw3ICs3MzAsNyBAQCBOU0FycmF5ICpG
cmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogCiAgICAgLy8gVGhl
cmUgYXJlIG5vIHBocmFzZXMgd2l0aCBhbHRlcm5hdGl2ZXMsIHNvIHRoZXJlIGlzIGp1c3Qgb25l
IGludGVycHJldGF0aW9uLgogICAgIGlmIChtYXJrZXJzSW5Sb290LmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpwbGFpblRleHQocmFuZ2VPZlJvb3RD
b250ZW50cyldOworICAgICAgICByZXR1cm4gQFtwbGFpblRleHQocmFuZ2VPZlJvb3RDb250ZW50
cyldOwogCiAgICAgLy8gVGhlIG51bWJlciBvZiBpbnRlcnByZXRhdGlvbnMgd2lsbCBiZSBpMSAq
IGkyICogLi4uICogaU4sIHdoZXJlIGlYIGlzIHRoZSBudW1iZXIgb2YgaW50ZXJwcmV0YXRpb25z
IGZvciB0aGUgWHRoIHBocmFzZSB3aXRoIGFsdGVybmF0aXZlcy4KICAgICBzaXplX3QgaW50ZXJw
cmV0YXRpb25zQ291bnQgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCmluZGV4IGE4N2NmNWM0ZThmODU2ZGY3Yzc5
MDAxMTQzZjNjNzQ0YzdmZjgwNmEuLjJiM2ZlMDU1ODRmOTY0ZTA5OTc2ODQ2YWExMjk4MDc2ZWE0
YmUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBl
UmVnaXN0cnlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1F
VHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMjQsMTAgKzI0LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKIAotI2luY2x1ZGUgPHBh
bC9zcGkvY29jb2EvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMTYgKzM5LDcgQEAg
U3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKQogCiBWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRF
eHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIE5TQXJyYXkg
KnN0cmluZ3NBcnJheSA9IFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBl
eHRlbnNpb25zRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZV07Ci0gICAgVmVjdG9yPFN0cmlu
Zz4gc3RyaW5nc1ZlY3RvciA9IFZlY3RvcjxTdHJpbmc+KCk7Ci0gICAgdW5zaWduZWQgY291bnQg
PSBbc3RyaW5nc0FycmF5IGNvdW50XTsKLSAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgIE5T
RW51bWVyYXRvciogZW51bWVyYXRvciA9IFtzdHJpbmdzQXJyYXkgb2JqZWN0RW51bWVyYXRvcl07
Ci0gICAgICAgIE5TU3RyaW5nKiBzdHJpbmc7Ci0gICAgICAgIHdoaWxlICgoc3RyaW5nID0gW2Vu
dW1lcmF0b3IgbmV4dE9iamVjdF0pICE9IG5pbCkKLSAgICAgICAgICAgIHN0cmluZ3NWZWN0b3Iu
YXBwZW5kKHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiBzdHJpbmdzVmVjdG9yOworICAgIHJl
dHVybiBtYWtlVmVjdG9yPFN0cmluZz4oW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hhcmVkTWFw
cGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTp0eXBlXSk7CiB9CiAKIFN0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgK
aW5kZXggNDU1YmIyNTFhMjRkNGU2NmM3NTU5ZjAyMGE5ZjM5ZjUwM2Q3Y2ZmZi4uNzVjOTI4ZGE3
YWEzNzQ2NmIxNDZjMWM3OGVjMTAwYjY1MGNmMzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRl
ICJJbnRQb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9S
TShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNHZW9tZXRy
eS5oPgotI2VuZGlmCi0KICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IENHUG9p
bnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmgKaW5kZXggMzMxNzBlYmM0NTZiZTg0NmIzMTdhYzEzNGMzMTUwNDVkNzY1ZTNmYy4uMWI2ZDQ5
M2U5MjZiZmVhYWE5MjllMjY0MjhiY2QwN2FiYTI5ZThjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKQEAgLTI3OSw1ICsyNzksOCBAQCBXRUJDT1JF
X0VYUE9SVCBJbnRSZWN0IHJvdW5kZWRJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCiBXRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAKLX0KKyNpZmRlZiBfX09CSkNfXworV0VCQ09SRV9FWFBPUlQg
aWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IEZsb2F0UmVjdCYpOworI2VuZGlmCiAKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCmluZGV4IGQzNDg4MGEy
YjI1NDdhMjgwY2IwZDdkMmY5NzMyMjUyM2RmYTZkZTIuLjE2YzkyMzYxNmNkNWRhNmM0ODgyYmM3
M2U2OWE3ZjI5Y2UxMDdjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UG9pbnQuaApAQCAtMjgsMTUgKzI4LDEwIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgPGNtYXRoPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCi0j
aW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KLSNlbmRpZgotCiAjaWYgVVNFKENHKQog
dHlwZWRlZiBzdHJ1Y3QgQ0dQb2ludCBDR1BvaW50OwogI2VuZGlmCiAKLQogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIE9TKERBUldJTikKICNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NB
TUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UmVjdC5oCmluZGV4IDEyMmRkNTA1M2IwMjFiNWUxZTM5YzAwODNkZTFlMjQwYjU5OGQ1ZTQu
LjAzYzVhYWY0OGIwZmMzODJjMWQ5MGEwZGFiMjk2ZGNiZjAxZDFjYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKQEAgLTI1MCw1ICsyNTAsOCBAQCBXRUJD
T1JFX0VYUE9SVCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNSZWN0Jik7CiAKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBJbnRSZWN0Jik7CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNpZmRlZiBfX09C
SkNfXworV0VCQ09SRV9FWFBPUlQgaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IEludFJlY3Qm
KTsKKyNlbmRpZgogCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggZWU3YzZjMGFkZmQ3ZDNkZWJkYmRjNWRiOTVk
ZGI1MWQzMWI4MDk1NS4uNzU2ODM0MWM3NzZkMmUwMDZiYWQwYzBhYzQzZjg1YjZhNzcwOWIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaApAQCAtMjksMTAg
KzI5LDYgQEAKICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKLSNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KLSNpbXBvcnQg
PEZvdW5kYXRpb24vTlNHZW9tZXRyeS5oPgotI2VuZGlmCi0KICNpZiBVU0UoQ0cpCiB0eXBlZGVm
IHN0cnVjdCBDR1NpemUgQ0dTaXplOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggODNiNjQyMTcyZTE5ZTY3YmU5ZWFiZDlh
NmY5OWFiYzM0OTA0OGYyMC4uOGY4NDdiODI3MzMwODZlODJiMmY0ZWYwNTVjMzBhMjUyY2ZlOGVi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5t
bQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbS5o
PgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvTGFuZ3VhZ2UuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQpAQCAtMTMy
LDEwICsxMzMsOCBAQCB2b2lkIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGlmICghbV9zaG91bGRT
ZWxlY3RPcHRpb25BdXRvbWF0aWNhbGx5KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IG5zTGFuZ3VhZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKS5zaXplKCld
KTsKLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogdXNlclByZWZlcnJlZExhbmd1YWdlcygpKQot
ICAgICAgICBbbnNMYW5ndWFnZXMgYWRkT2JqZWN0OihOU1N0cmluZyopbGFuZ3VhZ2VdOwotICAg
IE5TQXJyYXkqIGZpbHRlcmVkT3B0aW9ucyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91
cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OlttX21lZGlhU2VsZWN0aW9u
R3JvdXAgb3B0aW9uc10gZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1
YWdlczpuc0xhbmd1YWdlcy5nZXQoKV07CisgICAgTlNBcnJheSogZmlsdGVyZWRPcHRpb25zID0g
W1BBTDo6Z2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlv
bnNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXQorICAgICAgICBmaWx0
ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOmNyZWF0ZU5TQXJyYXko
dXNlclByZWZlcnJlZExhbmd1YWdlcygpKS5nZXQoKV07CiAKICAgICBpZiAoIVtmaWx0ZXJlZE9w
dGlvbnMgY291bnRdICYmIGNoYXJhY3RlcmlzdGljcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0NCwxMSArMTQzLDcgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6
dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAgICBpZiAo
IVtmaWx0ZXJlZE9wdGlvbnMgY291bnRdKQogICAgICAgICBmaWx0ZXJlZE9wdGlvbnMgPSBbbV9t
ZWRpYVNlbGVjdGlvbkdyb3VwIG9wdGlvbnNdOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBuc0NoYXJhY3RlcmlzdGljcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpjaGFyYWN0ZXJpc3RpY3Muc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRv
JiBjaGFyYWN0ZXJpc3RpYyA6IGNoYXJhY3RlcmlzdGljcykKLSAgICAgICAgW25zQ2hhcmFjdGVy
aXN0aWNzIGFkZE9iamVjdDooTlNTdHJpbmcgKiljaGFyYWN0ZXJpc3RpY107Ci0KLSAgICBOU0Fy
cmF5KiBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rp
b25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRlcmVkT3B0
aW9ucyB3aXRoTWVkaWFDaGFyYWN0ZXJpc3RpY3M6bnNDaGFyYWN0ZXJpc3RpY3MuZ2V0KCldOwor
ICAgIE5TQXJyYXkqIG9wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzID0gW1BBTDo6Z2V0QVZNZWRp
YVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6Zmls
dGVyZWRPcHRpb25zIHdpdGhNZWRpYUNoYXJhY3RlcmlzdGljczpjcmVhdGVOU0FycmF5KGNoYXJh
Y3RlcmlzdGljcykuZ2V0KCldOwogICAgIGlmIChvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyAm
JiBbb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgY291bnRdKQogICAgICAgICBmaWx0ZXJlZE9w
dGlvbnMgPSBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljczsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggNWE2MmExZTQ2N2Q4NTY2ZDJiNmIzNDIyZDY0Yjk0ODI0ZDljNjhkMy4uOGE3NzE2
MmQ2MzAzZWVmZjMzNzY2ODBlMzdkYTk0MGExMTk2Mzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC02OTcsNyArNjk3LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShB
VkZfQ0FQVElPTlMpCi1zdGF0aWMgY29uc3QgTlNBcnJheSogbWVkaWFEZXNjcmlwdGlvbkZvcktp
bmQoUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCBraW5kKQorCitzdGF0aWMgY29uc3QgTlNB
cnJheSAqbWVkaWFEZXNjcmlwdGlvbkZvcktpbmQoUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2lu
ZCBraW5kKQogewogICAgIHN0YXRpYyBib29sIG1hbnVhbFNlbGVjdGlvbk1vZGUgPSBNVEVuYWJs
ZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKSAmJiBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3JQ
dHIoKSgpOwogICAgIGlmIChtYW51YWxTZWxlY3Rpb25Nb2RlKQpAQCAtNzA1LDE4ICs3MDYsMTgg
QEAgc3RhdGljIGNvbnN0IE5TQXJyYXkqIG1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKFBsYXRmb3Jt
VGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCkKIAogICAgIC8vIEZJWE1FOiBNYXRjaCB0aGVzZSB0
byBjb3JyZWN0IHR5cGVzOgogICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0
aW9uKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNo
YXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxd
OworICAgICAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9r
ZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiAKICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRl
eHRUcmFjazo6U3VidGl0bGUpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vz
c2liaWxpdHksIG5pbF07CisgICAgICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNU
cmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgXTsKIAogICAgIGlmIChraW5k
ID09IFBsYXRmb3JtVGV4dFRyYWNrOjpEZXNjcmlwdGlvbikKLSAgICAgICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVz
TXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIG5pbF07CisgICAgICAgIHJldHVybiBAWyBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxp
dHksIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3Np
YmlsaXR5IF07CiAKICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6Rm9yY2VkKQot
ICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3Rl
cmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBuaWxdOworICAgICAgICByZXR1cm4g
QFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzIF07CiAK
LSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3Rlcmlz
dGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOworICAgIHJl
dHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFj
Y2Vzc2liaWxpdHkgXTsKIH0KICAgICAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCkBAIC03NTQsOCArNzU1LDggQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFj
a1N0YXRlKCkKICAgICAgICAgfQogICAgIH0KIH0KLSNlbmRpZgogCisjZW5kaWYKIAogc3RhdGlj
IE5TVVJMICpjYW5vbmljYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CkBAIC03ODUsNyArNzg2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25h
cnk+IG9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OyAgICAKIAotICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRSZW1vdGVSZWZlcmVuY2VUb0xv
Y2FsIHwgQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkTG9jYWxSZWZlcmVuY2VUb1Jl
bW90ZV0gZm9yS2V5OkFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXldOworICAgIFtv
cHRpb25zLmdldCgpIHNldE9iamVjdDpAKEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJp
ZFJlbW90ZVJlZmVyZW5jZVRvTG9jYWwgfCBBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3Ji
aWRMb2NhbFJlZmVyZW5jZVRvUmVtb3RlKSBmb3JLZXk6QVZVUkxBc3NldFJlZmVyZW5jZVJlc3Ry
aWN0aW9uc0tleV07CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gaGVhZGVy
RmllbGRzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIApA
QCAtOTg5LDcgKzk5MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCkKIAogICAgIGNvbnN0IE5TVGltZUludGVydmFsIGF2UGxh
eWVyT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAotICAgIFJldGFpblB0cjxOU0FycmF5PiBz
dWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6W05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2ViVlRUXSwg
bmlsXSk7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IHN1YnR5cGVzID0gYWRvcHROUyhbW05TQXJy
YXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAKGtDTVN1YnRpdGxlRm9ybWF0VHlwZV9XZWJWVFQp
LCBuaWxdKTsKICAgICBtX2xlZ2libGVPdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0
aXZlUmVwcmVzZW50YXRpb246c3VidHlwZXMuZ2V0KCldKTsKICAgICBbbV9sZWdpYmxlT3V0cHV0
LmdldCgpIHNldFN1cHByZXNzZXNQbGF5ZXJSZW5kZXJpbmc6WUVTXTsKIApAQCAtMTAyOCw3ICsx
MDI5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja1Bs
YXlhYmlsaXR5KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBhdXRvIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogCi0gICAgW21fYXZBc3NldC5nZXQoKSBsb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6QCJwbGF5
YWJsZSIsIEAidHJhY2tzIiwgbmlsXSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgIFttX2F2QXNz
ZXQuZ2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AicGxheWFibGUiLCBA
InRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAg
d2Vha1RoaXMtPnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6QXNzZXRQbGF5YWJpbGl0eUtub3duKTsKQEAg
LTIxNzEsNyArMjE3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogI2lmIFVTRShWSURFT1RPT0xCT1gpCiAgICAgTlNEaWN0
aW9uYXJ5KiBhdHRyaWJ1dGVzID0gbmlsOwogI2Vsc2UKLSAgICBOU0RpY3Rpb25hcnkqIGF0dHJp
YnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBXSwga0NW
UGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF07CisgICAgTlNEaWN0aW9uYXJ5KiBh
dHRyaWJ1dGVzID0gQHsga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4
ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKICNlbmRpZgogICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRo
UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOmF0dHJpYnV0ZXNdKTsKICAgICBBU1NFUlQobV92aWRlb091
dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggZDk3
Y2NiM2JkYWJhZTUzMzU3ZDUyODE5Yzc4ODIxNzE5ZjE1ZWI3Zi4uNDgxNmIwMDRmMTQ4MTgwZmI5
MDE1NzkxOWNlYmU3YjVlZGRmNTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYS5tbQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdLRXhwbGljaXRCZWdpblRpbWVGbGFnID0gQCJXS1BsYXRm
b3JtQ0FBbmltYXRpb25FeHBsaWNpdEJlZ2luVGltZUZsYWciOworY29uc3RleHByIE5TU3RyaW5n
ICogY29uc3QgV0tFeHBsaWNpdEJlZ2luVGltZUZsYWcgPSBAIldLUGxhdGZvcm1DQUFuaW1hdGlv
bkV4cGxpY2l0QmVnaW5UaW1lRmxhZyI7CiAKIGJvb2wgaGFzRXhwbGljaXRCZWdpblRpbWUoQ0FB
bmltYXRpb24gKmFuaW1hdGlvbikKIHsKQEAgLTM2Miw4ICszNjIsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6c2V0QWRkaXRpdmUoYm9vbCB2YWx1ZSkKIAogUGxhdGZvcm1DQUFu
aW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjp2YWx1
ZUZ1bmN0aW9uKCkgY29uc3QKIHsKLSAgICBDQVZhbHVlRnVuY3Rpb24qIHZmID0gW21fYW5pbWF0
aW9uIHZhbHVlRnVuY3Rpb25dOwotICAgIHJldHVybiBmcm9tQ0FWYWx1ZUZ1bmN0aW9uVHlwZShb
dmYgbmFtZV0pOworICAgIHJldHVybiBmcm9tQ0FWYWx1ZUZ1bmN0aW9uVHlwZShbW21fYW5pbWF0
aW9uIHZhbHVlRnVuY3Rpb25dIG5hbWVdKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OnNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUgdmFsdWUpCkBAIC0zNzUs
MTQgKzM3NCwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVl
KGZsb2F0IHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5n
ZXQoKSkgc2V0RnJvbVZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlXV07Cisg
ICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0
RnJvbVZhbHVlOkAodmFsdWUpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OnNldEZyb21WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7CiAgICAg
aWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIFtzdGF0aWNf
Y2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpb
TlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlXV07CiB9CiAKQEAgLTM5MCwzMiAr
Mzg4LDE5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUoY29u
c3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS54KCld
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS55KCldLAotICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS56KCldLAotICAgICAgICBuaWxdOwot
ICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNl
dEZyb21WYWx1ZTphcnJheV07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPiht
X2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOkBbIEAodmFsdWUueCgpKSwgQCh2YWx1ZS55
KCkpLCBAKHZhbHVlLnooKSkgXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpzZXRGcm9tVmFsdWUoY29uc3QgQ29sb3ImIHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0Fu
aW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBOU0FycmF5KiBhcnJheSA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlLnJlZCgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUu
Z3JlZW4oKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmJsdWUo
KV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmFscGhhKCldLAot
ICAgICAgICBuaWxdOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTphcnJheV07CisgICAgW3N0YXRpY19jYXN0PENBQmFz
aWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOkBbQCh2YWx1ZS5y
ZWQoKSksIEAodmFsdWUuZ3JlZW4oKSksIEAodmFsdWUuYmx1ZSgpKSwgQCh2YWx1ZS5hbHBoYSgp
KV1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogb3BlcmF0aW9uLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KQogewotICAgIFJldGFpblB0cjxpZD4gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6
ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24ob3BlcmF0aW9uLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5
SW5kZXgpOworICAgIGF1dG8gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVG
b3JPcGVyYXRpb24ob3BlcmF0aW9uLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwogICAg
IFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZy
b21WYWx1ZTp2YWx1ZS5nZXQoKV07CiB9CiAKQEAgLTQyMyw4ICs0MDgsNyBAQCB2b2lkIFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiYgdmFsdQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpIHx8ICF2YWx1ZS5p
c0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENBQmFzaWNBbmltYXRp
b24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KGRvd25j
YXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsK
KyAgICBhdXRvIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+
KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdl
dCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdl
dCgpKSBzZXRGcm9tVmFsdWU6W290aGVyQW5pbWF0aW9uIGZyb21WYWx1ZV1dOwogfQogCkBAIC00
MzIsMTQgKzQxNiwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9WYWx1
ZShmbG9hdCB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24u
Z2V0KCkpIHNldFRvVmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVdXTsKKyAg
ICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRU
b1ZhbHVlOkAodmFsdWUpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNl
dFRvVmFsdWUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewogICAgIGlmICgh
aXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KICAgICBbc3RhdGljX2Nhc3Q8
Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltOU1ZhbHVl
IHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6dmFsdWVdXTsKIH0KIApAQCAtNDQ3LDMyICs0MzAsMTkg
QEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUoY29uc3QgRmxvYXRQ
b2ludDNEJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS54KCldLAotICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS55KCldLAotICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS56KCldLAotICAgICAgICBuaWxdOwotICAgIFtzdGF0
aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6
YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24u
Z2V0KCkpIHNldFRvVmFsdWU6QFsgQCh2YWx1ZS54KCkpLCBAKHZhbHVlLnkoKSksIEAodmFsdWUu
eigpKSBdXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUo
Y29uc3QgQ29sb3ImIHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpKQogICAg
ICAgICByZXR1cm47Ci0KLSAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnJlZCgpXSwK
LSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuZ3JlZW4oKV0sCi0gICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmJsdWUoKV0sCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmFscGhhKCldLAotICAgICAgICBuaWxdOwot
ICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNl
dFRvVmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6QFtAKHZhbHVlLnJlZCgpKSwgQCh2YWx1ZS5ncmVl
bigpKSwgQCh2YWx1ZS5ibHVlKCkpLCBAKHZhbHVlLmFscGhhKCkpXV07CiB9CiAKIHZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
b3BlcmF0aW9uLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KQogewotICAgIFJldGFp
blB0cjxpZD4gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRp
b24ob3BlcmF0aW9uLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOworICAgIGF1dG8gdmFs
dWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24ob3BlcmF0aW9u
LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2lj
QW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6dmFsdWUuZ2V0KCldOwog
fQogCkBAIC00ODEsNyArNDUxLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNv
cHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKICAgICBpZiAo
IWlzQmFzaWNBbmltYXRpb24oKSB8fCAhdmFsdWUuaXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRp
Y19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0byBvdGhlckFuaW1hdGlvbiA9
IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENB
QmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbb3RoZXJBbmlt
YXRpb24gdG9WYWx1ZV1dOwogfQogCkBAIC00OTIsOSArNDYyLDkgQEAgdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKICAg
ICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCi0gICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV1dXTsKKyAgICBhdXRv
IGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07
CisgICAgZm9yIChhdXRvIG51bWJlciA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAobnVtYmVyKV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2Fu
aW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIApAQCAtNTAzLDExICs0NzMsOSBA
QCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4mIHZhbAogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtO
U011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVl
LnNpemUoKTsgKytpKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0
aENBVHJhbnNmb3JtM0Q6dmFsdWVbaV1dXTsKLQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIG1h
dHJpeCA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0
aENBVHJhbnNmb3JtM0Q6bWF0cml4XV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmlt
YXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIApAQCAtNTE2
LDE2ICs0ODQsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKGNv
bnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JiB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSogYXJy
YXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZS5zaXplKCk7ICsraSkgewotICAgICAgICBOU0FycmF5KiBvYmplY3QgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6dmFsdWVbaV0ueCgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlW2ldLnkoKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2
YWx1ZVtpXS56KCldLAotICAgICAgICAgICAgbmlsXTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpvYmplY3RdOwotICAgIH0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBwb2ludCA6IHZhbHVl
KQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkBbQChwb2ludC54KCkpLCBAKHBvaW50LnkoKSks
IEAocG9pbnQueigpKV1dOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4o
bV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUzNCwxNyArNDk1
LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0
b3I8Q29sb3I+JiB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7
ICsraSkgewotICAgICAgICBOU0FycmF5KiBvYmplY3QgPSBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0ucmVk
KCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0uZ3Jl
ZW4oKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXS5i
bHVlKCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0u
YWxwaGEoKV0sCi0gICAgICAgICAgICBuaWxdOwotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Om9i
amVjdF07Ci0gICAgfQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIGNvbG9yIDogdmFsdWUpCisg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QFtAKGNvbG9yLnJlZCgpKSwgQChjb2xvci5ncmVlbigp
KSwgQChjb2xvci5ibHVlKCkpLCBAKGNvbG9yLmFscGhhKCkpXV07CiAgICAgW3N0YXRpY19jYXN0
PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5
XTsKIH0KIApAQCAtNTUzLDEyICs1MDYsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2Nv
YTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mCiAgICAg
aWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJldGFp
blB0cjxpZD4gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRp
b24odmFsdWVzW2ldLmdldCgpLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OnZhbHVlLmdldCgpXTsKLSAgICB9CisgICAgYXV0byBhcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZXMuc2l6ZSgpXTsKKyAgICBm
b3IgKGF1dG8mIHZhbHVlIDogdmFsdWVzKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OlBsYXRm
b3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbih2YWx1ZS5nZXQoKSwgaW50ZXJu
YWxGaWx0ZXJQcm9wZXJ0eUluZGV4KS5nZXQoKV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJh
bWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIApA
QCAtNTY3LDM5ICs1MTcsMzUgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlW
YWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogICAgIGlmIChhbmlt
YXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUgfHwgdmFsdWUuYW5pbWF0aW9uVHlwZSgpICE9IEtleWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBvdGhlckFu
aW1hdGlvbiA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0
byBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3du
Y2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7
CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQo
KSkgc2V0VmFsdWVzOltvdGhlckFuaW1hdGlvbiB2YWx1ZXNdXTsKIH0KIAogdm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVl
KQogewotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKQotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6dmFsdWVbaV1dXTsK
LQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFs
dWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8gdGltZSA6IHZhbHVlKQorICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAodGltZSldOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9u
Kj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOmFycmF5XTsKIH0KIAogdm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXIgPSBzdGF0
aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOworICAgIGF1dG8gb3RoZXIgPSBzdGF0
aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxDQUtl
eWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOltvdGhlciBr
ZXlUaW1lc11dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VGltaW5n
RnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+JiB2YWx1ZSwgYm9v
bCByZXZlcnNlKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytp
KQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnRvQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKHZhbHVl
W2ldLCByZXZlcnNlKV07Ci0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IHZh
bHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnRvQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKGZ1
bmN0aW9uLCByZXZlcnNlKV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGltaW5nRnVuY3Rpb25zOmFycmF5XTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0
IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIENBS2V5ZnJhbWVBbmltYXRpb24q
IG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBhdXRv
IG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3Rh
dGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUaW1p
bmdGdW5jdGlvbnM6W290aGVyIHRpbWluZ0Z1bmN0aW9uc11dOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUZpbHRlcnNDb2NvYS5tbQppbmRleCBlMWFlNWQ5Yjc3MTIwNDMyMDZmY2VmYWQ0OWU0
YWJmMDU2ODA3OGViLi4zYzRkY2UyYWIzYjJlMDkzNTRiOGI3NDRlOTEzYzMwNmY2MDc3NmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBRmlsdGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KQEAgLTMyNCw3ICszMjQsNyBA
QCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3Bl
cmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAob3BlcmF0aW9uKQogICAgICAg
ICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4o
Km9wZXJhdGlvbikuYW1vdW50KCk7CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91bnQpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7
CkBAIC0zNjMsNyArMzYzLDcgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJz
OjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgaWYg
KG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOworICAgICAgICB2
YWx1ZSA9IEAoYW1vdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CkBAIC0zNzQsNyArMzc0LDcgQEAgUmV0YWluUHRyPE5T
VmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBG
aWx0ZXJPcGVyYXQKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAKICAgICAg
ICAgYW1vdW50ID0gZGVnMnJhZChhbW91bnQpOwotICAgICAgICB2YWx1ZSA9IFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91bnQpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogewpA
QCAtNDUyLDcgKzQ1Miw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6
ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlmIChv
cGVyYXRpb24pCiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCi0g
ICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKKyAgICAg
ICAgdmFsdWUgPSBAKGFtb3VudCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
NDYzLDcgKzQ2Myw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6Zmls
dGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlmIChvcGVy
YXRpb24pCiAgICAgICAgICAgICBhbW91bnQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGRvd25jYXN0
PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpLCAwKTsKICAg
ICAgICAgCi0gICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50
XTsKKyAgICAgICAgdmFsdWUgPSBAKGFtb3VudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRmxvYXRSZWN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWZhMDdmNmQ4ZmZhYjg3ZGQ4
OWQ5YWJjZjIwNmYxZDNiMGE5NjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSBOb2tpYS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKworI2lmICFQTEFURk9STShNQUMpCisj
aW1wb3J0IDxVSUtpdC9VSUdlb21ldHJ5Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitpZCBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpyZWN0XTsKKyNlbHNlCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpyZWN0
XTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZ
X1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKKworRmxvYXRSZWN0OjpGbG9hdFJlY3Qo
Y29uc3QgTlNSZWN0JiByZWN0KQorICAgIDogbV9sb2NhdGlvbihyZWN0Lm9yaWdpbikKKyAgICAs
IG1fc2l6ZShyZWN0LnNpemUpCit7Cit9CisKK0Zsb2F0UmVjdDo6b3BlcmF0b3IgTlNSZWN0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0
KCkpOworfQorCisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1M2NhZmE1MmE5
NTZhMzdmYmI2NTE0ZDUwMDY0Njk3YWQ4YzE0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSW50UmVjdC5oIgorCisjaWYgIVBMQVRG
T1JNKE1BQykKKyNpbXBvcnQgPFVJS2l0L1VJR2VvbWV0cnkuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2lkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBJbnRSZWN0JiByZWN0
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpyZWN0XTsKKyNlbHNlCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpyZWN0
XTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZ
X1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKKworSW50UmVjdDo6b3BlcmF0b3IgTlNS
ZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwg
aGVpZ2h0KCkpOworfQorCitJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNSZWN0JiBy
ZWN0KQoreworICAgIGludCBsZWZ0ID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Zmxvb3IocmVjdC5vcmln
aW4ueCkpOworICAgIGludCB0b3AgPSBjbGFtcFRvPGludD4oc3RkOjpmbG9vcihyZWN0Lm9yaWdp
bi55KSk7CisgICAgaW50IHJpZ2h0ID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Y2VpbChOU01heFgocmVj
dCkpKTsKKyAgICBpbnQgYm90dG9tID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Y2VpbChOU01heFkocmVj
dCkpKTsKKyAgICByZXR1cm4geyBsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9w
IH07Cit9CisKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQppbmRleCAwMDhkYmQ3ZDM5ZTAyNDZhNzk4MWY1
YjQ1MjNiMmJjZGMwMzljMWQwLi4zZmVjMzc4MzIyOTFmOGJhM2Y2ODdjYzBhMjJiYjZiNjI1YjJk
NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtICh2b2lkKWRpc3BsYXkKICAgICAg
ICAgaWYgKF9sYXRjaGVkUGJ1ZmZlcikgewogCiAgICAgICAgICAgICBHQ0dMZW51bSB0ZXh0dXJl
ID0gX2NvbnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpOwotICAgICAgICAgICAgZ2w6OkJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsK
KyAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
SU9TdXJmYWNlVGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CiAgICAgICAgICAgICBpZiAoIUVHTF9S
ZWxlYXNlVGV4SW1hZ2UoX2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1ZmZlciwgRUdMX0JBQ0tfQlVG
RkVSKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IuCiAgICAgICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCAtICh2b2lkKWFs
bG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemU6KFdlYkNvcmU6OkludFNpemUpc2l6
ZSB1c2luZ0FscGhhOgogICAgICAgICBFR0xfV0lEVEgsIHNpemUud2lkdGgoKSwKICAgICAgICAg
RUdMX0hFSUdIVCwgc2l6ZS5oZWlnaHQoKSwKICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9B
TkdMRSwgMCwKLSAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBHcmFwaGljc0NvbnRleHRHTDo6
RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCwKKyAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCwKICAg
ICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCB1c2luZ0FscGhhID8gR0xf
QkdSQV9FWFQgOiBHTF9SR0IsCiAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRV
UkVfUkdCQSwKICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgR0xfVU5TSUdORURfQllU
RSwKQEAgLTI2MCw3ICsyNjAsNyBAQCAtICh2b2lkKWJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWls
YWJsZVN1cmZhY2UKICNlbGlmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSB0ZXh0dXJlID0gX2Nv
bnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpOwogCi0gICAgZ2w6OkJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBnbDo6Qmlu
ZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJn
ZXQsIHRleHR1cmUpOwogCiAgICAgaWYgKF9sYXRjaGVkUGJ1ZmZlcikgewogICAgICAgICBpZiAo
IUVHTF9SZWxlYXNlVGV4SW1hZ2UoX2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1ZmZlciwgRUdMX0JB
Q0tfQlVGRkVSKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ZvbnRDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9Gb250Q2FjaGVJT1MubW0KaW5kZXggY2UzZjhkYjFjMTJhMDkwOWRiZjU1ZGM4NWQ2NDkw
ZTljODg5YjYyZS4uNGYwOGNhMDZkMjRlOWRjM2ZhMDQzNDE4YzNjYmZjMjgyNzZlZTFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hl
SU9TLm1tCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IHN5c3RlbUZvbnRNb2RpZmljYXRpb25BdHRyaWJ1dGVzKEZvbnRTZWxlY3Rpb25WYWwKICAgICBb
dHJhaXRzRGljdGlvbmFyeSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJp
bmcgKj4oa0NURm9udFVJRm9udERlc2lnblRyYWl0KV07CiAKICAgICBpZiAoaXRhbGljKQotICAg
ICAgICBbdHJhaXRzRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
a0NURm9udEl0YWxpY1RyYWl0XSBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa0NURm9u
dFN5bWJvbGljVHJhaXQpXTsKKyAgICAgICAgW3RyYWl0c0RpY3Rpb25hcnkgc2V0T2JqZWN0OkAo
a0NURm9udEl0YWxpY1RyYWl0KSBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa0NURm9u
dFN5bWJvbGljVHJhaXQpXTsKIAogICAgIHJldHVybiBAeyBzdGF0aWNfY2FzdDxOU1N0cmluZyAq
PihrQ1RGb250VHJhaXRzQXR0cmlidXRlKSA6IHRyYWl0c0RpY3Rpb25hcnkuZ2V0KCkgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJl
Y3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRSZWN0
TWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWQzNDhhY2NiYmU0NDE4NTFl
YWVhYWVjYWM5ZWRiNjZkZmUxMWYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJl
Y3RNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQotI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRS
WV9UWVBFUwotCi1GbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHIpIDogbV9sb2Nh
dGlvbihyLm9yaWdpbiksIG1fc2l6ZShyLnNpemUpCi17Ci19Ci0KLUZsb2F0UmVjdDo6b3BlcmF0
b3IgTlNSZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lk
dGgoKSwgaGVpZ2h0KCkpOwotfQotCi0jZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ludFJlY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW50UmVjdE1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5NjFlYjgzNzA0
OTU2OTE2M2U2OTFkNzAxMzIzZWNhMDU2MzYyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW50UmVjdE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQotI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNf
Q0dHRU9NRVRSWV9UWVBFUwotCi1JbnRSZWN0OjpvcGVyYXRvciBOU1JlY3QoKSBjb25zdAotewot
ICAgIHJldHVybiBOU01ha2VSZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci19Ci0K
LUludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1JlY3QmIHJlY3QpCi17Ci0gICAgaW50
IGwgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihyZWN0Lm9yaWdpbi54KSk7Ci0gICAgaW50IHQg
PSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihyZWN0Lm9yaWdpbi55KSk7Ci0gICAgaW50IHIgPSBz
dGF0aWNfY2FzdDxpbnQ+KGNlaWxmKE5TTWF4WChyZWN0KSkpOwotICAgIGludCBiID0gc3RhdGlj
X2Nhc3Q8aW50PihjZWlsZihOU01heFkocmVjdCkpKTsKLSAgICByZXR1cm4gSW50UmVjdChsLCB0
LCByIC0gbCwgYiAtIHQpOwotfQotCi0jZW5kaWYKLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBj
MGUxZjJkYTZiMzI5OGM3NjBhY2M1NTExZTQ2ZTg5MWJiMmNlOTlkLi5iYWEyNTU1MDhjMzgwODZh
YzYwYzRlMTAyOTFhMTNjNzM2MTUxZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTM5LDEzICszOSwxNSBAQAog
I2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2lt
cG9ydCA8VUlLaXQvVUlQYXN0ZWJvYXJkLmg+Ci0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExp
bmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvTGlz
dEhhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5o
PgorCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmICEoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikp
KQogI2RlZmluZSBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVB
TV9EQVRBIChQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTICYmICFQTEFURk9STShN
QUNDQVRBTFlTVCkpCiAjZGVmaW5lIE5TVVJMX1NVUFBPUlRTX1RJVExFICghUExBVEZPUk0oTUFD
Q0FUQUxZU1QpKQpAQCAtNzQsOCArNzYsNyBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3Jt
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewotICAgIGZvciAoTlNTdHJpbmcgKnBhc3Rl
Ym9hcmRUeXBlIGluIFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSkKLSAgICAgICAgdHlw
ZXMuYXBwZW5kKHBhc3RlYm9hcmRUeXBlKTsKKyAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5n
PihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQpAQCAtNTg3LDEwICs1ODgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgICAgICAg
ICAgLy8gZXZlbnRzLCB3ZSBuZWVkIGFuIGFkZGl0aW9uYWwgaW4tbWVtb3J5IHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFycmF5IHRoYXQgY29udGFpbnMKICAgICAgICAg
ICAgIC8vIGFsbCBvZiB0aGUgY3VzdG9tIHR5cGVzLiBXZSB1c2UgdGhlIHRlYW1EYXRhIHByb3Bl
cnR5LCBhdmFpbGFibGUgb24gTlNJdGVtUHJvdmlkZXIgb24gaU9TLCB0byBzdG9yZQogICAgICAg
ICAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiwgc2luY2UgdGhlIGNvbnRlbnRzIG9mIHRlYW1EYXRh
IGFyZSBpbW1lZGlhdGVseSBhdmFpbGFibGUgcHJpb3IgdG8gdGhlIGRyb3AuCi0gICAgICAgICAg
ICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqdHlwZXNBc05TQXJyYXkgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwotICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVk
VHlwZXMoKSkKLSAgICAgICAgICAgICAgICBbdHlwZXNBc05TQXJyYXkgYWRkT2JqZWN0OnR5cGVd
OwotICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp0ZWFtRGF0YURpY3Rpb25hcnkgPSBAeyBAKG9y
aWdpbktleUZvclRlYW1EYXRhKSA6IGRhdGEub3JpZ2luKCksIEAoY3VzdG9tVHlwZXNLZXlGb3JU
ZWFtRGF0YSkgOiB0eXBlc0FzTlNBcnJheSB9OworICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp0
ZWFtRGF0YURpY3Rpb25hcnkgPSBAeyBAKG9yaWdpbktleUZvclRlYW1EYXRhKSA6IGRhdGEub3Jp
Z2luKCksIEAoY3VzdG9tVHlwZXNLZXlGb3JUZWFtRGF0YSkgOiBjcmVhdGVOU0FycmF5KGRhdGEu
b3JkZXJlZFR5cGVzKCkpLmdldCgpIH07CiAgICAgICAgICAgICBpZiAoTlNEYXRhICp0ZWFtRGF0
YSA9IFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dGVhbURhdGFE
aWN0aW9uYXJ5IHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pIHsKICAg
ICAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRUZWFtRGF0YTp0ZWFt
RGF0YV07CiAgICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpzZXJpYWxpemVkU2hhcmVkQnVmZmVyLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKQEAgLTc1MywxMSArNzUxLDcgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHkKICAgICBpZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KV0pCiAgICAgICAgIHJldHVybjsK
IAotICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OnR5cGVzLnNpemUoKV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiB0eXBlIDog
dHlwZXMpCi0gICAgICAgIFt0eXBlc0FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKil0eXBlXTsK
LQotICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOnR5cGVz
QXJyYXldOworICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
OmNyZWF0ZU5TQXJyYXkodHlwZXMpLmdldCgpXTsKIH0KIAogaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQppbmRleCA3MTkzYjY1YmViZTQ5YTUwNDBkZDhkODExOGViYTBmZWY1YjJhODZhLi5iODE2
MzA4YjU5NmVjOTNmM2NjODQ5YTEyOWQwZTkzMTEyNWY4MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpA
QCAtNTE4LDcgKzUxOCw3IEBAIC0gKE5TQXJyYXk8X19raW5kb2YgTlNJdGVtUHJvdmlkZXIgKj4g
KilpdGVtUHJvdmlkZXJzCiAKIC0gKHZvaWQpc2V0SXRlbVByb3ZpZGVyczooTlNBcnJheTxfX2tp
bmRvZiBOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKLSAgICBpdGVtUHJvdmlk
ZXJzID0gaXRlbVByb3ZpZGVycyA/OiBbTlNBcnJheSBhcnJheV07CisgICAgaXRlbVByb3ZpZGVy
cyA9IGl0ZW1Qcm92aWRlcnMgPzogQFsgXTsKICAgICBpZiAoX2l0ZW1Qcm92aWRlcnMgPT0gaXRl
bVByb3ZpZGVycyB8fCBbX2l0ZW1Qcm92aWRlcnMgaXNFcXVhbFRvQXJyYXk6aXRlbVByb3ZpZGVy
c10pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XQUtWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
QUtWaWV3Lm1tCmluZGV4IGUzMzVkNzViZGNhNGZhNzllNWYzZGQwMjlhMDY4YzM0YjY3ZDM2MWYu
LjI0N2Y5MmZlOWFkMzNmMzM2OTRjMzkyYjVhMmI5Yjk2MGI1NmE4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTI4NCwxNSArMjg0LDE1IEBAIC0g
KE5TQXJyYXkgKilzdWJ2aWV3cwogewogICAgIENGQXJyYXlSZWYgc3Vidmlld3MgPSBXS1ZpZXdH
ZXRTdWJ2aWV3cyhbc2VsZiBfdmlld1JlZl0pOwogICAgIGlmICghc3Vidmlld3MpCi0gICAgICAg
IHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAWyBdOwogICAgIAogICAg
IENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3Vidmlld3MpOwogICAgIGlmIChjb3Vu
dCA9PSAwKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4g
QFsgXTsKICAgICAKICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OmNvdW50XTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbIF07CiAgICAgCiAgICAgQ0ZB
cnJheUFwcGx5RnVuY3Rpb24oc3Vidmlld3MsIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgX1dBS0Nv
cHlXcmFwcGVyLCAodm9pZCopcmVzdWx0KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGM5NjRmNDFmNDE5
MWRkYTE0MWJiMmRkYzAyNDYxMGFjYTAyZjRmYzQuLjA3NjI3ZjFjYjQyNDc4YmQ2MzMxOWRlNmNm
YmEzM2Y3MzY5ZGRhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsMTAgKzU4LDcgQEAg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcykKIHsKLSAgICBOU0FycmF5ICpwYXN0ZWJvYXJkVHlwZXMgPSBbbV9wYXN0
ZWJvYXJkLmdldCgpIHR5cGVzXTsKLQotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtw
YXN0ZWJvYXJkVHlwZXMgY291bnRdOyBpKyspCi0gICAgICAgIHR5cGVzLmFwcGVuZChbcGFzdGVi
b2FyZFR5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJp
bmc+KFttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCkBAIC05NSwxMyArOTMsMTIgQEAgaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVt
YmVyT2ZGaWxlcygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0CiB7Ci0gICAgTlNBcnJheSogcGF0aHMgPSBbbV9wYXN0ZWJvYXJkLmdl
dCgpIHByb3BlcnR5TGlzdEZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIGlkIHBhdGhzID0g
W21fcGFzdGVib2FyZC5nZXQoKSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsK
ICAgICBpZiAoW3BhdGhzIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAg
ICAgcGF0aG5hbWVzLmFwcGVuZCgoTlNTdHJpbmcgKilwYXRocyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3BhdGhzIGNvdW50XTsgaSsr
KQotICAgICAgICBwYXRobmFtZXMuYXBwZW5kKFtwYXRocyBvYmplY3RBdEluZGV4OmldKTsKKyAg
ICBwYXRobmFtZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4ocGF0aHMpOwogfQogCiBzdGF0aWMgYm9v
bCBwYXN0ZWJvYXJkTWF5Q29udGFpbkZpbGVQYXRocyhOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQp
CkBAIC0zMTcsMjQgKzMxNCwxNiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShj
b25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKQogCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKIHsKLSAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXN0ZWJvYXJk
VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6cGFzdGVi
b2FyZFR5cGVzW2ldXTsKLQotICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVz
OnR5cGVzLmdldCgpIG93bmVyOm5pbF07CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQuZ2V0KCkg
YWRkVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07
CiB9CiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogewotICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKGF1dG8mIHBhc3RlYm9hcmRU
eXBlIDogcGFzdGVib2FyZFR5cGVzKSB7Ci0gICAgICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJk
VHlwZShwYXN0ZWJvYXJkVHlwZSkpIHsKLSAgICAgICAgICAgIFt0eXBlcyByZW1vdmVBbGxPYmpl
Y3RzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFt0eXBlcyBhZGRP
YmplY3Q6cGFzdGVib2FyZFR5cGVdOworICAgICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5
cGUocGFzdGVib2FyZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVj
bGFyZVR5cGVzOkBbXSBvd25lcjpuaWxdOwogICAgIH0KLSAgICByZXR1cm4gW21fcGFzdGVib2Fy
ZCBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6bmlsXTsKKyAgICByZXR1cm4gW21fcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgp
IG93bmVyOm5pbF07CiB9CiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJG
b3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCmluZGV4
IGFiZjJiZjEzMDhhZmRjZWRlZGI1M2E1MTE5MWNlZmM0MTFjZWJiYTUuLmNiYzY2NmU1ZWM3YjA0
Njg5ZDc3MDAyZDczMTE4ZWY1MjRiY2M4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKQEAgLTMyLDggKzMyLDQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZ1RvQmVNYXRjaGVkLCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3Ry
aW5nKTsKIAotI2lmZGVmIF9fT0JKQ19fCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiB3
ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXkoTlNBcnJheTxOU1N0cmluZyAqPiAq
KTsKLSNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCBmMWY1NmIzMDg3ZDBlMDkxMWYx
ODBlNTUzMjA2NmZiMGRhMWU2YTllLi43Y2QxYmQ4MGFlOWUzM2U3NTZmNjU5MTIyNDBmN2VkNmNj
MzNjNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW0KQEAgLTU5LDE1ICs1OSw0IEBAIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3RyCiAgICAgcmV0
dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBhdHRlcm5TdHJp
bmcod2lsZGNhcmRTdHJpbmcpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpLm1hdGNo
KHN0cmluZykgIT0gLTE7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdWZWN0b3JG
cm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICpuc1N0cmluZ0FycmF5KQotewot
ICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ1ZlY3RvcjsKLSAgICBzdHJpbmdWZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShbbnNTdHJpbmdBcnJheSBjb3VudF0pOwotCi0gICAgZm9yIChOU1N0
cmluZyAqbnNTdHJpbmcgaW4gbnNTdHJpbmdBcnJheSkKLSAgICAgICAgc3RyaW5nVmVjdG9yLnVu
Y2hlY2tlZEFwcGVuZChuc1N0cmluZyk7Ci0KLSAgICByZXR1cm4gc3RyaW5nVmVjdG9yOwotfQot
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJh
cy5tbQppbmRleCAzODM2OGVjMjQ3ZGQwMDQ0YWI5ZGFhZThkZjY0MDU5MGRkMDIwMjhiLi5jNzVk
MjBmMGY3NzU2MTc5ZDRmOWQ4MDI4MWVjYTQ0OGVkMjAwYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMxLDcgKzMxLDYg
QEAKIAogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9G
dW5jdGlvbi5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx1bmljb2Rl
L3VjaGFyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggMjMzNTRmNDc4NGRlMDkyZjA0ODdjMTg1NGZjNWIyNmE1ZTIyMTFh
Yy4uNDRmZmRjMGI3NTNmM2Y3ZDI4ZmM2ZmQ0Nzg2OTlkNzJlNGVkZDdmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTYy
LDcgKzE2Miw3IEBAIGJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5w
dXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIEFTU0VSVCghbV92aWRlb0lucHV0KTsKICAg
ICAKICAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJvcGVydGllcyA9IEB7Ci0gICAgICAg
IEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051bWJlciBudW1iZXJXaXRoSW50OndpZHRo
ICogaGVpZ2h0ICogMTJdLAorICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBAKHdp
ZHRoICogaGVpZ2h0ICogMTIpLAogICAgICAgICBBVlZpZGVvRXhwZWN0ZWRTb3VyY2VGcmFtZVJh
dGVLZXkgOiBAKDMwKSwKICAgICAgICAgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXkgOiBA
KDEyMCksCiAgICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkgOiBBVlZpZGVvUHJvZmlsZUxl
dmVsSDI2NE1haW5BdXRvTGV2ZWwKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKIAog
ICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7CiAgICAgICAgIEFWVmlkZW9Db2Rl
Y0tleTogQVZWaWRlb0NvZGVjSDI2NCwKLSAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051
bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0sCisgICAgICAgIEFWVmlkZW9XaWR0aEtleTogQCh3
aWR0aCksCisgICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IEAoaGVpZ2h0KSwKICAgICAgICAgQVZW
aWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCiAgICAg
fTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAxM2VkYzM1NWE1MzU4
MzZhNjY4NTAxMjc4ODM5YjI5MGY0NzgzNTJjLi5mMTc3ZTA5NjdhZjc1OWQ4NTljZGViNTg5NDg0
OTZkMDVmMjQ2OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC00NDIsNyAr
NDQyLDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigp
CiAgICAgW3Nlc3Npb24oKSBhZGRJbnB1dDp2aWRlb0luLmdldCgpXTsKIAogICAgIG1fdmlkZW9P
dXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0SW5zdGFu
Y2UoKSBpbml0XSk7Ci0gICAgYXV0byBzZXR0aW5nc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czogW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6YXZWaWRlb0NhcHR1cmVQaXhlbEJ1ZmZlckZvcm1hdCgpXSwga0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF0pOworICAgIGF1dG8gc2V0dGluZ3NEaWN0
aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6IEAoYXZWaWRlb0NhcHR1cmVQaXhlbEJ1ZmZlckZvcm1hdCgpKSwga0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF0pOwogCiAgICAgW21fdmlkZW9PdXRwdXQg
c2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCldOwogICAgIFttX3ZpZGVv
T3V0cHV0IHNldEFsd2F5c0Rpc2NhcmRzTGF0ZVZpZGVvRnJhbWVzOllFU107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQppbmRl
eCBmNjc2YTI0NTU4ZDg5ODBmZjIxMjUyMTM4NDQ0MWEzZjRlYmUzMTkxLi5jOTdhZWJkN2RmOGYw
YmFkMjY5MTQyYWVlM2Y1MmQzYmUwN2QzMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KQEAgLTE3NSw3ICsxNzUsNyBA
QCBDb29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqIF9OdWxsYWJsZSAoKSBjb25zdAogICAg
IH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtwcm9wZXJ0aWVzIHNl
dE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpjcmVhdGVkIC8gMTAwMC4wIC0gTlNU
aW1lSW50ZXJ2YWxTaW5jZTE5NzBdIGZvcktleTpAIkNyZWF0ZWQiXTsKKyAgICBbcHJvcGVydGll
cyBzZXRPYmplY3Q6QChjcmVhdGVkIC8gMTAwMC4wIC0gTlNUaW1lSW50ZXJ2YWxTaW5jZTE5NzAp
IGZvcktleTpAIkNyZWF0ZWQiXTsKICNlbmRpZgogCiAgICAgYXV0byogcG9ydFN0cmluZyA9IHBv
cnRTdHJpbmdGcm9tVmVjdG9yKHBvcnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tCmluZGV4IGJkMGZkNjc1Mzg4MjViZTA4MWM3OTVjNDg3ZjI2MTAxZDhjMzRmZDUuLmM0
YmQ1ZWZiYWNiYWRhMGNlYTJlODBmYzg1NzE4ZDZhMTY3NmUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0ci5jb250YWlucygn
PScpID8gY29va2llU3RyIDogY29va2llU3RyICsgIj0iOwogCiAgICAgTlNVUkwgKmNvb2tpZVVS
TCA9IHVybDsKLSAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3Q6Y29va2llU3RyaW5nIGZvcktleTpAIlNldC1Db29raWUiXTsK
KyAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IEB7IEAiU2V0LUNvb2tpZSI6IGNvb2tp
ZVN0cmluZyB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TQXJyYXkgKnVuZmlsdGVyZWRD
b29raWVzID0gW05TSFRUUENvb2tpZSBfcGFyc2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZp
ZWxkczpoZWFkZXJGaWVsZHMgZm9yVVJMOmNvb2tpZVVSTF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbQppbmRleCBkNmVlZWZkZDhjOTZkMzg4OWNmZTZkZTk0ZjI1ZDViY2FjZmVjZjcyLi43NjZl
YTNiODJmNTg1YWYxNmFmZGFiZTEyYWNhODcyODYyNDQwYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0KQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6c2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bv
c2l0aW9uLCBuc1JlcXVlc3QuVVJMKSBmb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3Bl
cnR5U2l0ZUZvckNvb2tpZXMiXTsKLSAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6bV9pc1RvcFNpdGVdIGZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9s
aWN5UHJvcGVydHlJc1RvcExldmVsTmF2aWdhdGlvbiJdOworICAgIFtuc1JlcXVlc3QgX3NldFBy
b3BlcnR5Om1faXNUb3BTaXRlID8gQFlFUyA6IEBOTyBmb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBv
bGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKICNlbmRpZgogCiAgICAgLy8gQ2Fu
bm90IGp1c3QgdXNlIHNldEFsbEhUVFBIZWFkZXJGaWVsZHMgaGVyZSwgYmVjYXVzZSBpdCBkb2Vz
IG5vdCByZW1vdmUgaGVhZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA0M2RmNTJkYWU1ZmEw
Mzg4NWQwNzA5YTdlNzRkMzhjODI4MjczZDJkLi42MjZmZWI1MjI4YzFkZjgyMTIwYzQ5YzY4YWZj
MWUwNDQyN2QyMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01Miw3ICs1Miw2IEBACiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ha2VkUmVmLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IGVjYmI3OTc3NzZjMmI4Zjk3MTY1YzMzOWVmMDRm
ZmJmNDk0YTY4ZDkuLjY4NGZkODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgxN2Y0YzJhZTg0M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KQEAgLTI5
LDcgKzI5LDYgQEAKICNpbXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tTdHJp
bmdDRi5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVndWxhckV4cHJlc3Npb24uaD4KLSNp
bXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCAxM2I5
YWRhNjEwMmM2NDFlMjI3NzFhZWVhNDY0ZDFkMGJhZDY0NzYyLi4yNzAzYjI4YjFmMzY0YzJjYjEz
MWVjMTAxZGI3MDIxZGYwMmMyZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC01Niw2ICs1Niw3IEBACiAjaW1wb3J0
IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIGNvbnN0
IENGU3RyaW5nUmVmIGtMU1BsdWdJbkJ1bmRsZUlkZW50aWZpZXJLZXkgPSBDRlNUUigiTFNQbHVn
SW5CdW5kbGVJZGVudGlmaWVyS2V5Iik7CiAKQEAgLTI1NiwxMiArMjU3LDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZWROU0NvbmNyZXRlVGFza19sYXVuY2goTlNUYXNrICpzZWxmLCBTRUwgX2NtZCkK
IHsKICAgICBTdHJpbmcgbGF1bmNoUGF0aCA9IHNlbGYubGF1bmNoUGF0aDsKIAotICAgIFZlY3Rv
cjxTdHJpbmc+IGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzZWxmLmFyZ3VtZW50cy5jb3VudCk7Ci0gICAgZm9yIChOU1N0cmluZyAqYXJndW1lbnQgaW4g
c2VsZi5hcmd1bWVudHMpCi0gICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQoYXJndW1l
bnQpOwotCi0gICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaFByb2Nlc3Mo
bGF1bmNoUGF0aCwgYXJndW1lbnRzKSkKKyAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9u
KCkubGF1bmNoUHJvY2VzcyhsYXVuY2hQYXRoLCBtYWtlVmVjdG9yPFN0cmluZz4oc2VsZi5hcmd1
bWVudHMpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTlNDb25jcmV0ZVRhc2tfbGF1bmNoKHNl
bGYsIF9jbWQpOwpAQCAtMjcxLDE2ICsyNjcsOCBAQCBzdGF0aWMgTlNSdW5uaW5nQXBwbGljYXRp
b24gKigqTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2NvbmZpZwog
CiBzdGF0aWMgTlNSdW5uaW5nQXBwbGljYXRpb24gKnJlcGxhY2VkTlNXb3Jrc3BhY2VfbGF1bmNo
QXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2NvbmZpZ3VyYXRpb25fZXJyb3IoTlNXb3Jrc3BhY2Ug
KnNlbGYsIFNFTCBfY21kLCBOU1VSTCAqdXJsLCBOU1dvcmtzcGFjZUxhdW5jaE9wdGlvbnMgb3B0
aW9ucywgTlNEaWN0aW9uYXJ5ICpjb25maWd1cmF0aW9uLCBOU0Vycm9yICoqZXJyb3IpCiB7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgaWYgKE5TQXJyYXkgKmFyZ3VtZW50c0FycmF5ID0gW2NvbmZpZ3Vy
YXRpb24gb2JqZWN0Rm9yS2V5Ok5TV29ya3NwYWNlTGF1bmNoQ29uZmlndXJhdGlvbkFyZ3VtZW50
c10pIHsKLSAgICAgICAgaWYgKFthcmd1bWVudHNBcnJheSBpc0tpbmRPZkNsYXNzOltOU0FycmF5
IGFycmF5XV0pIHsKLSAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmFyZ3VtZW50IGluIGFyZ3Vt
ZW50c0FycmF5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KGFyZ3VtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBhdXRvIGFy
Z3VtZW50cyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbY29uZmlndXJhdGlvbiBvYmplY3RGb3JLZXk6
TlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzXSk7CiAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2luZ2xl
dG9uKCkubGF1bmNoQXBwbGljYXRpb25BdFVSTChVUkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRz
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggZjIz
MzhiOGNjMDE3NWMyZDA2ZTY3Yzk4YzM1NDQ1ODc2YjQ0NDk4ZC4uMzEzMDg4NjY1MjVmNjE4Yjhm
NjE4YTZkNTc5ZGI4NzM2MDcwMGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCkBAIC0zMiwxMCArMzIsMTIgQEAKICNpbXBvcnQgIldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxwYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
PgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPgpAQCAtMTMxLDE0
ICsxMzMsNiBAQCBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01lcmNoYW50Q2FwYWJp
bGl0aWVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2VzcwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdG9TdXBwb3J0ZWROZXR3b3Jrcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MpCi17Ci0gICAgYXV0byByZXN1bHQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c3VwcG9ydGVk
TmV0d29ya3Muc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBzdXBwb3J0ZWROZXR3b3JrIDogc3Vw
cG9ydGVkTmV0d29ya3MpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OnN1cHBvcnRlZE5ldHdv
cmtdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBQS1NoaXBwaW5nVHlwZSB0b1BL
U2hpcHBpbmdUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlw
cGluZ1R5cGUgc2hpcHBpbmdUeXBlKQogewogICAgIHN3aXRjaCAoc2hpcHBpbmdUeXBlKSB7CkBA
IC0yMTIsNyArMjA2LDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKICAgICBbcmVzdWx0IHNl
dFJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6dG9QS0NvbnRhY3RGaWVsZHMocGF5bWVudFJl
cXVlc3QucmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07CiAgICAgW3Jlc3Vs
dCBzZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczp0b1BLQ29udGFjdEZpZWxkcyhwYXlt
ZW50UmVxdWVzdC5yZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07CiAKLSAg
ICBbcmVzdWx0IHNldFN1cHBvcnRlZE5ldHdvcmtzOnRvU3VwcG9ydGVkTmV0d29ya3MocGF5bWVu
dFJlcXVlc3Quc3VwcG9ydGVkTmV0d29ya3MoKSkuZ2V0KCldOworICAgIFtyZXN1bHQgc2V0U3Vw
cG9ydGVkTmV0d29ya3M6Y3JlYXRlTlNBcnJheShwYXltZW50UmVxdWVzdC5zdXBwb3J0ZWROZXR3
b3JrcygpKS5nZXQoKV07CiAgICAgW3Jlc3VsdCBzZXRNZXJjaGFudENhcGFiaWxpdGllczp0b1BL
TWVyY2hhbnRDYXBhYmlsaXRpZXMocGF5bWVudFJlcXVlc3QubWVyY2hhbnRDYXBhYmlsaXRpZXMo
KSldOwogCiAgICAgW3Jlc3VsdCBzZXRTaGlwcGluZ1R5cGU6dG9QS1NoaXBwaW5nVHlwZShwYXlt
ZW50UmVxdWVzdC5zaGlwcGluZ1R5cGUoKSldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViRXJyb3JzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJFcnJvcnNDb2NvYS5tbQppbmRleCA2ZjlmZGIwMGVjZDRhYWMzMzE3OTI2ODhiNzIwNWM0
YTBkMDY0NmI3Li43NGVjOWFjMmFkOTE2MjVhYTBmZTc0MWVjMjc3ZDRmYjJjNWQzZTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJFcnJvcnNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJFcnJvcnNDb2NvYS5tbQpAQCAtMjYsMzMg
KzI2LDI4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkVycm9ycy5oIgogCi0j
aW1wb3J0ICJBUElFcnJvci5oIgotI2ltcG9ydCAiV0tFcnJvclJlZi5oIgotI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNF
cnJvcj4gY3JlYXRlTlNFcnJvcihOU1N0cmluZyogZG9tYWluLCBpbnQgY29kZSwgTlNVUkwgKlVS
TCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvcihOU1N0cmluZyAqZG9t
YWluLCBpbnQgY29kZSwgTlNVUkwgKlVSTCkKIHsKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBV
UkwsIEAiTlNFcnJvckZhaWxpbmdVUkxLZXkiLAotICAgICAgICBbVVJMIGFic29sdXRlU3RyaW5n
XSwgQCJOU0Vycm9yRmFpbGluZ1VSTFN0cmluZ0tleSIsCi0gICAgICAgIG5pbF07Ci0KKyAgICBO
U0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsKKyAgICAgICAgQCJOU0Vycm9yRmFpbGluZ1VSTEtl
eSI6IFVSTCwKKyAgICAgICAgQCJOU0Vycm9yRmFpbGluZ1VSTFN0cmluZ0tleSI6IFVSTC5hYnNv
bHV0ZVN0cmluZywKKyAgICB9OwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10g
aW5pdFdpdGhEb21haW46ZG9tYWluIGNvZGU6Y29kZSB1c2VySW5mbzp1c2VySW5mb10pOwogfQog
Ci1SZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGNyZWF0ZU5TRXJyb3IoTlNVUkxFcnJvckRvbWFpbiwgTlNVUkxFcnJvckNhbmNlbGxlZCwgcmVx
dWVzdC51cmwoKSkuZ2V0KCkpOworICAgIHJldHVybiBjcmVhdGVOU0Vycm9yKE5TVVJMRXJyb3JE
b21haW4sIE5TVVJMRXJyb3JDYW5jZWxsZWQsIHJlcXVlc3QudXJsKCkpLmdldCgpOwogfQogCi1S
ZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGNyZWF0ZU5TRXJyb3IoTlNVUkxFcnJvckRvbWFpbiwgTlNVUkxFcnJv
ckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNlLnVybCgpKS5nZXQoKSk7CisgICAgcmV0dXJuIGNy
ZWF0ZU5TRXJyb3IoTlNVUkxFcnJvckRvbWFpbiwgTlNVUkxFcnJvckZpbGVEb2VzTm90RXhpc3Qs
IHJlc3BvbnNlLnVybCgpKS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQppbmRleCA3MDEzMjgxZWMz
NGJiZjRhNThlMDIzMGY0ZThmNDQ5Y2Y0OWQ0NDMxLi5kZmQ0YjYwZWI5ZThkZjFlYWRhZjAyNDdl
OWIyZDJiMGQ0NmM4MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFz
dGVib2FyZFR5cGVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJk
VHlwZXMubW0KQEAgLTQ2LDMyICs0NiwzMiBAQCBzdGF0aWMgaW5saW5lIE5TQXJyYXkgKnJldGFp
bihOU0FycmF5ICphcnJheSkKICAgICAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yRWRp
dGluZygpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6V2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5
VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCks
Ci0gICAgICAgIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lDb2xvclBhc3RlYm9hcmRUeXBlKCksIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkcs
IG5pbF0pOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQ
Ym9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29y
ZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lV
UkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQog
CiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvclVSTCgpCiB7Ci0gICAgc3RhdGljIE5TQXJy
YXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6V2ViVVJMc1dpdGhU
aXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJV
UkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0pOwor
ICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJk
VHlwZSwgIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXSk7CiAgICAgcmV0dXJuIHR5
cGVzOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcygpCiB7Ci0gICAg
c3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6
V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJk
VHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCksIG5pbF0pOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dl
YkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2Fy
ZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5
cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJk
VHlwZSgpXSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlw
ZXM6OmZvckltYWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMg
PSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBuaWxdKTsKKyAg
ICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXSk7CiAgICAgcmV0
dXJuIHR5cGVzOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbigp
CiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdHM6V2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBb
V2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNo
aXZlLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5
UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5k
ZXggMWQwMDgzYzU3Y2JlYTk3ZGViN2I5MGVkY2IxNzhkMDNmZmU0MmRlMy4uMTY0ZjYwZWNjY2M1
ZDY3NjNmNWE5M2QwNzNjMjhhMjc1MjBkYmI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAg
LTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBzdGF0aWMgV0tFcnJvckNvZGUgdG9XS0Vycm9y
Q29kZShjb25zdCBzdGQ6OmVycm9yX2NvZGUmIGVycm9yKQogewpAQCAtOTMsMTAgKzk0LDcgQEAg
LSAodm9pZClsb29rVXBDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlk
ZW50aWZpZXIgY29tcGxldGlvbkhhbmQKIC0gKHZvaWQpZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVM
aXN0SWRlbnRpZmllcnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4qKSljb21wbGV0aW9u
SGFuZGxlcgogewogICAgIF9jb250ZW50UnVsZUxpc3RTdG9yZS0+Z2V0QXZhaWxhYmxlQ29udGVu
dFJ1bGVMaXN0SWRlbnRpZmllcnMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMpIHsKLSAgICAgICAg
TlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKm5zSWRlbnRpZmllcnMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6aWRlbnRpZmllcnMuc2l6ZSgpXTsKLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpCi0gICAgICAgICAgICBbbnNJZGVu
dGlmaWVycyBhZGRPYmplY3Q6aWRlbnRpZmllcl07Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5zSWRlbnRpZmllcnMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVOU0FycmF5
KGlkZW50aWZpZXJzKS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMDMyNTg0NTcxY2I2
M2RiZTZiNDlhNzk1M2Y2ZThkNmQ3ZTgzZTM3NS4uZjVlYWNlZTBlOGNlM2IzMTQ5MzQ1NDEwZjlh
MjYxZDUyN2UzOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpD
UHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZh
Y2UuaD4KQEAgLTYxMCwxMCArNjExLDcgQEAgLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxv
YWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOigKIC0gKHZv
aWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBp
ZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgX3Byb2Nlc3NQb29sLT5hY3RpdmVQYWdlc09yaWdpbnNJbldl
YlByb2Nlc3NGb3JUZXN0aW5nKHBpZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxTdHJpbmc+JiYgYWN0aXZlUGFnZXNPcmlnaW5z
KSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphcnJheSA9IFtbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFjdGl2ZVBhZ2VzT3JpZ2lucy5zaXpl
KCldIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBhY3RpdmVQYWdl
c09yaWdpbnMpCi0gICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Om9yaWdpbl07Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGFycmF5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3Jl
YXRlTlNBcnJheShhY3RpdmVQYWdlc09yaWdpbnMpLmdldCgpKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KaW5k
ZXggNTg4YTg2YjQyMGM0MDJkMTk0YjgwZTljNjg2MDczZjc3MzAxZDQ3Mi4uOGUxMGVmZmViZTc1
YWYyZTZlYWI1YTcxOWEzNmZkY2MxMGM4YmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1w
b3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdv
cmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1w
bGVtZW50YXRpb24gV0tVc2VyU2NyaXB0CiAKQEAgLTg0LDcgKzg1LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tV
c2VyU2NyaXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
QVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
KTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4o
c2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNl
clNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdo
aXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZy
YW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwg
KnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CkBAIC05NCw3ICs5NSw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdp
dGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdElu
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2Vs
ZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lh
dGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0
Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIG1ha2VWZWN0b3I8U3RyaW5n
PihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTEwLDcgKzExMSw3IEBAIC0gKGluc3RhbmNl
dHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdL
VXNlclNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNl
clNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSks
IEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3Rv
cihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCks
IEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZv
ck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0
aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVV
bmlxdWVVUkwoKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0
b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2Fp
dEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEyMCw3ICsxMjEsNyBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rp
b25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmlu
Zyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRv
V2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJh
bWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BG
cmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFs
bEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8g
fSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIG1ha2VWZWN0b3I8U3Ry
aW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0
KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwg
Zm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmpl
Y3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkBAIC0xMzAsNyArMTMxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNv
dXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW4KICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRV
UkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIGRlZmVyUnVubmluZ1VudGls
Tm90aWZpY2F0aW9uID8gV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGlu
Zzo6WWVzIDogV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8g
fSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIG1ha2VWZWN0b3I8U3Ry
aW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0
KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwg
Zm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5BbGxGcmFtZXMsIGRlZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uID8gV2ViQ29y
ZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIDogV2ViQ29yZTo6V2Fp
dEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGFlZjY3NWRlYWNkZTljNGEyZDlh
NjhhOWZhYzcxZWQ3ZTYwYjk0Y2UuLjIzYTJiZWEwOTk1NjY5ZDQxMGI3YWEzNGI4OWQ3Y2Q3YThj
ZTVhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtMTM2LDYgKzEzNiw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtNDM3LDcgKzQzOCw3IEBAIC0g
KHZvaWQpX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYpcGFnZUNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQ
YWdlR3JvdXAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmNyZWF0ZShncm91cElkZW50aWZpZXIpLnB0
cigpKTsKICAgICB9CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0QWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXMoV2ViQ29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0Fy
cmF5KFtfY29uZmlndXJhdGlvbiBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKG1h
a2VWZWN0b3I8U3RyaW5nPihbX2NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzXSkpOwogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFN1
cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2Vz
SW5jcmVtZW50YWxSZW5kZXJpbmddKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA3YWE3
ZDExZWEwN2M2ZTQyMjY1MzdiMWNmMDFhMzgzMGM5Y2UxZGMwLi45YmFiOGM4ZDM2ZDZlODE1ZjI4
MTE0Y2EwYmNmYjE0NDljNTZkNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNDYsNiAr
NDYsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1VSTFBhcnNl
ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJVSUtpdFNQ
SS5oIgpAQCAtODk3LDIwICs4OTgsMTIgQEAgLSAoV0tXZWJzaXRlRGF0YVN0b3JlICopX3dlYnNp
dGVEYXRhU3RvcmVJZkV4aXN0cwogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2NvcnNEaXNh
YmxpbmdQYXR0ZXJucwogewotICAgIGF1dG8mIHZlY3RvciA9IF9wYWdlQ29uZmlndXJhdGlvbi0+
Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05T
TXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZlY3Rvci5zaXplKCldOwotICAgIGZvciAo
YXV0byYgcGF0dGVybiA6IHZlY3RvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpwYXR0ZXJu
XTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX3BhZ2VDb25m
aWd1cmF0aW9uLT5jb3JzRGlzYWJsaW5nUGF0dGVybnMoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICop
cGF0dGVybnMKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocGF0dGVybnMuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnBh
dHRlcm4gaW4gcGF0dGVybnMpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQocGF0dGVy
bik7Ci0gICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV1RG
TW92ZSh2ZWN0b3IpKTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQ
YXR0ZXJucyhtYWtlVmVjdG9yPFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAogLSAodm9pZClfc2V0
TG9hZHNGcm9tTmV0d29yazooQk9PTClsb2FkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQppbmRleCAxOWZhNGYwZTEwNjhh
NGNhODZlYzg5ODRjMmRiYTk1MjRmNTM0Mjk5Li45YWQwM2Q1OTJiODFlMzMzYWRlOGVlN2I5ODgx
NGMyNTFlNGZhOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtNjYsNyArNjYsNyBAQCAtIChOU0RpY3Rpb25h
cnkgKilfY29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtOihOU1N0cmluZyAqKXVzZXJJbnRlcmZh
Y2VJdGVtCiAgICAgICAgIGF1dG8qIHZhbGlkYXRpb25CdWJibGUgPSBfcGFnZS0+dmFsaWRhdGlv
bkJ1YmJsZSgpOwogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IHZhbGlkYXRpb25CdWJibGUgPyB2
YWxpZGF0aW9uQnViYmxlLT5tZXNzYWdlKCkgOiBlbXB0eVN0cmluZygpOwogICAgICAgICBkb3Vi
bGUgZm9udFNpemUgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+Zm9udFNp
emUoKSA6IDA7Ci0gICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJmYWNlSXRlbTogQHsgQCJtZXNz
YWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJmb250U2l6ZSI6IFtOU051bWJlciBudW1iZXJX
aXRoRG91YmxlOmZvbnRTaXplXSB9IH07CisgICAgICAgIHJldHVybiBAeyB1c2VySW50ZXJmYWNl
SXRlbTogQHsgQCJtZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJmb250U2l6ZSI6IEAo
Zm9udFNpemUpIH0gfTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlz
dEFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50
UnVsZUxpc3RBY3Rpb24ubW0KaW5kZXggMjRkNDY3OGM5ZTZkZTM4YThjMWNkY2Y5YjA5NWM1ZDFh
OWI0NmJlNy4uMjdhMTM1YjJkZmMzMWRkMGIzOTgwZjRhN2Q1ODgwYzI2NmY1MzNlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlz
dEFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29u
dGVudFJ1bGVMaXN0QWN0aW9uLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAKKyNpbXBv
cnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorCiBAaW1wbGVtZW50YXRpb24gX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uCiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtNTIsMTQgKzU0LDEwIEBAIC0g
KEJPT0wpbWFkZUhUVFBTCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilub3RpZmljYXRpb25z
CiB7Ci0gICAgY29uc3QgYXV0byYgdmVjdG9yID0gX2FjdGlvbi0+bm90aWZpY2F0aW9ucygpOwor
ICAgIGF1dG8mIHZlY3RvciA9IF9hY3Rpb24tPm5vdGlmaWNhdGlvbnMoKTsKICAgICBpZiAodmVj
dG9yLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIE5TTXV0YWJsZUFycmF5
PE5TU3RyaW5nICo+ICphcnJheSA9IFtbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OnZlY3Rvci5zaXplKCldIGF1dG9yZWxlYXNlXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IG5vdGlmaWNhdGlvbiA6IHZlY3RvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpub3RpZmlj
YXRpb25dOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheSh2ZWN0
b3IpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVy
RmllbGRzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhl
YWRlckZpZWxkcy5tbQppbmRleCBkZGVmNzFmOGU0NDM1MGUyMGJmMWJkNzY0YjhhOWFlNmZkYzZk
MjFjLi41MGVlODQ1YmJkNThkMWQwZTgyMTNkNGJhOTNmNWNlZTg3OGY5ZTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFk
ZXJGaWVsZHMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVy
RmllbGRzSW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tDdXN0b21IZWFkZXJG
aWVsZHMKIApAQCAtNjgsMjAgKzY5LDEyIEBAIC0gKHZvaWQpc2V0RmllbGRzOihOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilmaWVsZHMKIAogLSAoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKXRoaXJkUGFydHlEb21haW5zCiB7Ci0gICAgYXV0byYgZG9tYWlucyA9IF9maWVsZHMt
PnRoaXJkUGFydHlEb21haW5zKCk7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmRvbWFpbnMuc2l6ZSgpXTsKLSAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnMpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6ZG9tYWluXTsK
LSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2ZpZWxkcy0+dGhp
cmRQYXJ0eURvbWFpbnMoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClzZXRUaGlyZFBh
cnR5RG9tYWluczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXRoaXJkUGFydHlEb21haW5zCiB7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKLSAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodGhpcmRQYXJ0eURvbWFpbnMuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKmRvbWFp
biBpbiB0aGlyZFBhcnR5RG9tYWlucykKLSAgICAgICAgZG9tYWlucy51bmNoZWNrZWRBcHBlbmQo
ZG9tYWluKTsKLSAgICBfZmllbGRzLT5zZXRUaGlyZFBhcnR5RG9tYWlucyhXVEZNb3ZlKGRvbWFp
bnMpKTsKKyAgICBfZmllbGRzLT5zZXRUaGlyZFBhcnR5RG9tYWlucyhtYWtlVmVjdG9yPFN0cmlu
Zz4odGhpcmRQYXJ0eURvbWFpbnMpKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCmluZGV4IDE4ZGFlMWM1MDVhMmQwNjg3NDBk
NTU5Y2YwYWQzMWVhMTcyYzdjMDcuLmFkMzY1YmNiMWY1MWFkYjA2ZTc2MjYxNjMzZTE4NWQ4YzE1
Y2FlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQpAQCAtMjksNiArMjksNyBA
QAogI2ltcG9ydCAiTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCIKICNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24K
IApAQCAtMTc2LDUxICsxNzcsMjIgQEAgLSAodm9pZClzZXRXaXJlbGVzc0NvbnRleHRJZGVudGlm
aWVyOihOU1VJbnRlZ2VyKWlkZW50aWZpZXIKIAogLSAoTlNBcnJheSAqKWNhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzCiB7Ci0gICAgYXV0byBzY2hlbWVzID0gX3Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi0+Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKTsKLSAgICBpZiAoc2NoZW1lcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBAW107Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2NoZW1lcy5zaXplKCldOwotICAg
IGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogc2NoZW1lcykKLSAgICAgICAgW2FycmF5IGFkZE9i
amVjdDooTlNTdHJpbmcgKilzY2hlbWVdOwotCi0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVy
biBjcmVhdGVOU0FycmF5KF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmNhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0Q2FjaGVQYXJ0
aXRpb25lZFVSTFNjaGVtZXM6KE5TQXJyYXkgKiljYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcwog
ewotICAgIFZlY3RvcjxTdHJpbmc+IHNjaGVtZXM7Ci0gICAgZm9yIChpZCB1cmxTY2hlbWUgaW4g
Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMpIHsKLSAgICAgICAgaWYgKFt1cmxTY2hlbWUgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgIHNjaGVtZXMuYXBwZW5k
KFN0cmluZygoTlNTdHJpbmcgKil1cmxTY2hlbWUpKTsKLSAgICB9Ci0gICAgCi0gICAgX3Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoV1RGTW92
ZShzY2hlbWVzKSk7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVQYXJ0
aXRpb25lZFVSTFNjaGVtZXMobWFrZVZlY3RvcjxTdHJpbmc+KGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKSk7CiB9CiAKIC0gKE5TQXJyYXkgKilhbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMK
IHsKLSAgICBhdXRvJiBzY2hlbWVzID0gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+YWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzKCk7Ci0gICAgaWYgKHNjaGVtZXMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gQFtdOwotCi0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsKLSAgICBmb3IgKGF1dG8m
IHNjaGVtZSA6IHNjaGVtZXMpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nICop
c2NoZW1lXTsKLQotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShf
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMoKSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClzZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXM6KE5TQXJyYXkgKilhbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMKIHsKLSAgICBWZWN0b3I8
U3RyaW5nPiBzY2hlbWVzOwotICAgIHNjaGVtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhbHdh
eXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMuY291bnQpOwotICAgIGZvciAoaWQgc2NoZW1lIGluIGFs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcykgewotICAgICAgICBpZiAoW3NjaGVtZSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgc2NoZW1lcy5hcHBlbmQoKE5T
U3RyaW5nICopc2NoZW1lKTsKLSAgICB9Ci0KLSAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LT5zZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMoV1RGTW92ZShzY2hlbWVzKSk7CisgICAg
X3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVz
KG1ha2VWZWN0b3I8U3RyaW5nPihhbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMpKTsKIH0KIAog
LSAoTlNTdHJpbmcgKilzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxk
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29u
dGVudFdvcmxkSW50ZXJuYWwuaAppbmRleCA3NTkxYmVjZWUxNGYwMzQ4NjZiMTcxNzRiOWU3MzI1
MzY4ZjBiNDQ5Li4yODZkMmIzMjQ2MWNkYTgyMzUyZTliZmJhZDI1NDViNjRlMzJjOGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRX
b3JsZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCkBAIC0yNywyNiArMjcsNiBAQAogCiBAY2xhc3Mg
V0tDb250ZW50V29ybGQ7CiAKLW5hbWVzcGFjZSBBUEkgewotCi1pbmxpbmUgVmVjdG9yPFdURjo6
U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0FycmF5ICppbnB1dCkKLXsKLSAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IHZlY3RvcjsKLQotICAgIE5TVUludGVnZXIgc2l6ZSA9IGlucHV0LmNvdW50Owot
ICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIHZlY3RvcjsKLQotICAgIHZlY3Rvci5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAgIGZvciAoaWQgc3RyaW5nIDogaW5wdXQpIHsK
LSAgICAgICAgaWYgKFtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAg
ICAgICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RyaW5nKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHZlY3RvcjsKLX0KLQotfQotCiBAaW50ZXJmYWNlIF9XS1VzZXJDb250ZW50V29ybGQgKCkg
PFdLT2JqZWN0PiB7CiBAcGFja2FnZQogICAgIFJldGFpblB0cjxXS0NvbnRlbnRXb3JsZD4gX2Nv
bnRlbnRXb3JsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCA2NDIzYmNiOTVjNzYzZjQwZjc1NGIyOWUwMTMx
ZWE4NGZjMGUxM2I4Li40NmFmOGFkMmJjNDkyNmZhZTgxMjk0YWU2YmEyODkzMTdhODQ3MGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxl
U2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6
ZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdv
cmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1w
bGVtZW50YXRpb24gX1dLVXNlclN0eWxlU2hlZXQKIApAQCAtNzEsNyArNzIsNyBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9u
bHk6KEJPT0wpZm9yTWFpbgogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1
c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1
Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBX
ZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVV
bmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3Jl
OjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0
cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBt
YWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxl
Z2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2Vy
TGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQp
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC04NCw3ICs4NSw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9P
TClmb3JNYWluCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5l
cmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhh
cyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6
SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9v
cmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hp
dGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJh
bWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BG
cmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFs
bEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3Ry
dWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNl
VVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBtYWtlVmVjdG9yPFN0cmluZz4o
bGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIGZv
ck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmlu
ZGV4IDc2ZGZmZmU3M2NjZDA3MzRhYzBmOTIzNzAwYWFlZjc3NzA1YmVhOTQuLjQ2YWY3M2I0Mzc5
ZmM3NzYxZjA0ZDMyNGJjNmJiYWQ3ZGZmMTQ4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xMjYsNiArMTI2LDcgQEAKICNpbXBvcnQgPHd0
Zi9TZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIEhBVkUoVE9VQ0hf
QkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCkBAIC0zNjY4LDcg
KzM2NjksNyBAQCBpZCBXZWJWaWV3SW1wbDo6YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKE5T
U3RyaW5nICphdHRyaWJ1dGUsIGlkIHBhcmFtZXRlcikKIAogICAgICAgICAgICAgaWYgKCFjaGls
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OmNoaWxkXTsKKyAgICAgICAgcmV0dXJuIEBbY2hpbGRdOwogICAgIH0K
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0
dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGU7CkBAIC00
MDQzLDExICs0MDQ0LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24o
aWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXM7Ci0KLSAg
ICAgICAgZm9yIChOU1N0cmluZyAqZmlsZSBpbiBmaWxlcykKLSAgICAgICAgICAgIGZpbGVOYW1l
cy5hcHBlbmQoZmlsZSk7Ci0gICAgICAgIG1fcGFnZS0+Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJ
Zk5lZWRlZChmaWxlTmFtZXMsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNp
b25Gb3JVcGxvYWQpOworICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZO
ZWVkZWQobWFrZVZlY3RvcjxTdHJpbmc+KGZpbGVzKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
c2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CiAgICAgfQogCiAgICAgU3RyaW5nIGRyYWdnaW5n
UGFzdGVib2FyZE5hbWUgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWU7CkBA
IC00MzM1LDcgKzQzMzIsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIGlmICghbV9w
cm9taXNlZFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJM
KFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CiAKLSAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CisgICAgcmV0dXJuIEBbW3Bh
dGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERP
TVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZSk+JiYgY29tcGxldGlvbikKQEAgLTQ3NDksNyArNDc0Niw3IEBAIFZlY3RvcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IFdlYlZpZXdJbXBsOjpjb2xsZWN0S2V5Ym9hcmRMYXlv
dXRDb21tYW5kc0ZvckV2CiAgICAgaWYgKE5TVGV4dElucHV0Q29udGV4dCAqY29udGV4dCA9IGlu
cHV0Q29udGV4dCgpKQogICAgICAgICBbY29udGV4dCBoYW5kbGVFdmVudEJ5S2V5Ym9hcmRMYXlv
dXQ6ZXZlbnRdOwogICAgIGVsc2UKLSAgICAgICAgW21fdmlldyBpbnRlcnByZXRLZXlFdmVudHM6
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmV2ZW50XV07CisgICAgICAgIFttX3ZpZXcgaW50ZXJw
cmV0S2V5RXZlbnRzOkBbZXZlbnRdXTsKIAogICAgIG1fY29sbGVjdGVkS2V5cHJlc3NDb21tYW5k
cyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRleCBhOGE3YjY1ZjQ2ZjA5
MGU3MzBmYWMyOWQ5YjFhM2QxMWUzNDM0N2JmLi41NmY3ZWQyNDgyNmY0OTc0Njc2MzlmMDFjZjA5
ODIxZTVlZjYyZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vo
b2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApAQCAtMjUxLDExICsyNTIsNyBAQCB2b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGxhdW5jaFBhdGgs
IGNvbnN0IFZlY3RvcjxTdAogICAgIGlmICghc2hvdWxkTGF1bmNoUHJvY2VzcyhtX3BsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzLCBsYXVuY2hQYXRoLCBhcmd1bWVudHMpKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBhcmd1bWVudHNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTphcmd1bWVudHMuc2l6ZSgpXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFthcmd1bWVudHNBcnJheSBhZGRPYmpl
Y3Q6KE5TU3RyaW5nICopYXJndW1lbnRzW2ldXTsKLQotICAgIFtOU1Rhc2sgbGF1bmNoZWRUYXNr
V2l0aExhdW5jaFBhdGg6bGF1bmNoUGF0aCBhcmd1bWVudHM6YXJndW1lbnRzQXJyYXkuZ2V0KCld
OworICAgIFtOU1Rhc2sgbGF1bmNoZWRUYXNrV2l0aExhdW5jaFBhdGg6bGF1bmNoUGF0aCBhcmd1
bWVudHM6Y3JlYXRlTlNBcnJheShhcmd1bWVudHMpLmdldCgpXTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKIH0KIApAQCAtMjY1LDEwICsyNjIsMTAgQEAgc3RhdGljIGJvb2wgaXNKYXZh
VXBkYXRlclVSTChjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyYgcGx1Z2luUHJvY2Vzc0F0
dHJpYnUKICAgICBpZiAoIVt1cmwgaXNGaWxlVVJMXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTlNBcnJheSAqamF2YVVwZGF0ZXJBcHBOYW1lcyA9IFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6QCJKYXZhIFVwZGF0ZXIuYXBwIiwgQCJKYXZhVXBkYXRlci5hcHAiLCBuaWxdOworICAg
IE5TQXJyYXkgKmphdmFVcGRhdGVyQXBwTmFtZXMgPSBAW0AiSmF2YSBVcGRhdGVyLmFwcCIsIEAi
SmF2YVVwZGF0ZXIuYXBwIl07CiAKICAgICBmb3IgKE5TU3RyaW5nICpqYXZhVXBkYXRlckFwcE5h
bWUgaW4gamF2YVVwZGF0ZXJBcHBOYW1lcykgewotICAgICAgICBOU1N0cmluZyAqamF2YVVwZGF0
ZXJQYXRoID0gW05TU3RyaW5nIHBhdGhXaXRoQ29tcG9uZW50czpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOihOU1N0cmluZyAqKXBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0
aCwgQCJDb250ZW50cy9SZXNvdXJjZXMiLCBqYXZhVXBkYXRlckFwcE5hbWUsIG5pbF1dOworICAg
ICAgICBOU1N0cmluZyAqamF2YVVwZGF0ZXJQYXRoID0gW05TU3RyaW5nIHBhdGhXaXRoQ29tcG9u
ZW50czpAWyhOU1N0cmluZyAqKXBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0
aCwgQCJDb250ZW50cy9SZXNvdXJjZXMiLCBqYXZhVXBkYXRlckFwcE5hbWVdXTsKICAgICAgICAg
aWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6amF2YVVwZGF0ZXJQYXRoXSkKICAgICAgICAg
ICAgIHJldHVybiBZRVM7CiAgICAgfQpAQCAtMjg5LDIwICsyODYsMTYgQEAgdm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFYKICAgICBpZiAoIXNob3VsZExhdW5jaEFwcGxpY2F0aW9uQXRVUkwobV9wbHVn
aW5Qcm9jZXNzQXR0cmlidXRlcywgdXJsU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJndW1l
bnRzQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6YXJndW1lbnRzLnNpemUoKV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1l
bnRzLnNpemUoKTsgKytpKQotICAgICAgICBbYXJndW1lbnRzQXJyYXkgYWRkT2JqZWN0OihOU1N0
cmluZyAqKWFyZ3VtZW50c1tpXV07Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIE5TRGljdGlvbmFyeSAqY29uZmlndXJhdGlvbiA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3Q6YXJndW1lbnRzQXJyYXkuZ2V0KCkgZm9yS2V5Ok5TV29ya3Nw
YWNlTGF1bmNoQ29uZmlndXJhdGlvbkFyZ3VtZW50c107CitBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEB7IE5TV29ya3NwYWNlTGF1
bmNoQ29uZmlndXJhdGlvbkFyZ3VtZW50czogY3JlYXRlTlNBcnJheShhcmd1bWVudHMpLmdldCgp
IH07CiAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIGxhdW5jaEFwcGxpY2F0aW9u
QXRVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsU3RyaW5nXSBvcHRpb25zOk5TV29ya3NwYWNl
TGF1bmNoQXN5bmMgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uIGVycm9yOm51bGxwdHJdOwot
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKIHN0YXRp
YyBib29sIGlzU2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTChjb25zdCBQbHVnaW5Qcm9jZXNzQXR0
cmlidXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQogewotICAgIE5TVVJMICpzaWx2ZXJsaWdodFByZWZlcmVuY2VzVVJMID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aENvbXBvbmVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooTlNTdHJpbmcg
KilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5tb2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVz
b3VyY2VzL1NpbHZlcmxpZ2h0IFByZWZlcmVuY2VzLmFwcCIsIG5pbF1dOworICAgIE5TVVJMICpz
aWx2ZXJsaWdodFByZWZlcmVuY2VzVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aENvbXBvbmVu
dHM6QFsoTlNTdHJpbmcgKilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5tb2R1bGVJbmZvLnBhdGgs
IEAiQ29udGVudHMvUmVzb3VyY2VzL1NpbHZlcmxpZ2h0IFByZWZlcmVuY2VzLmFwcCJdXTsKIAog
ICAgIHJldHVybiBbW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsU3RyaW5nXSBpc0VxdWFsOnNpbHZl
cmxpZ2h0UHJlZmVyZW5jZXNVUkxdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXgg
ZGIwYWJiODIxNmQ2Y2U0MTdkYjU4Y2E2ZWE5ZDBlZWY0YTViMzNjOS4uMmI4OGM5ZmM3MjJlNjBk
ZmE1NWIxN2Q5ODExZmJmOTJiZmMxOTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBA
IC01Myw4ICs1Myw4IEBAIEhpZFNlcnZpY2U6OkhpZFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVy
KQogewogICAgIG1fbWFuYWdlciA9IGFkb3B0Q0YoSU9ISURNYW5hZ2VyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtJT0hJRE9wdGlvbnNUeXBlTm9uZSkpOwogICAgIE5TRGljdGlvbmFyeSAq
bWF0Y2hpbmdEaWN0aW9uYXJ5ID0gQHsKLSAgICAgICAgQGtJT0hJRFByaW1hcnlVc2FnZVBhZ2VL
ZXk6IGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6a0N0YXBIaWRVc2FnZVBhZ2VdKS5n
ZXQoKSwKLSAgICAgICAgQGtJT0hJRFByaW1hcnlVc2FnZUtleTogYWRvcHROUyhbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDprQ3RhcEhpZFVzYWdlXSkuZ2V0KCkKKyAgICAgICAgQGtJT0hJRFByaW1h
cnlVc2FnZVBhZ2VLZXk6IEAoa0N0YXBIaWRVc2FnZVBhZ2UpLAorICAgICAgICBAa0lPSElEUHJp
bWFyeVVzYWdlS2V5OiBAKGtDdGFwSGlkVXNhZ2UpLAogICAgIH07CiAgICAgSU9ISURNYW5hZ2Vy
U2V0RGV2aWNlTWF0Y2hpbmcobV9tYW5hZ2VyLmdldCgpLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKW1hdGNoaW5nRGljdGlvbmFyeSk7CiAgICAgSU9ISURNYW5hZ2VyUmVnaXN0ZXJEZXZpY2VN
YXRjaGluZ0NhbGxiYWNrKG1fbWFuYWdlci5nZXQoKSwgZGV2aWNlQWRkZWRDYWxsYmFjaywgdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggZmU0OTNm
OTUxZTVhMzhhNzA1NWQ4N2Q0ODczMTA5YzFkODk4OThjNS4uNTY3MTI1NTRiNmY2MmI4NjAxMzBi
NjczNzdlM2Y0MzM2YWJjODIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5tbQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0
QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAKICAg
ICAgICAgYXV0byBhdHRlc3RhdGlvbkNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0
ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFSZWYpYWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvbmZpZ3VyYXRpb24ubG9jYWwt
PnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3Jl
VW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSkpOwogICAgICAgICBhdXRvIGF0dGVzdGF0aW9uSXNz
dWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEo
TlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+aW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93
bkNoYXJhY3RlcnNdKS5nZXQoKSkpOwotICAgICAgICBjYWxsYmFjayhbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOiAoX19icmlkZ2UgaWQpYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZS5nZXQoKSwgKF9f
YnJpZGdlIGlkKWF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUuZ2V0KCksIG5pbF0sIE5V
TEwpOworICAgICAgICBjYWxsYmFjayhAWyAoX19icmlkZ2UgaWQpYXR0ZXN0YXRpb25DZXJ0aWZp
Y2F0ZS5nZXQoKSwgKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUu
Z2V0KCldLCBOVUxMKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNTI5YWM0MzQ2
N2IxYjZlOGNmZmIxMTRlYzFhMDc4ODUwMzcyNmFiMC4uYWZmYWFjNTYwMjZiYjEyN2RiYTFmZWRm
NmU1M2ZjZmQwZDI3N2ZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMTksOCArMTE5LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJF
dmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0aW9uLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVk
ZSBXZWJLaXQgaGVhZGVycyEKLSNpbXBvcnQgPHBhbC9pb3MvTWFuYWdlZENvbmZpZ3VyYXRpb25T
b2Z0TGluay5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6
IFdlYktpdCBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0TGVnYWN5IGhlYWRlcnMhCiAjaW1wb3J0
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9E
YXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2
aWNlc1NQSS5oPgpAQCAtMTM1LDYgKzEzNCw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xNjgs
NiArMTY4LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+
CiAjZW5kaWYKIAorI2ltcG9ydCA8cGFsL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5r
Lmg+CisKICNpZiBIQVZFKExJTktfUFJFVklFVykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJraXRTaG93TGlua1ByZXZpZXdzUHJlZmVyZW5jZUtleSA9
IEAiV2ViS2l0U2hvd0xpbmtQcmV2aWV3cyI7CiAjZW5kaWYKQEAgLTMxODUsNyArMzE4Nyw3IEBA
IC0gKE5TRGljdGlvbmFyeSAqKXRleHRTdHlsaW5nQXRQb3NpdGlvbjooVUlUZXh0UG9zaXRpb24g
Kilwb3NpdGlvbiBpbkRpcmVjdGlvbjooCiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OihpZClm
b250LmdldCgpIGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKICAgICAKICAgICBpZiAodHlw
aW5nQXR0cmlidXRlcyAmIFdlYktpdDo6QXR0cmlidXRlVW5kZXJsaW5lKQotICAgICAgICBbcmVz
dWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2lu
Z2xlXSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOworICAgICAgICBbcmVz
dWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpOU1VuZGVybGlu
ZVN0eWxlQXR0cmlidXRlTmFtZV07CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzk4NCwx
MCArMzk4Niw3IEBAIC0gKHZvaWQpcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNvbW1h
bmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TCiAgICAgICAgIH0KIAogICAgICAg
ICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGF1dG8mIHJlY3RzKSB7Ci0gICAgICAg
ICAgICBhdXRvIHJlY3RzQXNWYWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6cmVjdHMuc2l6ZSgpXSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IGZsb2F0UmVjdCA6IHJlY3RzKQotICAgICAgICAgICAgICAgIFtyZWN0c0FzVmFsdWVzIGFkZE9i
amVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6ZmxvYXRSZWN0XV07Ci0gICAgICAgICAgICBj
b21wbGV0aW9uKHJlY3RzQXNWYWx1ZXMuZ2V0KCkpOworICAgICAgICAgICAgY29tcGxldGlvbihj
cmVhdGVOU0FycmF5KHJlY3RzKS5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAt
NzQwMCw3ICs3Mzk5LDcgQEAgLSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICopX2l0ZW1zRm9yQmVn
aW5uaW5nT3JBZGRpbmdUb1Nlc3Npb25XaXRoUmVnaXN0cmF0aW9uTGkKICAgICBmb3IgKE5TSXRl
bVByb3ZpZGVyICppdGVtUHJvdmlkZXIgaW4gYWRqdXN0ZWRJdGVtUHJvdmlkZXJzKSB7CiAgICAg
ICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tVSURyYWdJdGVtIGFsbG9jXSBpbml0V2l0aEl0ZW1Q
cm92aWRlcjppdGVtUHJvdmlkZXJdKTsKICAgICAgICAgW2l0ZW0gX3NldFByaXZhdGVMb2NhbENv
bnRleHQ6QChzdGFnZWREcmFnU291cmNlLml0ZW1JZGVudGlmaWVyKV07Ci0gICAgICAgIFtkcmFn
SXRlbXMgYWRkT2JqZWN0Oml0ZW0uYXV0b3JlbGVhc2UoKV07CisgICAgICAgIFtkcmFnSXRlbXMg
YWRkT2JqZWN0Oml0ZW0uZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBkcmFnSXRlbXM7CkBA
IC04NDMwLDcgKzg0MjksNiBAQCAtIChOU0RpY3Rpb25hcnkgKilfY29udGVudHNPZlVzZXJJbnRl
cmZhY2VJdGVtOihOU1N0cmluZyAqKXVzZXJJbnRlcmZhY2VJdGVtCiAgICAgICAgICAgICAgICAg
QCJpc0ltYWdlIjogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOl9wb3NpdGlvbkluZm9ybWF0aW9u
LmlzSW1hZ2VdLAogICAgICAgICAgICAgICAgIEAiaW1hZ2VVUkwiOiBfcG9zaXRpb25JbmZvcm1h
dGlvbi5pbWFnZVVSTC5pc1ZhbGlkKCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKF9wb3NpdGlv
bkluZm9ybWF0aW9uLmltYWdlVVJMKSA6IEAiIgogICAgICAgICAgICAgfSB9OwotCiAgICAgICAg
IE5TU3RyaW5nICp1cmwgPSBbX3ByZXZpZXdJdGVtQ29udHJvbGxlciBwcmV2aWV3RGF0YV1bVUlQ
cmV2aWV3RGF0YUxpbmtdOwogICAgICAgICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7
CiAgICAgICAgICAgICBAInVybCI6IHVybCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQppbmRleCAyZjkyYmI2ZTRhYzBh
ZTc2MzgxZGNkOTE2MTFkNTZjZTlmMjlhNmIzLi5kOGIzMDA2YjVkMDE5MmIwMDljM2RhZjFlMWZi
MDVmZTVhZGY4MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCkBAIC02NjYsMTIgKzY2NiwxMiBAQCAtICh2b2lk
KWltYWdlUGlja2VyQ29udHJvbGxlcjooVUlJbWFnZVBpY2tlckNvbnRyb2xsZXIgKilpbWFnZVBp
Y2tlciBkaWRGaW5pc2hQaQogCiAgICAgW3NlbGYgX2Rpc21pc3NEaXNwbGF5QW5pbWF0ZWQ6WUVT
XTsKIAotICAgIFtzZWxmIF9wcm9jZXNzTWVkaWFJbmZvRGljdGlvbmFyaWVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDppbmZvXQorICAgIFtzZWxmIF9wcm9jZXNzTWVkaWFJbmZvRGljdGlvbmFy
aWVzOkBbaW5mb10KICAgICAgICAgc3VjY2Vzc0Jsb2NrOl4oTlNBcnJheSAqcHJvY2Vzc2VkUmVz
dWx0cywgTlNTdHJpbmcgKmRpc3BsYXlTdHJpbmcpIHsKICAgICAgICAgICAgIEFTU0VSVChbcHJv
Y2Vzc2VkUmVzdWx0cyBjb3VudF0gPT0gMSk7CiAgICAgICAgICAgICBfV0tGaWxlVXBsb2FkSXRl
bSAqcmVzdWx0ID0gW3Byb2Nlc3NlZFJlc3VsdHMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAg
ICAgICAgICAgW3NlbGYgX2Nob29zZUZpbGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpyZXN1
bHQuZmlsZVVSTF0gZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTpyZXN1bHQu
ZGlzcGxheUltYWdlXTsKKyAgICAgICAgICAgICAgICBbc2VsZiBfY2hvb3NlRmlsZXM6QFtyZXN1
bHQuZmlsZVVSTF0gZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTpyZXN1bHQu
ZGlzcGxheUltYWdlXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGZhaWx1
cmVCbG9jazpeewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybUNvbG9yUGlja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybUNvbG9yUGlja2VyLm1tCmluZGV4IGZlMzlmODM3YmY0NDRlZWQzYTk4MGFiOTdmYWY0
NDYzYjcwODcwZGQuLmNlNjc4NDJjN2ZlMDNiNTFjNjYwYTE4OTY1MjIzNzI5ZTE1NWZmYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBp
Y2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29s
b3JQaWNrZXIubW0KQEAgLTExMiw4ICsxMTIsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
cmFtZTooQ0dSZWN0KWZyYW1lIGNvbG9yTWF0cml4OihOU0FycmF5PE5TQXJyYXk8VUlDb2xvcgog
ICAgICAgICAgICAgW2J1dHRvbnMgYWRkT2JqZWN0OmJ1dHRvbl07CiAgICAgICAgICAgICBbc2Vs
ZiBhZGRTdWJ2aWV3OmJ1dHRvbl07CiAgICAgICAgIH0KLSAgICAgICAgUmV0YWluUHRyPE5TQXJy
YXk+IGNvbG9yQnV0dG9uc1JvdyA9IGJ1dHRvbnM7Ci0gICAgICAgIFtjb2xvckJ1dHRvbnMgYWRk
T2JqZWN0OmNvbG9yQnV0dG9uc1Jvdy5nZXQoKV07CisgICAgICAgIFtjb2xvckJ1dHRvbnMgYWRk
T2JqZWN0OmJ1dHRvbnNdOwogICAgIH0KICAgICBfY29sb3JCdXR0b25zID0gY29sb3JCdXR0b25z
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBh
bmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpp
bmRleCBmZTRlODQ2Njk4MGI3MzU4YTA5Y2ExMTlkMmMyMzcwY2Y1ZDkxNWZkLi43MjNiMzI2ZjRm
NGYyODhkZWY0YjAzN2M2NDcyNjVkNWQ5Yjk4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW1wbC5oIgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIHN0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uSW5kaWNh
dG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRU
eXBlIGFsdGVybmF0aXZlVGV4dFR5cGUpCiB7CkBAIC02NSwyOCArNjYsMjUgQEAgQ29ycmVjdGlv
blBhbmVsOjp+Q29ycmVjdGlvblBhbmVsKCkKIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpzaG93KE5T
VmlldyAqdmlldywgV2ViVmlld0ltcGwmIHdlYlZpZXdJbXBsLCBBbHRlcm5hdGl2ZVRleHRUeXBl
IHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCiB7
CiAgICAgZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHRJ
Z25vcmVkLCBmYWxzZSk7Ci0gICAgCisKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsK
IAogICAgIE5TSW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZyA9IHdlYlZpZXdJbXBsLnNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAgICBOU1N0cmluZyogcmVwbGFjZWRTdHJpbmdB
c05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7Ci0gICAgTlNTdHJpbmcqIHJlcGxhY2VtZW50U3Ry
aW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIE5TU3RyaW5nICpyZXBsYWNl
ZFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlZFN0cmluZzsKKyAgICBOU1N0cmluZyAqcmVwbGFj
ZW1lbnRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmc7CisKICAgICBtX3ZpZXcg
PSB2aWV3OwogICAgIG1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSBzcGVsbENoZWNrZXJEb2N1
bWVudFRhZzsKICAgICBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlIGluZGljYXRvclR5cGUgPSBj
b3JyZWN0aW9uSW5kaWNhdG9yVHlwZSh0eXBlKTsKICAgICAKLSAgICBOU011dGFibGVBcnJheSog
YWx0ZXJuYXRpdmVTdHJpbmdzID0gMDsKLSAgICBpZiAoIWFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzLmlzRW1wdHkoKSkgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKLSAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0gW05T
TXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIFthbHRlcm5hdGl2ZVN0cmluZ3Mg
YWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3NbaV1dOwot
ICAgIH0KKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gYWx0ZXJuYXRpdmVTdHJpbmdzOworICAgIGlm
ICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKQorICAgICAgICBhbHRl
cm5hdGl2ZVN0cmluZ3MgPSBjcmVhdGVOU0FycmF5KGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKTsKIAogICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKLSAgICBbc3BlbGxDaGVja2VyIHNob3dDb3JyZWN0aW9u
SW5kaWNhdG9yT2ZUeXBlOmluZGljYXRvclR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0
cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncyBmb3JT
dHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nIHZpZXc6bV92aWV3LmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAgW3Nw
ZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTppbmRpY2F0b3JUeXBlIHBy
aW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5n
czphbHRlcm5hdGl2ZVN0cmluZ3MuZ2V0KCkgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZS
ZXBsYWNlZFN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3Ry
aW5nKiBhY2NlcHRlZFN0cmluZykgewogICAgICAgICBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50
KHdlYlZpZXdJbXBsLCBhY2NlcHRlZFN0cmluZywgcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nLCBy
ZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcsIGluZGljYXRvclR5cGUpOwogICAgIH1dOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4IGQ3
ODZmMTFkMzkzYzdlNGI3ODhiY2VjMzY3ZWFlMDk2ZjdmNzUyZTEuLjAxNjE5YTU4M2E5ZTY4NmQw
NDY2YTI1MDJlYjUyYTdjOWY1MGU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkv
bWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBAaW50ZXJmYWNlIE5TU3Bl
bGxDaGVja2VyIChXZWJOU1NwZWxsQ2hlY2tlckRldGFpbHMpCkBAIC00MzUsMTMgKzQzNiwxMCBA
QCB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKFNw
ZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cgogCiB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiBi
YWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQogewot
ICAgIGF1dG8gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdKTsKLSAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKQotICAg
ICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKICAgICBOU0RpY3Rpb25hcnkgKmRl
dGFpbCA9IEB7CiAgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCiAgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlv
biA6IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uLAotICAgICAgICBOU0dyYW1tYXJDb3Jy
ZWN0aW9ucyA6IGNvcnJlY3Rpb25zLmdldCgpLAorICAgICAgICBOU0dyYW1tYXJDb3JyZWN0aW9u
cyA6IGNyZWF0ZU5TQXJyYXkoZ3JhbW1hckRldGFpbC5ndWVzc2VzKS5nZXQoKSwKICAgICB9Owog
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1Bh
bmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGV0YWlsXTsKIH0K
QEAgLTQ1OSwxMCArNDU3LDcgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQo
U3BlbGxEb2N1bWVudFRhZyBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKICAgICAgICAgW2No
ZWNrZXIgY2hlY2tTdHJpbmc6Y29udGV4dCByYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxl
bmd0aCgpKSB0eXBlczpOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSBvcHRpb25zOm9wdGlv
bnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbERvY3VtZW50VGFnIG9ydGhvZ3JhcGh5OiZv
cnRob2dyYXBoeSB3b3JkQ291bnQ6MF07CiAgICAgICAgIGxhbmd1YWdlID0gW2NoZWNrZXIgbGFu
Z3VhZ2VGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgaW5TdHJp
bmc6Y29udGV4dCBvcnRob2dyYXBoeTpvcnRob2dyYXBoeV07CiAgICAgfQotICAgIE5TQXJyYXkq
IHN0cmluZ3NBcnJheSA9IFtjaGVja2VyIGd1ZXNzZXNGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgd29yZC5sZW5ndGgoKSkgaW5TdHJpbmc6d29yZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRUYWddOwotCi0gICAgZm9yIChOU1N0cmluZyAq
Z3Vlc3MgaW4gc3RyaW5nc0FycmF5KQotICAgICAgICBndWVzc2VzLmFwcGVuZChndWVzcyk7Cisg
ICAgZ3Vlc3NlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbY2hlY2tlciBndWVzc2VzRm9yV29yZFJh
bmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6
bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbERvY3VtZW50VGFnXSk7CiB9CiAK
IHZvaWQgVGV4dENoZWNrZXI6OmxlYXJuV29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJp
bmcmIHdvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmlu
dGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KaW5kZXggMDFlNDMyMTYwZGYyOWMxM2IyNGUzMGFkYWZlMWQzZmY1YTQ5MWM2MS4uNTkwNGM0
Mjc5ZjgxZjliYzM5ZWZmYmRlYTBmNjY4ODg2MTZkZDhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMTQ1LDggKzE0NSw4IEBAIC0gKHZv
aWQpX2FkanVzdFByaW50aW5nTWFyZ2luc0ZvckhlYWRlckFuZEZvb3RlcgogICAgICAgICBBU1NF
UlQoIVtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViS2l0T3JpZ2luYWxCb3R0b21Qcmlu
dGluZ01hcmdpbktleV0pOwogICAgICAgICBvcmlnaW5hbFRvcE1hcmdpbiA9IFtpbmZvIHRvcE1h
cmdpbl07CiAgICAgICAgIG9yaWdpbmFsQm90dG9tTWFyZ2luID0gW2luZm8gYm90dG9tTWFyZ2lu
XTsKLSAgICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTpvcmlnaW5hbFRvcE1hcmdpbl0gZm9yS2V5OldlYktpdE9yaWdpbmFsVG9wUHJpbnRp
bmdNYXJnaW5LZXldOwotICAgICAgICBbaW5mb0RpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOm9yaWdpbmFsQm90dG9tTWFyZ2luXSBmb3JLZXk6V2ViS2l0T3Jp
Z2luYWxCb3R0b21QcmludGluZ01hcmdpbktleV07CisgICAgICAgIFtpbmZvRGljdGlvbmFyeSBz
ZXRPYmplY3Q6QChvcmlnaW5hbFRvcE1hcmdpbikgZm9yS2V5OldlYktpdE9yaWdpbmFsVG9wUHJp
bnRpbmdNYXJnaW5LZXldOworICAgICAgICBbaW5mb0RpY3Rpb25hcnkgc2V0T2JqZWN0OkAob3Jp
Z2luYWxCb3R0b21NYXJnaW4pIGZvcktleTpXZWJLaXRPcmlnaW5hbEJvdHRvbVByaW50aW5nTWFy
Z2luS2V5XTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoW29yaWdpbmFsVG9wTWFyZ2lu
TnVtYmVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwogICAgICAgICBBU1NFUlQo
W1tpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViS2l0T3JpZ2luYWxCb3R0b21QcmludGlu
Z01hcmdpbktleV0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCAzOTY4
ZWRhNjNkZWRlMjkwNWVjMmY3MGU1NTljMWI4ZGE5NDQwMjhlLi4zNmFiZGZkMjQ2NWU0ZGZkNTEw
MjQzZGY3ZjlhNzhjMTBiOTFhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CiAjaW1wb3J0IDx3dGYvTmFrZWRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAvLyBGSVhNRTogSW1w
bGVtZW50IHNjcm9sbEZpbmRNYXRjaFRvVmlzaWJsZS4KIC8vIEZJWE1FOiBUaGUgTlNUZXh0Rmlu
ZGVyIG92ZXJsYXkgZG9lc24ndCBtb3ZlIHdpdGggc2Nyb2xsaW5nOyB3ZSBzaG91bGQgaGF2ZSBh
IG1vZGUgd2hlcmUgd2UgbWFuYWdlIHRoZSBvdmVybGF5LgpAQCAtMjcwLDMxICsyNzEsMjEgQEAg
LSAodm9pZClzY3JvbGxGaW5kTWF0Y2hUb1Zpc2libGU6KGlkIDxOU1RleHRGaW5kZXJBc3luY2hy
b25vdXNEb2N1bWVudEZpbmRNYXRjaD4KIAogI3ByYWdtYSBtYXJrIC0gRmluZE1hdGNoZXNDbGll
bnQKIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBhcnJheUZyb21SZWN0cyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mIG1hdGNoUmVjdHMpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBuc01hdGNoUmVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6bWF0Y2hSZWN0cy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8mIHJl
Y3QgOiBtYXRjaFJlY3RzKQotICAgICAgICBbbnNNYXRjaFJlY3RzIGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OnJlY3RdXTsKLSAgICByZXR1cm4gbnNNYXRjaFJlY3RzOwotfQotCiAt
ICh2b2lkKWRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOihjb25zdCBWZWN0b3I8VmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+PiYpcmVjdHNGb3JNYXRjaGVzIGRpZFdyYXBBcm91bmQ6KEJPT0wp
ZGlkV3JhcEFyb3VuZAogewogICAgIGlmIChfZmluZFJlcGx5Q2FsbGJhY2tzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByZXBseUNhbGxiYWNrID0gX2ZpbmRSZXBseUNh
bGxiYWNrcy50YWtlRmlyc3QoKTsKLSAgICB1bnNpZ25lZCBtYXRjaENvdW50ID0gcmVjdHNGb3JN
YXRjaGVzLnNpemUoKTsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1hdGNoT2JqZWN0
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTptYXRj
aENvdW50XSk7CisgICAgYXV0byBtYXRjaENvdW50ID0gcmVjdHNGb3JNYXRjaGVzLnNpemUoKTsK
KyAgICBhdXRvIG1hdGNoT2JqZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTptYXRjaENvdW50XSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1hdGNoQ291bnQ7IGkrKykgewogICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4gbnNNYXRj
aFJlY3RzOwotCiAgICAgICAgIGlmIChfdXNlUGxhdGZvcm1GaW5kVUkpCi0gICAgICAgICAgICBu
c01hdGNoUmVjdHMgPSBhcnJheUZyb21SZWN0cyhyZWN0c0Zvck1hdGNoZXNbaV0pOworICAgICAg
ICAgICAgbnNNYXRjaFJlY3RzID0gY3JlYXRlTlNBcnJheShyZWN0c0Zvck1hdGNoZXNbaV0pOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBuc01hdGNoUmVjdHMgPSBAW107Ci0gICAgICAgIFJl
dGFpblB0cjxXS1RleHRGaW5kZXJNYXRjaD4gbWF0Y2ggPSBhZG9wdE5TKFtbV0tUZXh0RmluZGVy
TWF0Y2ggYWxsb2NdIGluaXRXaXRoQ2xpZW50OnNlbGYgdmlldzpfdmlldyBpbmRleDppIHJlY3Rz
Om5zTWF0Y2hSZWN0cy5nZXQoKV0pOwotICAgICAgICBbbWF0Y2hPYmplY3RzIGFkZE9iamVjdDpt
YXRjaC5nZXQoKV07CisgICAgICAgIFttYXRjaE9iamVjdHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tX
S1RleHRGaW5kZXJNYXRjaCBhbGxvY10gaW5pdFdpdGhDbGllbnQ6c2VsZiB2aWV3Ol92aWV3IGlu
ZGV4OmkgcmVjdHM6bnNNYXRjaFJlY3RzLmdldCgpXSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJl
cGx5Q2FsbGJhY2sobWF0Y2hPYmplY3RzLmdldCgpLCBkaWRXcmFwQXJvdW5kKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCmluZGV4IDNiZDk0MWM3Mjg5NzE3MGVjYzE1N2I5ZmViNTdk
YTUzNzI4ZTgxMzMuLjdkMjAyNDQzMGU2NWYxMmY3MzI5NzcxNjc3MWQ2YTY2YjFhOTZkNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQpAQCAtMzc5LDEwICszNzksMTAgQEAgLSAo
dm9pZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uJiYpaW5mb3JtYXQKIAogLSAodm9pZClub3RpZnlBY2Nlc3NpYmlsaXR5Q2xpZW50
czooTlNTdHJpbmcgKilpbmZvCiB7Ci0gICAgTlNEaWN0aW9uYXJ5PE5TQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvblVzZXJJbmZvS2V5LCBpZD4gKnVzZXJJbmZvID0gW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBOU0FjY2Vzc2liaWxpdHlQcmlvcml0
eUtleSwgQChOU0FjY2Vzc2liaWxpdHlQcmlvcml0eUhpZ2gpLAotICAgICAgICBOU0FjY2Vzc2li
aWxpdHlBbm5vdW5jZW1lbnRLZXksIGluZm8sIG5pbF07Ci0gICAgTlNBY2Nlc3NpYmlsaXR5UG9z
dE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhOU0FwcCwgTlNBY2Nlc3NpYmlsaXR5QW5ub3VuY2Vt
ZW50UmVxdWVzdGVkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CisgICAgTlNBY2Nlc3NpYmlsaXR5
UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhOU0FwcCwgTlNBY2Nlc3NpYmlsaXR5QW5ub3Vu
Y2VtZW50UmVxdWVzdGVkTm90aWZpY2F0aW9uLCBAeworICAgICAgICBOU0FjY2Vzc2liaWxpdHlQ
cmlvcml0eUtleTogQChOU0FjY2Vzc2liaWxpdHlQcmlvcml0eUhpZ2gpLAorICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlBbm5vdW5jZW1lbnRLZXk6IGluZm8sCisgICAgfSk7CiB9CiAKIC0gKHZvaWQp
bW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOihjb25zdCBTdHJpbmcmKWRpcmVjdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZDJkOTBl
MzNmMjIxY2RmNjQwNjExZTY0OWE1YWExNGZjMTgxMmRhOS4uODM0MzA3YzY5NWU4NWJiZTMyNTA1
Zjg1NDliYTYxOGU3ZjIyM2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNlYXJjaFdpdGhTcG90bGlnaHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VhcmNoVGhlV2ViKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1l
XTsKLSAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOkBbbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmls
XTsKICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6c3RyaW5nIGZvclR5cGU6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV07CiAgICAgCiAgICAgTlNQZXJmb3JtU2VydmljZShAIlNlYXJjaCBX
aXRoICVXZWJTZWFyY2hQcm92aWRlckAiLCBwYXN0ZWJvYXJkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TUludGVybmFscy5oCmluZGV4IDE1MWI5YmNlMDg2NTg3N2FiM2I2OGI3YTExYTBhY2MwZWUwMmUx
ZDUuLjdhM2RlODNiMmJhYjJmYjQ2OTEwNzcxYTQ2ZGU5MmJmNjQ2MzZlNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tET01JbnRlcm5hbHMuaApAQCAtMTA5LDggKzEwOSw0IEBAIFdLRE9NVGV4dCAqdG9X
S0RPTVRleHQoV2ViQ29yZTo6VGV4dCopOwogV2ViQ29yZTo6UmFuZ2UqIHRvV2ViQ29yZVJhbmdl
KFdLRE9NUmFuZ2UgKik7CiBXS0RPTVJhbmdlICp0b1dLRE9NUmFuZ2UoV2ViQ29yZTo6UmFuZ2Uq
KTsKIAotLy8gLS0gSGVscGVycyAtLQotCi1OU0FycmF5ICp0b05TQXJyYXkoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+Jik7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01J
bnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTUludGVybmFscy5tbQppbmRleCBmNDFlOTRjMmRhNWZmZGFjOTY5ZTEyNjU2Njhh
MmEzYjg3YTMwMDYzLi42M2NkZDJiYzJiYzRiNzk4YjU4NzcwYjQzMWYzYTE2NGQ5YzBkYWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTUludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQpAQCAtMTYxLDEzICsxNjEsNCBAQCBz
dGF0aWMgV0tET01UeXBlIHRvV0tET01UeXBlKFdlYkNvcmVUeXBlIGltcGwsIERPTUNhY2hlPFdl
YkNvcmVUeXBlLCBXS0RPTVR5cGU+JgogICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07
CiB9CiAKLU5TQXJyYXkgKnRvTlNBcnJheShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IHJlY3RzKQotewotICAgIHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOwotICAgIE5TTXV0YWJs
ZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnJlY3RzW2ldXV07Ci0gICAgcmV0dXJuIGFy
cmF5OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQpp
bmRleCBmOWM1NzFkZWViOTM1Y2U4OGI0MzdhZmE2NWQ3ZmZlNzY1M2JiMTkyLi5jZDgwNjFlYzFi
MjAzZjAzMzQ2N2Y1NDBiOTM3ZDBjMWI3MWI4NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1t
CkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbXBvcnQg
IldLRE9NSW50ZXJuYWxzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLRE9NTm9kZQog
CkBAIC0xMTIsNyArMTEzLDcgQEAgLSAoTlNBcnJheSAqKXRleHRSZWN0cwogICAgICAgICByZXR1
cm4gbmlsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiByZWN0czsKICAgICBfaW1wbC0+
dGV4dFJlY3RzKHJlY3RzKTsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b05TQXJyYXkocmVjdHMpOwor
ICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5k
CkBAIC0xMjEsOCArMTIyLDcgQEAgQGltcGxlbWVudGF0aW9uIFdLRE9NTm9kZSAoV0tQcml2YXRl
KQogCiAtIChXS0J1bmRsZU5vZGVIYW5kbGVSZWYpX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmCiB7
Ci0gICAgYXV0byBub2RlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0KCkpLmxlYWtSZWYoKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVJhbmdlLm1tCmluZGV4IDIyYmU0NjI2ZGEzMmM2MzU1OWQxMGEwMjhmYWVh
ZjJkMmE2NWM3NmYuLmFjNmZmYjFlOTc4YzgzODgxMmE4YjExYjM3MjI0OTE4ZWVlMjhlNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiV0tE
T01JbnRlcm5hbHMuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVmlzaWJsZVVuaXRzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogQGltcGxlbWVudGF0aW9uIFdLRE9NUmFuZ2UKIApAQCAtMTMwLDcgKzEzMSw3IEBAIC0gKE5T
QXJyYXkgKil0ZXh0UmVjdHMKICAgICBfaW1wbC0+b3duZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiByZWN0czsKICAgICBfaW1wbC0+YWJzb2x1dGVUZXh0UmVjdHMocmVjdHMpOwotICAgIHJldHVy
biBXZWJLaXQ6OnRvTlNBcnJheShyZWN0cyk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVj
dHMpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdLRE9NUmFuZ2UgKilyYW5nZUJ5RXhwYW5kaW5n
VG9Xb3JkQm91bmRhcnlCeUNoYXJhY3RlcnM6KE5TVUludGVnZXIpY2hhcmFjdGVycyBpbkRpcmVj
dGlvbjooV0tET01SYW5nZURpcmVjdGlvbilkaXJlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVu
ZGxlTWFjLm1tCmluZGV4IDBlODk0ZmM0NzMxYzQ3ODk4ZGRkNDZhMDEyOTU3N2VkYTg1NzQ0ZWQu
LmE2ZGE5MTlhMjJmNzVkOTczYTU5N2FjOTgxMTM3OGFjMjJjZGY3NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9J
bmplY3RlZEJ1bmRsZU1hYy5tbQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnNldEJ1bmRsZVBhcmFtZXRlcihjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlCiAgICAgfQogCiAgICAgaWYgKCFtX2J1bmRsZVBhcmFtZXRlcnMgJiYgcGFyYW1ldGVy
KQotICAgICAgICBtX2J1bmRsZVBhcmFtZXRlcnMgPSBhZG9wdE5TKFtbV0tXZWJQcm9jZXNzQnVu
ZGxlUGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OltOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeV1dKTsKKyAgICAgICAgbV9idW5kbGVQYXJhbWV0ZXJzID0gYWRvcHROUyhbW1dLV2Vi
UHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoRGljdGlvbmFyeTpAeyB9XSk7
CiAKICAgICBbbV9idW5kbGVQYXJhbWV0ZXJzIHNldFBhcmFtZXRlcjpwYXJhbWV0ZXIgZm9yS2V5
OmtleV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KaW5kZXggNTY2MWVmOTZmYTFm
ZTQ0OGVkMjVhNjVmM2Y0ZWFhZTAxNTYzYmQ5Mi4uMzUxM2IwMzg0NGVjMDAwMDFjZDhmNDc1YzY0
NmIwNmU5MDA0ZTM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbQpAQCAtNDMsNyAr
NDMsNyBAQCBzdGF0aWMgdm9pZCBtYWtlUmVuZGVyTGF5ZXIoQ0FMYXllciAqcGx1Z2luTGF5ZXIs
IHVpbnQzMl90IGxheWVySG9zdGluZ0NvbnRleHRJRAogICAgIENBTGF5ZXIgKnJlbmRlckxheWVy
ID0gW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6bGF5ZXJIb3N0aW5nQ29u
dGV4dElEXTsKICAgICBbcmVuZGVyTGF5ZXIgc2V0RnJhbWU6W3BsdWdpbkxheWVyIGJvdW5kc11d
OwogICAgIFtyZW5kZXJMYXllciBzZXRBdXRvcmVzaXppbmdNYXNrOmtDQUxheWVyV2lkdGhTaXph
YmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlXTsKLSAgICBbcGx1Z2luTGF5ZXIgc2V0U3VibGF5
ZXJzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpyZW5kZXJMYXllcl1dOworICAgIFtwbHVnaW5M
YXllciBzZXRTdWJsYXllcnM6QFtyZW5kZXJMYXllcl1dOwogfQogCiBQbGF0Zm9ybUxheWVyKiBQ
bHVnaW5Qcm94eTo6cGx1Z2luTGF5ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMTAxOTVmYWNiMTczMzgyYWY5Y2UzOGI0
N2ViYWQyMGM3OWVkMTU3MC4uNTI1ZmYyZjYzNjQ0MGQ3YTk0ZTBlZTE3ZmE3M2QwZTY2NDEzYjAz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCkBAIC05Myw2ICs5Myw3IEBACiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8
d3RmL1dURlNlbWFwaG9yZS5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQpAQCAtMjMzNiwxMCArMjMzNyw3IEBA
IHZvaWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKIAogdm9pZCBQREZQ
bHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBO
U0FycmF5ICppdGVtcywgTlNBcnJheSAqdHlwZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGFz
dGVib2FyZFR5cGVzOwotCi0gICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiB0eXBlcykKLSAgICAg
ICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICBhdXRvIHBhc3RlYm9hcmRUeXBl
cyA9IG1ha2VWZWN0b3I8U3RyaW5nPih0eXBlcyk7CiAKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNv
dW50OwogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggNzBlNTI4NTY0NmZmOGRmNTZhOWQyNTIxNzQ4YmZkNWFmOGNjNGM1MS4uNDI3ZDQ0MmE2
MzI5NWJiZmE5NGQyOTU5ZmZiNDdmNGRlZTgyODE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTM3MTAsNyArMzcxMCw3
IEBAIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIAogdm9pZCBX
ZWJQYWdlOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrKQogewotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9z
dE5vdGlmaWNhdGlvbk5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsIHVzZXJJbmZvOkB7QCJpc1N1c3BlbmRlZFVuZGVyTG9jayI6IFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDppc1N1c3BlbmRlZFVuZGVyTG9ja119XTsKKyAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldl
YlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbCB1
c2VySW5mbzpAe0AiaXNTdXNwZW5kZWRVbmRlckxvY2siOiBAKGlzU3VzcGVuZGVkVW5kZXJMb2Nr
KX1dOwogCiAgICAgbV9pc1N1c3BlbmRlZFVuZGVyTG9jayA9IGlzU3VzcGVuZGVkVW5kZXJMb2Nr
OwogICAgIGZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OkJhY2tncm91bmRB
cHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5k
ZXggOWMwODg3ZTY5M2UyODhlYzRlN2EzZTAzMDdkNmRjNzE5OTkyZDhkNC4uMDI4YTg4YzE2NzQ5
MDc5MGY0YWFmNjRlNjVhYzdhMDUwNmI2M2U4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZygpCiAKICAgICAvLyBUaGlzIGlzIGEgc2ln
bmFsIHRvIG1lZGlhIGZyYW1ld29ya3M7IGl0IGRvZXMgbm90IGFjdGl2ZWx5IHBhdXNlIGFueXRo
aW5nLgogICAgIFttX2hvc3RpbmdMYXllciBzZXRWYWx1ZTpAWUVTIGZvcktleTpAIk5TQ0FWaWV3
UmVuZGVyUGF1c2VkIl07Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUGF1c2VOb3RpZmljYXRp
b24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dDptX2hvc3RpbmdMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKKyAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZp
ZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpAeyBAImxh
eWVyIjogbV9ob3N0aW5nTGF5ZXIuZ2V0KCkgfV07CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKQEAgLTUzOSw3ICs1MzksNyBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZygpCiAgICAgbV9p
c1BhaW50aW5nU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0VmFs
dWU6QE5PIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07Ci0gICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3
UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0KCkgZm9yS2V5OkAi
bGF5ZXIiXV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0
Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBv
YmplY3Q6bmlsIHVzZXJJbmZvOkB7IEAibGF5ZXIiOiBtX2hvc3RpbmdMYXllci5nZXQoKSB9XTsK
IH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRS
ZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDA4ZmU3ZmQxNGFmMjE0MjM2MjM2
Nzg5OTQyOTY2ZWQ5YzRlYWNhODYuLmExZDZlMzBmNDUxMzU0M2E1YTM4NmU4NjU2YmY1OGRkMDVj
ZGRjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0K
QEAgLTQxLDcgKzQxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgotI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0TWFjLm1tCmluZGV4IGYwY2VjYTIwNjgwYzliYWM4NDE3MjM1Zjc1NGE0NGVlYzI5YzZj
YWYuLmEwOWZmNjEzN2E5OGI0MDNhNTA2Njk5NTM4NjZkNzNjMGY2NjIxMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tCkBAIC00Nyw3ICs0Nyw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vz
c2liaWxpdHlTUEkuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogCkBAIC0xNDIsMTYgKzE0MSwxNiBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAoTlNBcnJheSAqKWFj
Y2Vzc2liaWxpdHlBY3Rpb25OYW1lcwogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICByZXR1cm4gQFtdOwogfQog
CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUNoaWxkcmVuCiB7CiAgICAgaWQgd3JhcHBlciA9
IFtzZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcl07CiAgICAgaWYgKCF3cmFwcGVy
KQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwog
ICAgIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6d3JhcHBlcl07CisgICAg
cmV0dXJuIEBbd3JhcHBlcl07CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQppbmRleCAyMDRkNDVhYjM0ZjhlYjRmZjY2ZTE1OWZmYzJjMTAxYzg4OTMxYjM3Li40
YjQ1ODQ3MDg4MjBlZDU1MWMzNWU4OTU3NzI2OGJmM2UyNzVhMzE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTg4LDYgKzg4
LDcgQEAKICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3NDb2NvYS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJ
bnNwZWN0b3IuaD4KQEAgLTY2NCwxMiArNjY1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVB
Y3RpdmVQYWdlcyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRGlzcGxheU5hbWUpCiB2b2lkIFdlYlBy
b2Nlc3M6OmdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgYXV0byBhY3RpdmVPcmlnaW5zQXNOU1N0cmluZ3MgPSBhY3RpdmVQYWdl
c09yaWdpbnMobV9wYWdlTWFwKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY3RpdmVPcmlnaW5zOwot
ICAgIGFjdGl2ZU9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbYWN0aXZlT3JpZ2luc0Fz
TlNTdHJpbmdzIGNvdW50XSk7Ci0gICAgZm9yIChOU1N0cmluZyogYWN0aXZlT3JpZ2luIGluIGFj
dGl2ZU9yaWdpbnNBc05TU3RyaW5ncy5nZXQoKSkKLSAgICAgICAgYWN0aXZlT3JpZ2lucy51bmNo
ZWNrZWRBcHBlbmQoYWN0aXZlT3JpZ2luKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGFjdGl2ZU9yaWdpbnMpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVmVjdG9yPFN0cmlu
Zz4oYWN0aXZlUGFnZXNPcmlnaW5zKG1fcGFnZU1hcCkuZ2V0KCkpKTsKICNlbHNlCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4
IDMzZTVlZjUxY2EyMzQwYWUxNjQwNGRjYzRhZjJmNDA5NTc4YmIxZTguLjg3NTQzYjAwNDQ0N2Uz
ZDhjNTQ5YWQxODc4ZGM0YjM4NGFiNDY1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAg
LTYzLDYgKzYzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4K
ICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogTlNTdHJpbmcgKiBjb25zdCBXZWJPcGVuUGFu
ZWxDb25maWd1cmF0aW9uQWxsb3dNdWx0aXBsZUZpbGVzS2V5ID0gQCJXZWJPcGVuUGFuZWxDb25m
aWd1cmF0aW9uQWxsb3dNdWx0aXBsZUZpbGVzS2V5IjsKIE5TU3RyaW5nICogY29uc3QgV2ViT3Bl
blBhbmVsQ29uZmlndXJhdGlvbk1lZGlhQ2FwdHVyZVR5cGVLZXkgPSBAIldlYk9wZW5QYW5lbENv
bmZpZ3VyYXRpb25NZWRpYUNhcHR1cmVUeXBlS2V5IjsKQEAgLTEzNCwxNyArMTM1LDEzIEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYg
Y2hvb3NlcikKICAgICBCT09MIGFsbG93TXVsdGlwbGVGaWxlcyA9IHNldHRpbmdzLmFsbG93c011
bHRpcGxlRmlsZXM7CiAgICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgKmxpc3RlbmVyID0g
W1tXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29z
ZXJdOwogCi0gICAgTlNNdXRhYmxlQXJyYXkgKm1pbWVUeXBlcyA9IFtOU011dGFibGVBcnJheSBh
cnJheVdpdGhDYXBhY2l0eTpzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMuc2l6ZSgpXTsKLSAgICBm
b3IgKGF1dG8mIHR5cGUgOiBzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCi0gICAgICAgIFttaW1l
VHlwZXMgYWRkT2JqZWN0OnR5cGVdOwotCiAgICAgV2ViTWVkaWFDYXB0dXJlVHlwZSBjYXB0dXJl
VHlwZSA9IFdlYk1lZGlhQ2FwdHVyZVR5cGVOb25lOwogI2lmIEVOQUJMRShNRURJQV9DQVBUVVJF
KQogICAgIGNhcHR1cmVUeXBlID0gd2ViTWVkaWFDYXB0dXJlVHlwZShzZXR0aW5ncy5tZWRpYUNh
cHR1cmVUeXBlKTsKICNlbmRpZgogICAgIE5TRGljdGlvbmFyeSAqY29uZmlndXJhdGlvbiA9IEB7
CiAgICAgICAgIFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25BbGxvd011bHRpcGxlRmlsZXNLZXk6
IEAoYWxsb3dNdWx0aXBsZUZpbGVzKSwKLSAgICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlv
bk1pbWVUeXBlc0tleTogbWltZVR5cGVzLAorICAgICAgICBXZWJPcGVuUGFuZWxDb25maWd1cmF0
aW9uTWltZVR5cGVzS2V5OiBjcmVhdGVOU0FycmF5KHNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcyku
Z2V0KCksCiAgICAgICAgIFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25NZWRpYUNhcHR1cmVUeXBl
S2V5OiBAKGNhcHR1cmVUeXBlKQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRl
eCA2OTFmODUxOTM4ZjgzNTdkNzcwZDhjNGY4NGU1ZDJlNmMzZWY5OGVkLi41NDMyNWFkODBjM2Ez
YTQ4N2Y5MGMyZjE5MTY3ODZhZjhkYjlmNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBA
IC0yMywxMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0
aW9uLmgiCiAjaW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oIgogCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0
ICJET01SYW5nZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lU2VsZWN0aW9uLmg+CkBAIC00MSwxMiArNDIsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0RmxhZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlUG9zaXRp
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+Ci0KLQotI2ltcG9ydCAiRE9N
Tm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTQxOCwxMSArNDE1LDcgQEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRp
b25QaHJhc2VBbHRlcm5hdGl2ZXM6KE5TQXJyYXkgKiopYWx0ZXJuYXQKICAgICBhdXRvJiBkb2N1
bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CiAgICAgZm9yIChhdXRvIG1hcmtlciA6IGRvY3VtZW50
Lm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQo
KSA8PSBvZmZzZXQgJiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAg
ICAgIGF1dG8mIG1hcmtlckFsdGVybmF0aXZlcyA9IFdURjo6Z2V0PFZlY3RvcjxTdHJpbmc+Piht
YXJrZXItPmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5Om1hcmtlckFsdGVybmF0aXZlcy5zaXplKCldOwotICAgICAgICAg
ICAgZm9yIChhdXRvJiBhbHRlcm5hdGl2ZSA6IG1hcmtlckFsdGVybmF0aXZlcykKLSAgICAgICAg
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmFsdGVybmF0aXZlXTsKLSAgICAgICAgICAgICphbHRl
cm5hdGl2ZXMgPSBhcnJheTsKKyAgICAgICAgICAgICphbHRlcm5hdGl2ZXMgPSBjcmVhdGVOU0Fy
cmF5KFdURjo6Z2V0PFZlY3RvcjxTdHJpbmc+PihtYXJrZXItPmRhdGEoKSkpLmF1dG9yZWxlYXNl
KCk7CiAgICAgICAgICAgICByZXR1cm4ga2l0KFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUs
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSkucHRyKCkp
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmgK
aW5kZXggZDI5ZjE0MTM0Mjg0OTNhNWYzNmI0YjAwMTI4N2I0OGNmZDI2OTc2NC4uNzY1YzU5ZDQz
NGY4YTVmNzRjZjAxMjkwZTAzZTgxZjJkMjJiYjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9z
aXRpb25JbnRlcm5hbC5oCkBAIC0yMyw4ICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0aW9uLmgiCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0aW9uLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL1Zpc2libGVQb3NpdGlvbi5oPgogCiBAaW50ZXJmYWNlIFdlYlZpc2li
bGVQb3NpdGlvbiAoSW50ZXJuYWwpCkBAIC0zMywzICszNCw1IEBACiAtIChXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb24pX3Zpc2libGVQb3NpdGlvbjsKIAogQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBmOTgy
YmQxMGFjOGU1YmQ4ZWZhOTUyNDU0MTZiZjFhMWE4NWUyOTI2Li5iZTVkNjQ3ZmRkYmIwYmNjZWM1
MzE3YzI3NzkxNTg2NzEyNjM4Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC03NSwxMCArNzUsMTAgQEAgQGltcGxlbWVudGF0
aW9uIFdlYlBERlZpZXcgewogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7Ci0g
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgcmV0dXJuIEBbCiAgICAg
ICAgIEAidGV4dC9wZGYiLAogICAgICAgICBAImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgIG5p
bF07CisgICAgXTsKIH0KIAogKyAoQ0dDb2xvclJlZilzaGFkb3dDb2xvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0KaW5kZXggOGI3YmE1Y2FiYzgxZDc4YjY4YWEyNGJkNWVmZjI1YWQyNzhi
MmJhNS4uOWUxMjg5NmQ3N2ZlMDhiZTdmMGI2MDZkYzExYTdmYTE2ZTQ3NmY0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01OCwxMCArNTgsMTIgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJh
bmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVG91Y2guaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5o
PgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV0FLQXBwS2l0
U3R1YnMuaD4KQEAgLTE3OSwxNSArMTgxLDYgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIGRlZmF1bHRDbGFzcykKICAgICByZXR1cm4g
b2JqY0NsYXNzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqa2l0KGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMpCi17Ci0gICAgc2l6ZV90IHNpemUgPSByZWN0cy5zaXplKCk7Ci0gICAgTlNNdXRh
YmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVd
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdHNbaV1dXTsKLSAgICByZXR1cm4g
YXJyYXk7Ci19Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgV0tRdWFkIHdr
UXVhZEZyb21GbG9hdFF1YWQoY29uc3QgRmxvYXRRdWFkJiBpblF1YWQpCkBAIC01MTQsNyArNTA3
LDcgQEAgLSAoTlNBcnJheSAqKXRleHRSZWN0cwogICAgICAgICByZXR1cm4gbmlsOwogICAgIFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiByZWN0czsKICAgICBub2RlLnRleHRSZWN0cyhyZWN0cyk7
Ci0gICAgcmV0dXJuIGtpdChyZWN0cyk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKQEAgLTYzMSwxMiArNjI0LDExIEBAIC0gKENHSW1h
Z2VSZWYpcmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9yY2VCbGFja1RleHQK
IAogLSAoTlNBcnJheSAqKXRleHRSZWN0cwogewotICAgIC8vIEZJWE1FOiBUaGUgY2FsbCB0byB1
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgc2hvdWxkIGJlIG1vdmVkIGludG8g
V2ViQ29yZTo6UmFuZ2UuCiAgICAgYXV0byYgcmFuZ2UgPSAqY29yZShzZWxmKTsKICAgICBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIHJhbmdlLmFic29sdXRl
VGV4dFJlY3RzKHJlY3RzKTsKLSAgICByZXR1cm4ga2l0KHJlY3RzKTsKKyAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAqKWxpbmVC
b3hSZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlv
bkhhbmRsZXJzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRs
ZXJzLm1tCmluZGV4IGI1MDMwZDBlZTQ2OTYyNWQ5MzAxZjUxNzFhMDRkN2JlZTFjNmY3YzYuLmM4
YmU1NTFiODUwYmNlMTcyM2EyZjExNGUyZGVlNmNlNmRkMjk1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KQEAgLTQ4LDcgKzQ4LDcg
QEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHJhaXNlRE9NRXJyb3JFeGNlcHRpb24oV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYykKICAgICBlbHNlCiAgICAgICAgIHJlYXNvbiA9IFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiKioqICVAICVkIiwgRE9NRXhjZXB0aW9uLCBkZXNjcmlw
dGlvbi5sZWdhY3lDb2RlXTsKIAotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpkZXNjcmlwdGlvbi5sZWdhY3lDb2RlXSwgRE9NRXhjZXB0aW9uLCBuaWxdOworICAgIE5T
RGljdGlvbmFyeSAqdXNlckluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzQW5kS2V5czpAKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUpLCBET01FeGNlcHRpb24sIG5pbF07
CiAKICAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhjZXB0aW9uIGV4Y2VwdGlvbldp
dGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246cmVhc29uIHVzZXJJbmZvOnVzZXJJbmZvXTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2Fy
ZExpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJk
TGlzdC5tbQppbmRleCAxOGYwMTNhMGE4NzViZDM2ZTg5NTU4NjYzNGFiN2Q4YjBhOGIwMmI3Li44
Yjk5NGVkMmQwMDcwNmRkOGU0ZWQ2YjIyYjZiM2I3ZTk4NDVmNjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQpAQCAt
MTU4LDIxICsxNTgsMjEgQEAgLSAodm9pZClyZW1vdmVJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0
ZW0KIC0gKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbgogewogICAgIEJh
Y2tGb3J3YXJkTGlzdCAqY29yZUJGTGlzdCA9IGNvcmUoc2VsZik7Ci0gICAgCisKICAgICBhdXRv
JiBoaXN0b3J5SXRlbXMgPSBjb3JlQkZMaXN0LT5lbnRyaWVzKCk7CiAgICAgdW5zaWduZWQgc2l6
ZSA9IGhpc3RvcnlJdGVtcy5zaXplKCk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKmVudHJpZXNBcnJh
eSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV07CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgW2VudHJpZXNBcnJh
eSBhZGRPYmplY3Q6W2tpdChjb25zdF9jYXN0PFdlYkNvcmU6Okhpc3RvcnlJdGVtKj4oaGlzdG9y
eUl0ZW1zW2ldLnB0cigpKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uSW5jbHVkaW5nQ2hpbGRy
ZW46Tk9dXTsKLSAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIGVudHJpZXNBcnJheSwg
V2ViQmFja0ZvcndhcmRMaXN0RGljdGlvbmFyeUVudHJpZXNLZXksCi0gICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29yZUJGTGlzdC0+Y3VycmVudCgpXSwgV2ViQmFja0Zv
cndhcmRMaXN0RGljdGlvbmFyeUN1cnJlbnRLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50OmNvcmVCRkxpc3QtPmNhcGFjaXR5KCldLCBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9u
YXJ5Q2FwYWNpdHlLZXksCi0gICAgICAgIG5pbF07Ci0gICAgICAgIAorCisgICAgTlNEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgV2ViQmFja0ZvcndhcmRMaXN0RGljdGlvbmFy
eUVudHJpZXNLZXk6IGVudHJpZXNBcnJheSwKKyAgICAgICAgV2ViQmFja0ZvcndhcmRMaXN0RGlj
dGlvbmFyeUN1cnJlbnRLZXk6IEAoY29yZUJGTGlzdC0+Y3VycmVudCgpKSwKKyAgICAgICAgV2Vi
QmFja0ZvcndhcmRMaXN0RGljdGlvbmFyeUNhcGFjaXR5S2V5OiBAKGNvcmVCRkxpc3QtPmNhcGFj
aXR5KCkpLAorICAgIH07CisKICAgICBbZW50cmllc0FycmF5IHJlbGVhc2VdOwotICAgIAorCiAg
ICAgcmV0dXJuIGRpY3Rpb25hcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBiOGJjMTQ3OWExOGE4NDU0MmIwZjM2NDNhZmI4YTEy
MmE1MTQzY2VhLi5mMjc0NzBkYmMzMDBjYWEwZTVjYzAyOWEyN2IyZGExMzlmYWYyMWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMTks
MTEgKzExOSwxMCBAQCBAaW1wbGVtZW50YXRpb24gV2ViSGlzdG9yeVByaXZhdGUKIAogKyAodm9p
ZClpbml0aWFsaXplCiB7Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gcmVnaXN0ZXJEZWZhdWx0czoKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgQCIxMDAwIiwgQCJXZWJLaXRIaXN0b3J5SXRl
bUxpbWl0IiwKLSAgICAgICAgICAgIEAiNyIsIEAiV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0
IiwKLSAgICAgICAgICAgIG5pbF1dOyAgICAKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOkB7CisgICAgICAgIEAiV2ViS2l0SGlzdG9y
eUl0ZW1MaW1pdCI6IEAiMTAwMCIsCisgICAgICAgIEAiV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xp
bWl0IjogQCI3IiwKKyAgICB9XTsKIH0KIAogLSAoaWQpaW5pdApAQCAtNzI3LDEyICs3MjYsMTEg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpX3NlbmROb3RpZmljYXRpb246KE5TU3RyaW5n
ICopbmFtZSBlbnRyaWVzOihOU0FycmF5ICopZW50cmllcwogewotICAgIE5TRGljdGlvbmFyeSAq
dXNlckluZm8gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6ZW50
cmllcywgV2ViSGlzdG9yeUl0ZW1zS2V5LCBuaWxdOworICAgIE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8gPSBAeyBXZWJIaXN0b3J5SXRlbXNLZXk6IGVudHJpZXMgfTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24obmFtZSwgc2VsZiwgdXNlcklu
Zm8pOwogI2Vsc2UgICAgCi0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XQotICAgICAgICBwb3N0Tm90aWZpY2F0aW9uTmFtZTpuYW1lIG9iamVjdDpzZWxmIHVzZXJJbmZv
OnVzZXJJbmZvXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2JqZWN0OnNlbGYgdXNlckluZm86dXNlckluZm9dOwog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnlJdGVtLm1tCmluZGV4IGE4ZDNiYzIwNjhmMmM3NjNmOTU1N2Q4MWM3ZjVkZGYwZjViN2Uw
NDkuLmRmYWNiMzdkMTA5Mzg1Y2RhNjI1NzFiM2QwM2YzNWI5Yjk0ZTY1MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtNTQs
NiArNTQsNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JD
b2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpAQCAtMzQ2LDE5ICszNDcsOCBAQCAtIChpZClpbml0RnJvbURpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgIGlmIChbZGljdCBfd2Via2l0
X2Jvb2xGb3JLZXk6bGFzdFZpc2l0V2FzRmFpbHVyZUtleV0pCiAgICAgICAgIGNvcmUoX3ByaXZh
dGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOwogICAgIAotICAgIGlmIChOU0FycmF5
ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tl
eV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOwotICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBjb3VudF0pOwotCi0gICAgICAgIGZvciAoaWQgcmVkaXJl
Y3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7Ci0gICAgICAgICAgICBpZiAoIVtyZWRpcmVjdFVSTCBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgoTlNT
dHJpbmcgKilyZWRpcmVjdFVSTCk7Ci0gICAgICAgIH0KLQotICAgICAgICBfcHJpdmF0ZS0+X3Jl
ZGlyZWN0VVJMcyA9IFdURk1vdmUocmVkaXJlY3RVUkxzVmVjdG9yKTsKLSAgICB9CisgICAgaWYg
KE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6cmVkaXJl
Y3RVUkxzS2V5XSkKKyAgICAgICAgX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxTdHJpbmc+PihtYWtlVmVjdG9yPFN0cmluZz4ocmVkaXJlY3RVUkxzKSk7CiAKICAg
ICBOU0FycmF5ICpjaGlsZERpY3RzID0gW2RpY3Qgb2JqZWN0Rm9yS2V5OmNoaWxkcmVuS2V5XTsK
ICAgICBpZiAoY2hpbGREaWN0cykgewpAQCAtNDM2LDE2ICs0MjYsOSBAQCAtIChOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KICAgICB9CiAgICAgaWYgKGNvcmVJdGVtLT5s
YXN0VmlzaXRXYXNGYWlsdXJlKCkpCiAgICAgICAgIFtkaWN0IHNldE9iamVjdDpAWUVTIGZvcktl
eTpsYXN0VmlzaXRXYXNGYWlsdXJlS2V5XTsKLSAgICBpZiAoVmVjdG9yPFN0cmluZz4qIHJlZGly
ZWN0VVJMcyA9IF9wcml2YXRlLT5fcmVkaXJlY3RVUkxzLmdldCgpKSB7Ci0gICAgICAgIHNpemVf
dCBzaXplID0gcmVkaXJlY3RVUkxzLT5zaXplKCk7Ci0gICAgICAgIEFTU0VSVChzaXplKTsKLSAg
ICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6KE5TU3RyaW5nICopcmVkaXJl
Y3RVUkxzLT5hdChpKV07Ci0gICAgICAgIFtkaWN0IHNldE9iamVjdDpyZXN1bHQgZm9yS2V5OnJl
ZGlyZWN0VVJMc0tleV07Ci0gICAgICAgIFtyZXN1bHQgcmVsZWFzZV07Ci0gICAgfQotICAgIAor
ICAgIGlmIChhdXRvIHJlZGlyZWN0VVJMcyA9IF9wcml2YXRlLT5fcmVkaXJlY3RVUkxzLmdldCgp
KQorICAgICAgICBbZGljdCBzZXRPYmplY3Q6Y3JlYXRlTlNBcnJheSgqcmVkaXJlY3RVUkxzKS5n
ZXQoKSBmb3JLZXk6cmVkaXJlY3RVUkxzS2V5XTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKGluY2x1ZGVzQ2hpbGRyZW4gJiYgY29yZUl0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgp
KSB7CiAjZWxzZQpAQCAtNDY4LDggKzQ1MSw4IEBAIC0gKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbgogICAgICAgICBbZGljdCBzZXRPYmplY3Q6dmlld3BvcnRBcmd1bWVu
dHMgZm9yS2V5OkAiV2ViVmlld3BvcnRBcmd1bWVudHMiXTsKIAogICAgIEludFBvaW50IHNjcm9s
bFBvc2l0aW9uID0gY29yZShfcHJpdmF0ZSktPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgW2RpY3Qg
c2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OnNjcm9sbFBvc2l0aW9uLngoKV0gZm9y
S2V5OnNjcm9sbFBvaW50WEtleV07Ci0gICAgW2RpY3Qgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoSW50OnNjcm9sbFBvc2l0aW9uLnkoKV0gZm9yS2V5OnNjcm9sbFBvaW50WUtleV07Cisg
ICAgW2RpY3Qgc2V0T2JqZWN0OkAoc2Nyb2xsUG9zaXRpb24ueCgpKSBmb3JLZXk6c2Nyb2xsUG9p
bnRYS2V5XTsKKyAgICBbZGljdCBzZXRPYmplY3Q6QChzY3JvbGxQb3NpdGlvbi55KCkpIGZvcktl
eTpzY3JvbGxQb2ludFlLZXldOwogI2VuZGlmCiAKICAgICByZXR1cm4gZGljdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubQppbmRl
eCAxN2I5OGI4NzQ4ODRhNjgzY2Y2ZjcwOTBjZDE5NDA3NDY5YTYxNzRiLi5jMWZiZDNlYzY5NjI4
MzZlMTZkNmQwNzJkMTdkOTdkYmM1OWYzMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tCkBAIC00MSw3ICs0MSw3IEBAICsg
KE5TQXJyYXkgKilhcnJheVdpdGhJRlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZQogICAgIHN0YXRp
YyBOU0FycmF5ICpjYW5uZWRBcnJheSA9IG5pbDsKIAogICAgIGlmIChjYW5uZWRBcnJheSA9PSBu
aWwpIHsKLSAgICAgICAgY2FubmVkQXJyYXkgPSBbW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Oldl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV0gcmV0YWluXTsKKyAgICAgICAgY2FubmVkQXJyYXkg
PSBbQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVdIHJldGFpbl07CiAgICAgfQogCiAgICAg
cmV0dXJuIGNhbm5lZEFycmF5OwpAQCAtNzMsNyArNzMsNyBAQCArKHZvaWQpd3JpdGVVUkxzOihO
U0FycmF5ICopVVJMcyBhbmRUaXRsZXM6KE5TQXJyYXkgKil0aXRsZXMgdG9QYXN0ZWJvYXJkOihO
U1BhcwogICAgICAgICBbdGl0bGVzT3JFbXB0eVN0cmluZ3MgYWRkT2JqZWN0Oih0aXRsZXMgPT0g
bmlsKSA/IEAiIiA6IFtbdGl0bGVzIG9iamVjdEF0SW5kZXg6aW5kZXhdIF93ZWJraXRfc3RyaW5n
QnlUcmltbWluZ1doaXRlc3BhY2VdXTsKICAgICB9CiAKLSAgICBbcGFzdGVib2FyZCBzZXRQcm9w
ZXJ0eUxpc3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpVUkxTdHJpbmdzLCB0aXRsZXNPckVt
cHR5U3RyaW5ncywgbmlsXQorICAgIFtwYXN0ZWJvYXJkIHNldFByb3BlcnR5TGlzdDpAW1VSTFN0
cmluZ3MsIHRpdGxlc09yRW1wdHlTdHJpbmdzXQogICAgICAgICAgICAgICAgICAgICAgICAgZm9y
VHlwZTpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCA1MTM3ZTQxYzI0MmZjYTU1YzRhMDk0YjY0MzM3
M2U5ZTBhNmZlYzJiLi4xNTEzZjRlNzliMGM0NTdjMTk3YjdmNjgxMmNhNThjNGQ4NjkwMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTcxLDUwICs3MSw0
OSBAQCArICh2b2lkKWluaXRpYWxpemUKIAogKyAoTlNBcnJheSAqKXN0YXRpc3RpY3MKIHsKLSAg
ICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzID0gV2ViQ29yZTo6TWVtb3J5Q2Fj
aGU6OnNpbmdsZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKLQotICAgIHJldHVybiBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOgotICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmltYWdl
cy5jb3VudF0sIEAiSW1hZ2VzIiwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OnMuY3NzU3R5bGVTaGVldHMuY291bnRdLCBAIkNTUyIsCisgICAgYXV0byBzID0gV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKKyAgICByZXR1cm4gQFsK
KyAgICAgICAgQHsKKyAgICAgICAgICAgIEAiSW1hZ2VzIjogQChzLmltYWdlcy5jb3VudCksCisg
ICAgICAgICAgICBAIkNTUyI6IEAocy5jc3NTdHlsZVNoZWV0cy5jb3VudCksCiAjaWYgRU5BQkxF
KFhTTFQpCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnhzbFN0eWxlU2hl
ZXRzLmNvdW50XSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKHMueHNsU3R5bGVTaGVl
dHMuY291bnQpLAogI2Vsc2UKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBd
LCBAIlhTTCIsCisgICAgICAgICAgICBAIlhTTCI6IEAoMCksCiAjZW5kaWYKLSAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuc2NyaXB0cy5jb3VudF0sIEAiSmF2YVNjcmlwdCIs
Ci0gICAgICAgICAgICBuaWxdLAotICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmlt
YWdlcy5zaXplXSwgQCJJbWFnZXMiLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6cy5jc3NTdHlsZVNoZWV0cy5zaXplXSAsQCJDU1MiLAorICAgICAgICAgICAgQCJKYXZhU2Ny
aXB0IjogQChzLnNjcmlwdHMuY291bnQpLAorICAgICAgICB9LAorICAgICAgICBAeworICAgICAg
ICAgICAgQCJJbWFnZXMiOiBAKHMuaW1hZ2VzLnNpemUpLAorICAgICAgICAgICAgQCJDU1MiOiBA
KHMuY3NzU3R5bGVTaGVldHMuc2l6ZSksCiAjaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnhzbFN0eWxlU2hlZXRzLnNpemVdLCBAIlhTTCIsCisg
ICAgICAgICAgICBAIlhTTCI6IEAocy54c2xTdHlsZVNoZWV0cy5zaXplKSwKICNlbHNlCi0gICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAorICAgICAgICAgICAg
QCJYU0wiOiBAKDApLAogI2VuZGlmCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpzLnNjcmlwdHMuc2l6ZV0sIEAiSmF2YVNjcmlwdCIsCi0gICAgICAgICAgICBuaWxdLAotICAg
ICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmltYWdlcy5saXZlU2l6ZV0sIEAiSW1hZ2Vz
IiwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuY3NzU3R5bGVTaGVldHMu
bGl2ZVNpemVdICxAIkNTUyIsCisgICAgICAgICAgICBAIkphdmFTY3JpcHQiOiBAKHMuc2NyaXB0
cy5zaXplKSwKKyAgICAgICAgfSwKKyAgICAgICAgQHsKKyAgICAgICAgICAgIEAiSW1hZ2VzIjog
QChzLmltYWdlcy5saXZlU2l6ZSksCisgICAgICAgICAgICBAIkNTUyI6IEAocy5jc3NTdHlsZVNo
ZWV0cy5saXZlU2l6ZSksCiAjaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpzLnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplXSwgQCJYU0wiLAorICAgICAg
ICAgICAgQCJYU0wiOiBAKHMueHNsU3R5bGVTaGVldHMubGl2ZVNpemUpLAogI2Vsc2UKLSAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdLCBAIlhTTCIsCisgICAgICAgICAgICBA
IlhTTCI6IEAoMCksCiAjZW5kaWYKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OnMuc2NyaXB0cy5saXZlU2l6ZV0sIEAiSmF2YVNjcmlwdCIsCi0gICAgICAgICAgICBuaWxdLAot
ICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmltYWdlcy5kZWNvZGVkU2l6ZV0sIEAi
SW1hZ2VzIiwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuY3NzU3R5bGVT
aGVldHMuZGVjb2RlZFNpemVdICxAIkNTUyIsCisgICAgICAgICAgICBAIkphdmFTY3JpcHQiOiBA
KHMuc2NyaXB0cy5saXZlU2l6ZSksCisgICAgICAgIH0sCisgICAgICAgIEB7CisgICAgICAgICAg
ICBAIkltYWdlcyI6IEAocy5pbWFnZXMuZGVjb2RlZFNpemUpLAorICAgICAgICAgICAgQCJDU1Mi
OiBAKHMuY3NzU3R5bGVTaGVldHMuZGVjb2RlZFNpemUpLAogI2lmIEVOQUJMRShYU0xUKQotICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5kZWNvZGVk
U2l6ZV0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQChzLnhzbFN0eWxlU2hlZXRzLmRl
Y29kZWRTaXplKSwKICNlbHNlCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDow
XSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKDApLAogI2VuZGlmCi0gICAgICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnNjcmlwdHMuZGVjb2RlZFNpemVdLCBAIkphdmFT
Y3JpcHQiLAotICAgICAgICAgICAgbmlsXSwKLSAgICAgICAgbmlsXTsKKyAgICAgICAgICAgIEAi
SmF2YVNjcmlwdCI6IEAocy5zY3JpcHRzLmRlY29kZWRTaXplKSwKKyAgICAgICAgfSwKKyAgICBd
OwogfQogCiArICh2b2lkKWVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJDb3JlU3RhdGlzdGljcy5tbQppbmRleCA0NjY2NjUzNDJhMWVhMzlmNzcwYjc2MDg0YjRi
YjJjYzM4ZTUzYmUwLi40YzRmZWM3OGYzYWI5NWExZGMwNzRhZTdhNDhmOTkwZjJjMTUzNzYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
bW0KQEAgLTE5OSwyMiArMTk5LDIwIEBAICsgKHZvaWQpc3RvcElnbm9yaW5nV2ViQ29yZU5vZGVM
ZWFrcwogCiArIChOU0RpY3Rpb25hcnkgKiltZW1vcnlTdGF0aXN0aWNzCiB7Ci0gICAgV1RGOjpG
YXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxv
Y1N0YXRpc3RpY3MoKTsKLSAgICAKKyAgICBhdXRvIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RG
OjpmYXN0TWFsbG9jU3RhdGlzdGljcygpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZN
KCkpOwogICAgIHNpemVfdCBoZWFwU2l6ZSA9IGNvbW1vblZNKCkuaGVhcC5zaXplKCk7CiAgICAg
c2l6ZV90IGhlYXBGcmVlID0gY29tbW9uVk0oKS5oZWFwLmNhcGFjaXR5KCkgLSBoZWFwU2l6ZTsK
LSAgICBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVt
b3J5U3RhdGlzdGljcygpOwotICAgIAotICAgIHJldHVybiBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6ZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzXSwgQCJGYXN0TWFsbG9j
UmVzZXJ2ZWRWTUJ5dGVzIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzXSwgQCJGYXN0TWFsbG9jQ29t
bWl0dGVkVk1CeXRlcyIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
ZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlc10sIEAiRmFzdE1hbGxvY0ZyZWVMaXN0
Qnl0ZXMiLAotICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlYXBTaXpl
XSwgQCJKYXZhU2NyaXB0SGVhcFNpemUiLAotICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OmhlYXBGcmVlXSwgQCJKYXZhU2NyaXB0RnJlZVNpemUiLAotICAgICAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6KHVuc2lnbmVkIGludClnbG9iYWxN
ZW1vcnlTdGF0cy5zdGFja0J5dGVzXSwgQCJKYXZhU2NyaXB0U3RhY2tTaXplIiwKLSAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Oih1bnNpZ25lZCBpbnQpZ2xv
YmFsTWVtb3J5U3RhdHMuSklUQnl0ZXNdLCBAIkphdmFTY3JpcHRKSVRTaXplIiwKLSAgICAgICAg
ICAgIG5pbF07CisgICAgYXV0byBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRp
c3RpY3MoKTsKKyAgICByZXR1cm4gQHsKKyAgICAgICAgQCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5
dGVzIjogQChmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpLAorICAgICAgICBA
IkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIjogQChmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21t
aXR0ZWRWTUJ5dGVzKSwKKyAgICAgICAgQCJGYXN0TWFsbG9jRnJlZUxpc3RCeXRlcyI6IEAoZmFz
dE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcyksCisgICAgICAgIEAiSmF2YVNjcmlwdEhl
YXBTaXplIjogQChoZWFwU2l6ZSksCisgICAgICAgIEAiSmF2YVNjcmlwdEZyZWVTaXplIjogQCho
ZWFwRnJlZSksCisgICAgICAgIEAiSmF2YVNjcmlwdFN0YWNrU2l6ZSI6IEAoZ2xvYmFsTWVtb3J5
U3RhdHMuc3RhY2tCeXRlcyksCisgICAgICAgIEAiSmF2YVNjcmlwdEpJVFNpemUiOiBAKGdsb2Jh
bE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSwKKyAgICB9OwogfQogCiArICh2b2lkKXJldHVybkZyZWVN
ZW1vcnlUb1N5c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJLaXRFcnJvcnMubSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3Jz
Lm0KaW5kZXggYzUyNzgzNzRlOTRlMjAxNmM5NjA4OGEwMWY1ZDg1YTVkYzM4ZTZhMy4uOGIzYmIy
M2VkMzFiYWViNDM5OGYyNGVjNTFmMjQzZjExNWE3OGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJvcnMubQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tCkBAIC03MSwxMiArNzEsMTIgQEAgLSAoaW5zdGFu
Y2V0eXBlKV93ZWJraXRfaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGlu
dCljb2RlIFVSTDooTlMKIHsKICAgICAvLyBJbnNlcnQgYSBsb2NhbGl6ZWQgc3RyaW5nIGhlcmUg
Zm9yIHRob3NlIGZvbGtzIG5vdCBzYXZ2eSB0byBvdXIgY2F0ZWdvcnkgbWV0aG9kcy4KICAgICBO
U0RpY3Rpb25hcnkgKmRlc2NyaXB0aW9uc0RpY3QgPSBbZGVzY3JpcHRpb25zIG9iamVjdEZvcktl
eTpkb21haW5dOwotICAgIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uc0RpY3QgPyBbZGVzY3JpcHRpb25zRGljdCBvYmplY3RGb3JLZXk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6Y29kZV1dIDogbmlsOwotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgVVJMLCBAIk5TRXJy
b3JGYWlsaW5nVVJMS2V5IiwKLSAgICAgICAgW1VSTCBhYnNvbHV0ZVN0cmluZ10sIE5TVVJMRXJy
b3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXksCi0gICAgICAgIGxvY2FsaXplZERlc2NyaXB0aW9u
LCBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5LAotICAgICAgICBuaWxdOworICAgIE5TU3RyaW5n
ICpsb2NhbGl6ZWREZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uc0RpY3QgPyBbZGVzY3JpcHRpb25z
RGljdCBvYmplY3RGb3JLZXk6QChjb2RlKV0gOiBuaWw7CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0
ID0gQHsKKyAgICAgICAgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSI6IFVSTCwKKyAgICAgICAgTlNV
UkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleTogW1VSTCBhYnNvbHV0ZVN0cmluZ10sCisg
ICAgICAgIE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk6IGxvY2FsaXplZERlc2NyaXB0aW9uLAor
ICAgIH07CiAgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRG9tYWluOmRvbWFpbiBjb2RlOmNvZGUg
dXNlckluZm86ZGljdF07CiB9CiAKQEAgLTkxLDIxICs5MSwyMSBAQCArICh2b2lkKV9yZWdpc3Rl
cldlYktpdEVycm9ycwogICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIE5T
RGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czoKICAgICAgICAgICAgICAgICAvLyBQb2xpY3kgZXJyb3JzCi0gICAgICAgICAgICAgICAg
V2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFNob3dNSU1FVHlwZSwgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBl
XSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VSTCwg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJy
b3JDYW5ub3RTaG93VVJMXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9u
RnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlXSwKLSAg
ICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBv
cnQsICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5u
b3RVc2VSZXN0cmljdGVkUG9ydF0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlw
dGlvbkZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRGaWx0ZXIsICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6IFdlYktpdEVycm9yRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlcl0sCisg
ICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFNob3dNSU1FVHlwZSwg
ICAgICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSksCisgICAg
ICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFNob3dVUkwsICAgICAgICAg
ICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwpLAorICAgICAgICAgICAg
ICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hh
bmdlLCAgIEAoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlKSwK
KyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3Rl
ZFBvcnQsICAgICAgICAgICAgICBAKFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQp
LAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRCbG9ja2Vk
QnlDb250ZW50RmlsdGVyLCAgICAgIEAoV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250
ZW50RmlsdGVyKSwKIAogICAgICAgICAgICAgICAgIC8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3Jz
Ci0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdEZpbmRQbHVnaW4s
ICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9y
Q2Fubm90RmluZFBsdWdJbl0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlv
bkNhbm5vdExvYWRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbl0sCi0gICAgICAgICAgICAgICAgV2Vi
S2l0RXJyb3JEZXNjcmlwdGlvbkphdmFVbmF2YWlsYWJsZSwgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlXSwKLSAg
ICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2VsbGVkQ29ubmVj
dGlvbiwgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQbHVn
SW5DYW5jZWxsZWRDb25uZWN0aW9uXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2Ny
aXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxvYWQsICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDogV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZF0sCisgICAgICAgICAg
ICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdEZpbmRQbHVnaW4sICAgICAgICAgICAg
ICAgICAgICAgQChXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnSW4pLAorICAgICAgICAgICAgICAg
IFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RMb2FkUGx1Z2luLCAgICAgICAgICAgICAgICAg
ICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1Z0luKSwKKyAgICAgICAgICAgICAgICBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uSmF2YVVuYXZhaWxhYmxlLCAgICAgICAgICAgICAgICAgICAgICBA
KFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbiwgICAgICAgICAgICBAKFdlYktp
dEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbiksCisgICAgICAgICAgICAgICAgV2ViS2l0
RXJyb3JEZXNjcmlwdGlvblBsdWdJbldpbGxIYW5kbGVMb2FkLCAgICAgICAgICAgICAgICAgQChX
ZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkKSwKIAogICAgICAgICAgICAgICAgIC8vIEdl
b2xvY2F0aW9uIGVycm9ycwotICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25H
ZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biwgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OiBXZWJLaXRFcnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duXSwKKyAgICAgICAgICAg
ICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd24sICAg
ICAgICAgICBAKFdlYktpdEVycm9yR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd24pLAogICAgICAg
ICAgICAgICAgIG5pbF07CiAKICAgICAgICAgICAgIFtOU0Vycm9yIF93ZWJraXRfYWRkRXJyb3Jz
V2l0aENvZGVzQW5kRGVzY3JpcHRpb25zOmRpY3QgaW5Eb21haW46V2ViS2l0RXJyb3JEb21haW5d
OwpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKGlkKV9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTooaW50
KWNvZGUKICAgICAKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAgICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlv
bnNGb3JXZWJLaXRFcnJvckRvbWFpbiA9IFtkZXNjcmlwdGlvbnMgb2JqZWN0Rm9yS2V5OldlYktp
dEVycm9yRG9tYWluXTsKLSAgICBOU1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVz
Y3JpcHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1i
ZXJXaXRoSW50OmNvZGVdXTsKKyAgICBOU1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBb
ZGVzY3JpcHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gb2JqZWN0Rm9yS2V5OkAoY29kZSldOwog
ICAgIGlmIChsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVj
dDpsb2NhbGl6ZWREZXNjcmlwdGlvbiBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07
CiAgICAgaWYgKGNvbnRlbnRVUkwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDZiMGU4OTY3NWEwZDEyMDhkOWNh
OTU4MjlhNTYwNTFhNjdiYWMyMTUuLjczOTJmMTA1OWJjYjQ1ZTk1MjBhZjhiOTYyY2Y0MDM1YmFi
ODJmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRO
U1N0cmluZ0V4dHJhcy5tbQpAQCAtOTksNyArOTksNyBAQCAtICh2b2lkKV93ZWJfZHJhd0F0UG9p
bnQ6KE5TUG9pbnQpcG9pbnQgZm9udDooTlNGb250ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29sb3Ig
KgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb2ludC55ICs9IFtmb250IGRlc2NlbmRlcl07
CiAKLSAgICAgICAgW3NlbGYgZHJhd0F0UG9pbnQ6cG9pbnQgd2l0aEF0dHJpYnV0ZXM6W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOmZvbnQsIE5TRm9udEF0dHJpYnV0
ZU5hbWUsIHRleHRDb2xvciwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBuaWxdXTsK
KyAgICAgICAgW3NlbGYgZHJhd0F0UG9pbnQ6cG9pbnQgd2l0aEF0dHJpYnV0ZXM6QHsgTlNGb250
QXR0cmlidXRlTmFtZTogZm9udCwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiB0ZXh0
Q29sb3IgfV07CiAgICAgfQogfQogCkBAIC0xMTUsNyArMTE1LDcgQEAgLSAoZmxvYXQpX3dlYl93
aWR0aFdpdGhGb250OihOU0ZvbnQgKilmb250CiAgICAgICAgIHJldHVybiB3ZWJDb3JlRm9udC53
aWR0aChydW4pOwogICAgIH0KIAotICAgIHJldHVybiBbc2VsZiBzaXplV2l0aEF0dHJpYnV0ZXM6
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOmZvbnQsIE5TRm9udEF0
dHJpYnV0ZU5hbWUsIG5pbF1dLndpZHRoOworICAgIHJldHVybiBbc2VsZiBzaXplV2l0aEF0dHJp
YnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTogZm9udCB9XS53aWR0aDsKIH0KIAogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCBjNTQxM2U4MWM2YTNlY2IyZWM5Nzgx
ZjZiOGJmZDZjMmIyYTA1ZGYxLi5iYmZmYWRlNjViZDE3OGUyYTNmNmEyYzQwZGM2MDZlMGE0ODBh
Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1h
bmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0Zp
bGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5o
PgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9uIE5T
RmlsZU1hbmFnZXIgKFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggYmJi
NjJjYmFmZGJiZTA5ODc1YTJjZTQ1NTg4Yzg4YTE3OGFmZmNlZC4uZTFjNWVlYjMyODNmMDY2ZDgx
MmNjYjA1NmM0NzA3ZjM1MmIwODc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCAr
IChOU0FycmF5ICopX3dlYl93cml0YWJsZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihC
T09MKWhhc0FyY2hpdmUKIAogKyAoTlNBcnJheSAqKV93ZWJfZHJhZ1R5cGVzRm9yVVJMCiB7Ci0g
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgcmV0dXJuIEBbCiAgICAg
ICAgIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwKICAgICAgICAgbGVnYWN5VVJMUGFzdGVi
b2FyZFR5cGUoKSwKICAgICAgICAgV2ViVVJMUGJvYXJkVHlwZSwKQEAgLTExNCw3ICsxMTQsNyBA
QCArIChOU0FycmF5ICopX3dlYl9kcmFnVHlwZXNGb3JVUkwKICAgICAgICAgbGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKSwKICAgICAgICAgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUo
KSwKICAgICAgICAgbGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwKLSAgICAgICAg
bmlsXTsKKyAgICBdOwogfQogCiAtIChOU1VSTCAqKV93ZWJfYmVzdFVSTApAQCAtMTc3LDcgKzE3
Nyw3IEBAIC0gKHZvaWQpX3dlYl93cml0ZVVSTDooTlNVUkwgKilVUkwgYW5kVGl0bGU6KE5TU3Ry
aW5nICopdGl0bGUgdHlwZXM6KE5TQXJyYXkgKil0CiAgICAgaWYgKFt0eXBlcyBjb250YWluc09i
amVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgW3NlbGYgc2V0U3Ry
aW5nOltVUkwgX3dlYl91c2VyVmlzaWJsZVN0cmluZ10gZm9yVHlwZTpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYlVSTHNXaXRo
VGl0bGVzUGJvYXJkVHlwZV0pCi0gICAgICAgIFtXZWJVUkxzV2l0aFRpdGxlcyB3cml0ZVVSTHM6
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OlVSTF0gYW5kVGl0bGVzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDp0aXRsZV0gdG9QYXN0ZWJvYXJkOnNlbGZdOworICAgICAgICBbV2ViVVJMc1dpdGhU
aXRsZXMgd3JpdGVVUkxzOkBbVVJMXSBhbmRUaXRsZXM6QFt0aXRsZV0gdG9QYXN0ZWJvYXJkOnNl
bGZdOwogfQogCiArIChpbnQpX3dlYl9zZXRGaW5kUGFzdGVib2FyZFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgd2l0aE93bmVyOihpZClvd25lcgpAQCAtMTg1LDcgKzE4NSw3IEBAICsgKGludClf
d2ViX3NldEZpbmRQYXN0ZWJvYXJkU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoT3duZXI6
KGlkKW93bmVyCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBO
U1Bhc3RlYm9hcmQgKmZpbmRQYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0
aE5hbWU6TlNGaW5kUGJvYXJkXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKLSAgICBbZmluZFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9i
amVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpvd25lcl07CisgICAgW2Zp
bmRQYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW2xlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
IG93bmVyOm93bmVyXTsKICAgICBbZmluZFBhc3RlYm9hcmQgc2V0U3RyaW5nOnN0cmluZyBmb3JU
eXBlOmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgIHJldHVybiBbZmluZFBhc3Rl
Ym9hcmQgY2hhbmdlQ291bnRdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNVUkxFeHRyYXMubW0KaW5kZXggYzBlN2ZhOTMxYTRmNGFjNTM1NzI0NjRmYTA2YjBiMDAx
MzdhNWM3My4uN2U5ODkyZmMzZDIyZGI1MjkxYmU0YTY2MTI5NDQ1ZGZhYWY4M2M5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0zOSw3
ICszOSw2IEBACiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3Vz
Y3JpcHQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1
bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRl
eCBhMDRiYzU1N2JmZGRjOTc2ZmQxODA1YWZlYjc4NjViNGQxMjdhZTZkLi45NTYxZDIyZWJiZmI5
ZWE0OWQ0Zjg4MzZiMmYwZmQ1OTVjYTY4ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0KQEAgLTE0MSwxNyArMTQxLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0
TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5
CiAgICAgTlNTdHJpbmcgKnBsdWdpbkhvc3RBcHBQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JD
bGFzczpbV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlIGNsYXNzXV0gcGF0aEZvckF1eGlsaWFyeUV4
ZWN1dGFibGU6cGx1Z2luSG9zdEFwcE5hbWVdOwogICAgIE5TU3RyaW5nICpwbHVnaW5Ib3N0QXBw
RXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnBsdWdpbkhvc3RBcHBQ
YXRoXSBleGVjdXRhYmxlUGF0aF07CiAKLSAgICBOU0RpY3Rpb25hcnkgKmxhdW5jaFByb3BlcnRp
ZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luSG9zdEFwcEV4ZWN1dGFibGVQ
YXRoLCBAInBsdWdpbkhvc3RQYXRoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cGx1Z2luQXJjaGl0ZWN0dXJlXSwgQCJjcHVU
eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVycmVkQnVu
ZGxlTG9jYWxpemF0aW9uTmFtZSgpLCBAImxvY2FsaXphdGlvbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0KKyAgICBOU0RpY3Rpb25hcnkgKmxhdW5jaFBy
b3BlcnRpZXMgPSBAeworICAgICAgICBAInBsdWdpbkhvc3RQYXRoIjogcGx1Z2luSG9zdEFwcEV4
ZWN1dGFibGVQYXRoLAorICAgICAgICBAImNwdVR5cGUiOiBAKHBsdWdpbkFyY2hpdGVjdHVyZSks
CisgICAgICAgIEAibG9jYWxpemF0aW9uIjogcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFt
ZSgpLAorICAgIH07CiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXph
dGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpsYXVuY2hQcm9wZXJ0aWVzIGZvcm1hdDpOU1Byb3Bl
cnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAgICBB
U1NFUlQoZGF0YSk7CiAKLSAgICBbbGF1bmNoUHJvcGVydGllcyByZWxlYXNlXTsKLQogICAgIGtl
cm5fcmV0dXJuX3Qga3IgPSBfV0tQQVNwYXduUGx1Z2luSG9zdChtX3BsdWdpblZlbmRvclBvcnQs
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRhIGJ5dGVz
XSkpLCBbZGF0YSBsZW5ndGhdLCAmcGx1Z2luSG9zdFBvcnQpOwogCiAgICAgaWYgKGtyID09IE1B
Q0hfU0VORF9JTlZBTElEX0RFU1QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0K
aW5kZXggM2IyOTY2NmY3ZGY2YTdkY2NhNzlkMTAzOTMzODBiNjM4YjQ4MTQ0YS4uYzY0Nzc0ZGM0
N2UzZWU1OTUzZDJkNDllZGViN2UwYmM3OGRjYjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkubW0KQEAgLTk0Nyw3ICs5NDcsNyBAQCBrZXJuX3JldHVybl90IFdLUENJZGVudGlm
aWVySW5mbyhtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaQog
ICAgICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKICAgICAgICAg
aW5mbyA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopc3RyIGxlbmd0aDpzdHJs
ZW4oc3RyKSBmcmVlV2hlbkRvbmU6Tk9dOwogICAgIH0gZWxzZSAKLSAgICAgICAgaW5mbyA9IFtO
U051bWJlciBudW1iZXJXaXRoSW50OmlkZW50aWZpZXItPm51bWJlcigpXTsKKyAgICAgICAgaW5m
byA9IEAoaWRlbnRpZmllci0+bnVtYmVyKCkpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJv
cGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDppbmZvIGZvcm1hdDpO
U1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsK
ICAgICBBU1NFUlQoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KaW5kZXggZGM2MmQ1NTQxNDJhMzFjOGE4MDU2NmJkNmRkM2FlN2VlOTRiMzUyNS4uYTYxNDVl
MDJkM2Q2MzVmM2FkNDE0MjlkNTczOWQwMzM5ZGM0MjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTMyMiwyOCArMTMyMiwyOCBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICph
cnJheSwgSlNHbG9iYQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKIAogICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBlXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChT
dHJpbmdWYWx1ZVR5cGUpXTsKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDphc1N0cmluZyh2YWx1
ZSktPnZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QpXTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpEb3VibGVWYWx1ZVR5cGVdXTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS50b051bWJlcihsZXhpY2FsR2xvYmFsT2JqZWN0KV1d
OworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoRG91YmxlVmFsdWVUeXBlKV07CisgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6QCh2YWx1ZS50b051bWJlcihsZXhpY2FsR2xvYmFsT2JqZWN0KSld
OwogICAgIH0gZWxzZSBpZiAodmFsdWUuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpCb29sVmFsdWVUeXBlXV07CisgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6QChCb29sVmFsdWVUeXBlKV07CiAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnZhbHVlLnRvQm9vbGVhbihsZXhpY2FsR2xv
YmFsT2JqZWN0KV1dOwogICAgIH0gZWxzZSBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TnVsbFZhbHVlVHlwZV1dOwor
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAoTnVsbFZhbHVlVHlwZSldOwogICAgIGVsc2UgaWYg
KHZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KHZhbHVlKTsKICAgICAgICAgdWludDY0X3Qgb2JqZWN0SUQ7CiAgICAgICAgIGlmIChnZXRPYmpl
Y3RJRCh0aGlzLCBvYmplY3QsIG9iamVjdElEKSkgewotICAgICAgICAgICAgW2FycmF5IGFkZE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpOUE9iamVjdFZhbHVlVHlwZV1dOwotICAgICAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpvYmplY3RJRF1d
OworICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKE5QT2JqZWN0VmFsdWVUeXBlKV07Cisg
ICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAob2JqZWN0SUQpXTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
SlNPYmplY3RWYWx1ZVR5cGVdXTsKLSAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6bV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3Qodm0sIG9iamVjdCld
XTsKKyAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChKU09iamVjdFZhbHVlVHlwZSldOwor
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0
KHZtLCBvYmplY3QpKV07CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpWb2lkVmFsdWVUeXBlXV07CisgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6QChWb2lkVmFsdWVUeXBlKV07CiB9CiAKIHZvaWQgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjptYXJzaGFsVmFsdWUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGRhdGFfdCYgcmVzdWx0RGF0YSwgbWFjaF9tc2df
dHlwZV9udW1iZXJfdCYgcmVzdWx0TGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IDYzODAxZTFjYWJhY2JhYWYxMDFhMDM4YWNlNTA1MjZmMDNmMWFm
YzkuLjBhYzE3NmNlYTFjZDRmYmM2NmMxYWEzNjE3NTJlNmYwNzdmMmVkYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRp
bWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJC
YXNlUGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
QmFzZVBsdWdpblBhY2thZ2UubW0KaW5kZXggNzFlNDM2NTQ2YTljZDQ4MmE5NTVhMGE4MGI1MGM5
OWVlZGFmMTk1OS4uZjZhNzQ3N2NkMWRmYzJiNDVlY2EwMmNkMmRkODFmZjU3NjYzYzAwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFj
a2FnZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVn
aW5QYWNrYWdlLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxtYWNoLW8vbG9hZGVyLmg+
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
LSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3Au
aD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29u
dGFpbmVyQ2hlY2subW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdp
bkNvbnRhaW5lckNoZWNrLm1tCmluZGV4IDI5MTM5M2JmY2MwNjI4ZWZkMjFlYTUxYjU3NTk2YTc4
ZWVjNzNmNzYuLjc0MDg4OGZkOTY4MjFhMzQyOWM0Nzk0MTE3NWEzNzAwZDUwNzc4NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVy
Q2hlY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5D
b250YWluZXJDaGVjay5tbQpAQCAtMTA3LDExICsxMDcsMTEgQEAgLSAoQk9PTClfaXNGb3JiaWRk
ZW5GaWxlTG9hZAogCiAtIChOU0RpY3Rpb25hcnkgKilfYWN0aW9uSW5mb3JtYXRpb25XaXRoVVJM
OihOU1VSTCAqKVVSTAogewotICAgIHJldHVybiBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpX
ZWJOYXZpZ2F0aW9uVHlwZVBsdWdJblJlcXVlc3RdLCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtl
eSwKLSAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdLCBXZWJBY3Rpb25N
b2RpZmllckZsYWdzS2V5LAotICAgICAgICAgICAgICAgVVJMLCBXZWJBY3Rpb25PcmlnaW5hbFVS
TEtleSwKLSAgICAgICAgICAgICAgIG5pbF07CisgICAgcmV0dXJuIEB7CisgICAgICAgIFdlYkFj
dGlvbk5hdmlnYXRpb25UeXBlS2V5OiBAKFdlYk5hdmlnYXRpb25UeXBlUGx1Z0luUmVxdWVzdCks
CisgICAgICAgIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXk6IEAoMCksCisgICAgICAgIFdlYkFj
dGlvbk9yaWdpbmFsVVJMS2V5OiBVUkwsCisgICAgfTsKIH0KIAogLSAodm9pZClfYXNrUG9saWN5
RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
UGx1Z2luRGF0YWJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBs
dWdpbkRhdGFiYXNlLm1tCmluZGV4IDQ5ZGU0NWQ0YmYyNjdjMTAyN2VjNzMyMzc2ZDhhYzg1N2Q5
NzdlMTEuLjA5M2U2OTc1ZDQxZWM4MjhhYjUyY2YzOGQ0Yjk2NmQ4ZjNmOTVlMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5t
bQpAQCAtMzkwLDExICszOTAsMTEgQEAgKyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0aHMK
ICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgaXMgYSBRdWlja1RpbWUucGx1Z2luIGluIHRo
ZSB1c2VycydzIGhvbWUgZGlyZWN0b3J5CiAgICAgLy8gdGhhdCBpcyB1c2VkIGluc3RlYWQgb2Yg
dGhlIC9MaWJyYXJ5L0ludGVybmV0IFBsdWctaW5zIHZlcnNpb24uCiAgICAgLy8gVGhlIHB1cnBv
c2UgaXMgdG8gYWxsb3cgbm9uLWFkbWluIHVzZXJzIHRvIHVwZGF0ZSB0aGVpciBwbHVnLWlucy4K
LSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICByZXR1cm4gQFsKICAg
ICAgICAgW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkxpYnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMiXSwKICAgICAgICAgQCIvTGlicmFyeS9JbnRlcm5l
dCBQbHVnLUlucyIsCiAgICAgICAgIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVpbHRJblBsdWdJ
bnNQYXRoXSwKLSAgICAgICAgbmlsXTsKKyAgICBdOwogI2Vsc2UKICAgICAvLyBpT1MgcGx1Zy1p
bnMgYXJlIGFsbCBsb2NhdGVkIGluIC9TeXN0ZW0vTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucwog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKQEAgLTQwNiw3ICs0MDYsNyBAQCAr
IChOU0FycmF5ICopX2RlZmF1bHRQbHVnSW5QYXRocwogICAgIE5TU3RyaW5nKiBwbGF0Zm9ybVJv
b3REaXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6V2ViS2l0UGxhdGZvcm1TeXN0
ZW1Sb290RGlyZWN0b3J5KCldOwogICAgIE5TU3RyaW5nICpzeXN0ZW1EaXIgPSBbcGxhdGZvcm1S
b290RGlyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlN5c3RlbS9MaWJyYXJ5Il07
CiAjZW5kaWYKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltzeXN0ZW1EaXIg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW50ZXJuZXQgUGx1Zy1JbnMiXV07Cisg
ICAgcmV0dXJuIEBbW3N5c3RlbURpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJ
bnRlcm5ldCBQbHVnLUlucyJdXTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDczZTIzMzFl
YmI2Y2ZhZWRlZWE0YzFkMmYxMmFkMGJhZDUyMjY1M2MuLmU3Mjc1Yzc0ZGRkNzY3MWI0NTJjYjdk
N2RkZDMxYTNlYjM0NDNiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBv
cnQgIldlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCi0KICNpbXBv
cnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNl
VHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICNpbXBvcnQgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKQEAgLTEwNiwxMSArMTA2LDcgQEAgLSAo
TlNBcnJheSAqKWRhdGFiYXNlc1dpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2lu
CiB7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgVmVjdG9yPFN0
cmluZz4gbmFtZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VO
YW1lcyhbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKLSAgICBOU011dGFibGVBcnJheSAqbmFtZXMg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6
ZSgpXTsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lVmVjdG9yKQotICAgICAgICBbbmFtZXMg
YWRkT2JqZWN0OihOU1N0cmluZyAqKW5hbWVdOwotICAgIHJldHVybiBbbmFtZXMgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGF0YWJhc2VOYW1lcyhbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoTlNEaWN0aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFiYXNlOihOU1N0cmluZyAqKWRh
dGFiYXNlSWRlbnRpZmllciB3aXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVj
dGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tCmluZGV4IDg5NWM0YjJkNDlkYzFjOGZiMzA4YmIzODAwYjBiOTE5NDY1
NWJmZDMuLjA4ZDY0YTI5MjU5ZTRlYzIxNjI3ZDI5ZGY0NzRmYTdhNjE3NzkxNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5l
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwubW0KQEAgLTIyLDExICsyMiwxNCBAQAogICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCisKICNpbXBvcnQgIkNvcnJlY3Rpb25Q
YW5lbC5oIgogCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0
b3JUeXBlIGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJu
YXRpdmVUZXh0VHlwZSkKQEAgLTY5LDE1ICs3MiwxMSBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6
c2hvdyhXZWJWaWV3KiB2aWV3LCBBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0
UgogICAgIG1fdmlldyA9IHZpZXc7CiAgICAgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBpbmRp
Y2F0b3JUeXBlID0gY29ycmVjdGlvbkluZGljYXRvclR5cGUodHlwZSk7CiAgICAgCi0gICAgTlNN
dXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5ncyA9IDA7Ci0gICAgaWYgKCFhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5zaXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZl
U3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJu
YXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzW2ldXTsKLSAgICB9CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFsdGVybmF0aXZlU3Ry
aW5nczsKKyAgICBpZiAoIWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkK
KyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0gY3JlYXRlTlNBcnJheShhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncyk7CiAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5
U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0
ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpbdmlldyBfY29udmVydFJlY3RGcm9tUm9v
dFZpZXc6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nXSB2aWV3Om1fdmlldy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgIFtbTlNTcGVs
bENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlw
ZTppbmRpY2F0b3JUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5n
IGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MuZ2V0KCkgZm9yU3RyaW5nSW5S
ZWN0Olt2aWV3IF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzpib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmddIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFj
Y2VwdGVkU3RyaW5nKSB7CiAgICAgICAgIGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0
ZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05T
U3RyaW5nLCBpbmRpY2F0b3JUeXBlKTsKICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRl
eCA2NmYxYjQxMmMyZWM2NmIzMmU0NGFlOGFlMjFkMDkwYzc1NzJmYTFlLi42ZDY4ZGY3YzcyN2U3
MTFhZTZmMjY4NTNkZGRlOTJiMzVlNGQ4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC00NjAs
OCArNDYwLDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXYKICAgICBOU1N0cmluZyAqbWVzc2Fn
ZVNvdXJjZSA9IHN0cmluZ0Zvck1lc3NhZ2VTb3VyY2Uoc291cmNlKTsKICAgICBOU0RpY3Rpb25h
cnkgKmRpY3Rpb25hcnkgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5k
S2V5czoKICAgICAgICAgKE5TU3RyaW5nICopbWVzc2FnZSwgQCJtZXNzYWdlIiwKLSAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpsaW5lTnVtYmVyXSwgQCJsaW5lTnVtYmVy
IiwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpjb2x1bW5OdW1iZXJd
LCBAImNvbHVtbk51bWJlciIsCisgICAgICAgIEAobGluZU51bWJlciksIEAibGluZU51bWJlciIs
CisgICAgICAgIEAoY29sdW1uTnVtYmVyKSwgQCJjb2x1bW5OdW1iZXIiLAogICAgICAgICAoTlNT
dHJpbmcgKilzb3VyY2VVUkwsIEAic291cmNlVVJMIiwKICAgICAgICAgbWVzc2FnZVNvdXJjZSwg
QCJNZXNzYWdlU291cmNlIiwKICAgICAgICAgc3RyaW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwg
QCJNZXNzYWdlTGV2ZWwiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDlhZDQ2YzYwNDcwMTJlYjNl
NDIzODA0ZDQwNzIwNzAyNTdkYzVlNDYuLjhhNzUzYzU5MDE3MjJhY2FjYjRjMzA1MGEzMWUxYmY3
MDhjYjU0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTgzLDYgKzgzLDcgQEAKICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NTcs
NyArNDU4LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKCkKICAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBOU0V4Y2x1ZGVk
RWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZSA9IEAiRXhjbHVkZWRFbGVtZW50cyI7CiAjZW5kaWYK
IAotICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3Q6ZXhjbHVkZWRFbGVtZW50cyBmb3JLZXk6TlNFeGNsdWRlZEVsZW1lbnRzRG9j
dW1lbnRBdHRyaWJ1dGVdOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5TRXhj
bHVkZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzIH07CiAKICAg
ICBbZXhjbHVkZWRFbGVtZW50cyByZWxlYXNlXTsKIApAQCAtMTA3OSwxNSArMTA4MCw5IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4CiAgICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5nOmNvbnRl
eHQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNUZXh0Q2hl
Y2tpbmdUeXBlT3J0aG9ncmFwaHkgb3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29y
ZENvdW50OjBdOwogICAgICAgICBsYW5ndWFnZSA9IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJh
bmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRleHQubGVuZ3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0
aG9ncmFwaHk6b3J0aG9ncmFwaHldOwogICAgIH0KLSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkg
PSBbY2hlY2tlciBndWVzc2VzRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3Ro
KCkpIGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRh
ZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFtzdHJp
bmdzQXJyYXkgY291bnRdOwotCi0gICAgaWYgKGNvdW50ID4gMCkgewotICAgICAgICBOU0VudW1l
cmF0b3IgKmVudW1lcmF0b3IgPSBbc3RyaW5nc0FycmF5IG9iamVjdEVudW1lcmF0b3JdOwotICAg
ICAgICBOU1N0cmluZyAqc3RyaW5nOwotICAgICAgICB3aGlsZSAoKHN0cmluZyA9IFtlbnVtZXJh
dG9yIG5leHRPYmplY3RdKSAhPSBuaWwpCi0gICAgICAgICAgICBndWVzc2VzLmFwcGVuZChzdHJp
bmcpOwotICAgIH0KKyAgICBOU0FycmF5ICpzdHJpbmdzQXJyYXkgPSBbY2hlY2tlciBndWVzc2Vz
Rm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQg
bGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1
bWVudFRhZygpXTsKKyAgICBpZiAoc3RyaW5nc0FycmF5LmNvdW50KQorICAgICAgICBndWVzc2Vz
ID0gbWFrZVZlY3RvcjxTdHJpbmc+KHN0cmluZ3NBcnJheSk7CiB9CiAKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjA1YzNm
OWY0ZTRkNDVlNmRlODYxZDJlNWUyYWUxN2RlODkwNjFlNS4uYjZhMDI2Mzc5Y2UzZTQ5MDBhYmIy
OTk1YmZmZThkZWY5MDVlZTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEz
MSw2ICsxMzEsNyBAQAogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVm
Lmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCkBAIC0xNTcyLDggKzE1NzMsOCBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1l
TG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
YwogICAgIE5TVVJMICpvcmlnaW5hbFVSTCA9IGFjdGlvbi51cmwoKTsKIAogICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKnJlc3VsdCA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19j
YXN0PGludD4oYWN0aW9uLnR5cGUoKSldLCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKLSAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bW9kaWZpZXJGbGFnc10sIFdlYkFjdGlvbk1v
ZGlmaWVyRmxhZ3NLZXksCisgICAgICAgIEAoc3RhdGljX2Nhc3Q8aW50PihhY3Rpb24udHlwZSgp
KSksIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5LAorICAgICAgICBAKG1vZGlmaWVyRmxhZ3Mp
LCBXZWJBY3Rpb25Nb2RpZmllckZsYWdzS2V5LAogICAgICAgICBvcmlnaW5hbFVSTCwgV2ViQWN0
aW9uT3JpZ2luYWxVUkxLZXksCiAgICAgICAgIG5pbF07CiAKQEAgLTE1ODUsOSArMTU4Niw5IEBA
IE5TRGljdGlvbmFyeSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29u
c3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjCiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCiAg
ICAgICAgIGlmIChtb3VzZUV2ZW50RGF0YS0+aXNUcnVzdGVkKQotICAgICAgICAgICAgW3Jlc3Vs
dCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bW91c2VFdmVudERhdGEtPmJ1dHRv
bl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CisgICAgICAgICAgICBbcmVzdWx0IHNldE9i
amVjdDpAKG1vdXNlRXZlbnREYXRhLT5idXR0b24pIGZvcktleTpXZWJBY3Rpb25CdXR0b25LZXld
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpXZWJDb3JlOjpOb0J1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktl
eV07CisgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKFdlYkNvcmU6Ok5vQnV0dG9uKSBm
b3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5XTsKICAgICB9CiAKICAgICBpZiAoZm9ybVN0YXRlKQpA
QCAtMTY5NCwxNSArMTY5NSw2IEBAIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVyCiAgICAgcmV0dXJu
IFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlOjpOb25lOwogfQogCi1zdGF0aWMgTlNNdXRhYmxl
QXJyYXkqIGtpdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmVjdG9yKQotewotICAgIHVuc2lnbmVk
IGxlbiA9IHZlY3Rvci5zaXplKCk7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Omxlbl07Ci0gICAgZm9yICh1bnNpZ25lZCB4ID0g
MDsgeCA8IGxlbjsgeCsrKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnZlY3Rvclt4XV07Ci0g
ICAgcmV0dXJuIGFycmF5OwotfQotCiBzdGF0aWMgU3RyaW5nIHBhcmFtZXRlclZhbHVlKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBwYXJhbU5hbWVz
LnNpemUoKTsKQEAgLTE3MjAsMzcgKzE3MTIsMzkgQEAgc3RhdGljIE5TVmlldyAqcGx1Z2luVmll
dyhXZWJGcmFtZSAqZnJhbWUsIFdlYlBsdWdpblBhY2thZ2UgKnBsdWdpblBhY2thZ2UsCiB7CiAg
ICAgV2ViSFRNTFZpZXcgKmRvY1ZpZXcgPSAoV2ViSFRNTFZpZXcgKilbW2ZyYW1lIGZyYW1lVmll
d10gZG9jdW1lbnRWaWV3XTsKICAgICBBU1NFUlQoW2RvY1ZpZXcgaXNLaW5kT2ZDbGFzczpbV2Vi
SFRNTFZpZXcgY2xhc3NdXSk7Ci0gICAgICAgIAorCiAgICAgV2ViUGx1Z2luQ29udHJvbGxlciAq
cGx1Z2luQ29udHJvbGxlciA9IFtkb2NWaWV3IF9wbHVnaW5Db250cm9sbGVyXTsKLSAgICAKKwog
ICAgIC8vIFN0b3JlIGF0dHJpYnV0ZXMgaW4gYSBkaWN0aW9uYXJ5IHNvIHRoZXkgY2FuIGJlIHBh
c3NlZCB0byBXZWJQbHVnaW5zLgogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMg
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1dGVW
YWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVOYW1lc107Ci0gICAgCisKICAgICBbcGx1Z2luUGFja2Fn
ZSBsb2FkXTsKICAgICBDbGFzcyB2aWV3RmFjdG9yeSA9IFtwbHVnaW5QYWNrYWdlIHZpZXdGYWN0
b3J5XTsKICAgICAKICAgICBOU1ZpZXcgKnZpZXcgPSBuaWw7CiAgICAgTlNEaWN0aW9uYXJ5ICph
cmd1bWVudHMgPSBuaWw7Ci0gICAgCi0gICAgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHBsdWdJblZpZXdXaXRoQXJndW1lbnRzOildKSB7Ci0gICAgICAgIGFy
Z3VtZW50cyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAg
ICAgICAgICAgIGJhc2VVUkwsIFdlYlBsdWdJbkJhc2VVUkxLZXksCi0gICAgICAgICAgICBhdHRy
aWJ1dGVzLCBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5LAotICAgICAgICAgICAgcGx1Z2luQ29udHJv
bGxlciwgV2ViUGx1Z0luQ29udGFpbmVyS2V5LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6bG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2Rl
RW1iZWRdLCBXZWJQbHVnSW5Nb2RlS2V5LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOiFsb2FkTWFudWFsbHldLCBXZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5
LAotICAgICAgICAgICAgZWxlbWVudCwgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCi0g
ICAgICAgICAgICBuaWxdOwotICAgICAgICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVAIiwg
YXJndW1lbnRzKTsKKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9y
IikKLSAgICB9IGVsc2UgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHBsdWdpblZpZXdXaXRoQXJndW1lbnRzOildKSB7CisgICAgYXV0byBvbGRTZWxlY3RvciA9
IEBzZWxlY3RvcihwbHVnaW5WaWV3V2l0aEFyZ3VtZW50czopOwogSUdOT1JFX1dBUk5JTkdTX0VO
RAotICAgICAgICBhcmd1bWVudHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
c0FuZEtleXM6Ci0gICAgICAgICAgICBiYXNlVVJMLCBXZWJQbHVnaW5CYXNlVVJMS2V5LAotICAg
ICAgICAgICAgYXR0cmlidXRlcywgV2ViUGx1Z2luQXR0cmlidXRlc0tleSwKLSAgICAgICAgICAg
IHBsdWdpbkNvbnRyb2xsZXIsIFdlYlBsdWdpbkNvbnRhaW5lcktleSwKLSAgICAgICAgICAgIGVs
ZW1lbnQsIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5LAotICAgICAgICAgICAgbmlsXTsK
KworICAgIGlmIChbdmlld0ZhY3RvcnkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVn
SW5WaWV3V2l0aEFyZ3VtZW50czopXSkgeworICAgICAgICBhcmd1bWVudHMgPSBAeworICAgICAg
ICAgICAgV2ViUGx1Z0luQmFzZVVSTEtleTogYmFzZVVSTCwKKyAgICAgICAgICAgIFdlYlBsdWdJ
bkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0ZXMsCisgICAgICAgICAgICBXZWJQbHVnSW5Db250YWlu
ZXJLZXk6IHBsdWdpbkNvbnRyb2xsZXIsCisgICAgICAgICAgICBXZWJQbHVnSW5Nb2RlS2V5OiBA
KGxvYWRNYW51YWxseSA/IFdlYlBsdWdJbk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkKSwK
KyAgICAgICAgICAgIFdlYlBsdWdJblNob3VsZExvYWRNYWluUmVzb3VyY2VLZXk6IFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDohbG9hZE1hbnVhbGx5XSwKKyAgICAgICAgICAgIFdlYlBsdWdJbkNv
bnRhaW5pbmdFbGVtZW50S2V5OiBlbGVtZW50LAorICAgICAgICB9OworICAgICAgICBMT0coUGx1
Z2lucywgImFyZ3VtZW50czpcbiVAIiwgYXJndW1lbnRzKTsKKyAgICB9IGVsc2UgaWYgKFt2aWV3
RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6b2xkU2VsZWN0b3JdKSB7CisgICAgICAgIGFyZ3Vt
ZW50cyA9IEB7CisgICAgICAgICAgICBXZWJQbHVnaW5CYXNlVVJMS2V5OiBiYXNlVVJMLAorICAg
ICAgICAgICAgV2ViUGx1Z2luQXR0cmlidXRlc0tleTogYXR0cmlidXRlcywKKyAgICAgICAgICAg
IFdlYlBsdWdpbkNvbnRhaW5lcktleTogcGx1Z2luQ29udHJvbGxlciwKKyAgICAgICAgICAgIFdl
YlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5OiBlbGVtZW50LAorICAgICAgICB9OwogICAgICAg
ICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVAIiwgYXJndW1lbnRzKTsKICAgICB9CiAKQEAg
LTE5MTksMTUgKzE5MTMsMTUgQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBhdXRvKiBk
b2N1bWVudCA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmRvY3VtZW50KCk7CiAgICAgTlNVUkwg
KmJhc2VVUkwgPSBkb2N1bWVudC0+YmFzZVVSTCgpOwogICAgIE5TVVJMICpwbHVnaW5VUkwgPSB1
cmw7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmF0dHJpYnV0ZUtleXMgPSBraXQocGFyYW1OYW1lcyk7
CisgICAgYXV0byBhdHRyaWJ1dGVLZXlzID0gY3JlYXRlTlNBcnJheShwYXJhbU5hbWVzKTsKIAot
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBTRUwgc2Vs
ZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopOwogICAg
IGlmIChbW3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkg
ewotICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6a2l0KHBhcmFtVmFsdWVzKSBmb3JLZXlz
OmF0dHJpYnV0ZUtleXNdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAeyBh
dHRyaWJ1dGVLZXlzLmdldCgpOiBjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKSB9Owog
ICAgICAgICBOU0RpY3Rpb25hcnkgKmFyZ3VtZW50cyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICAgICAgYXR0cmlidXRlcywgV2ViUGx1Z0lu
QXR0cmlidXRlc0tleSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxvYWRN
YW51YWxseSA/IFdlYlBsdWdJbk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkXSwgV2ViUGx1
Z0luTW9kZUtleSwKKyAgICAgICAgICAgIEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1
bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWQpLCBXZWJQbHVnSW5Nb2RlS2V5LAogICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLCBXZWJQbHVnSW5TaG91bGRM
b2FkTWFpblJlc291cmNlS2V5LAogICAgICAgICAgICAga2l0KCZlbGVtZW50KSwgV2ViUGx1Z0lu
Q29udGFpbmluZ0VsZW1lbnRLZXksCiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IHBhc3NpbmcgYmFzZSBVUkwsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1MjE1Pi4KQEAgLTE5MzYsMTEgKzE5MzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJ
bnRTaXoKIAogICAgICAgICBOU1ZpZXcgKnZpZXcgPSBDYWxsVUlEZWxlZ2F0ZSh3ZWJWaWV3LCBz
ZWxlY3RvciwgYXJndW1lbnRzKTsKIAotICAgICAgICBbYXR0cmlidXRlcyByZWxlYXNlXTsKICAg
ICAgICAgW2FyZ3VtZW50cyByZWxlYXNlXTsKIAogICAgICAgICBpZiAodmlldykKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luV2lkZ2V0KHZpZXcpKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdpbldpZGdldCh2aWV3KSk7CiAgICAgfQogI2VuZGlm
CiAKQEAgLTE5NTMsNyArMTk0Niw3IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAg
IE1JTUVUeXBlID0gbWltZVR5cGU7CiAgICAgICAgIHBsdWdpblBhY2thZ2UgPSBbd2ViVmlldyBf
cGx1Z2luRm9yTUlNRVR5cGU6bWltZVR5cGVdOwogICAgIH0KLSAgICAKKwogICAgIE5TU3RyaW5n
ICpleHRlbnNpb24gPSBbW3BsdWdpblVSTCBwYXRoXSBwYXRoRXh0ZW5zaW9uXTsKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkBAIC0xOTc5LDcgKzE5NzIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6
OkludFNpegogICAgICAgICAgICAgICAgIGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckVtYmVkZGVk
T2JqZWN0PigqZWxlbWVudC5yZW5kZXJlcigpKS5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
bihXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6SW5zZWN1cmVQbHVnaW5WZXJzaW9uKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRP
ZkNsYXNzOltXZWJQbHVnaW5QYWNrYWdlIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgdmlldyA9
IHBsdWdpblZpZXcobV93ZWJGcmFtZS5nZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5Q
YWNrYWdlLCBhdHRyaWJ1dGVLZXlzLCBraXQocGFyYW1WYWx1ZXMpLCBiYXNlVVJMLCBraXQoJmVs
ZW1lbnQpLCBsb2FkTWFudWFsbHkpOworICAgICAgICAgICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3
KG1fd2ViRnJhbWUuZ2V0KCksIChXZWJQbHVnaW5QYWNrYWdlICopcGx1Z2luUGFja2FnZSwgYXR0
cmlidXRlS2V5cy5nZXQoKSwgY3JlYXRlTlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCksIGJhc2VV
UkwsIGtpdCgmZWxlbWVudCksIGxvYWRNYW51YWxseSk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgICAgICAgICBlbHNlIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNs
YXNzOltXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgY2xhc3NdXSkgewogICAgICAgICAgICAgICAg
IFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcgPSBbW1tORVRTQ0FQRV9QTFVH
SU5fVklFVyBhbGxvY10KQEAgLTE5ODgsOCArMTk4MSw4IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6CiAgICAgICAgICAgICAgICAgICAgIFVSTDpwbHVnaW5VUkwKICAgICAgICAgICAgICAgICAg
ICAgYmFzZVVSTDpiYXNlVVJMCiAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOk1JTUVUeXBl
Ci0gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUtleXM6YXR0cmlidXRlS2V5cwotICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6a2l0KHBhcmFtVmFsdWVzKQorICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmF0dHJpYnV0ZUtleXMuZ2V0KCkKKyAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgp
CiAgICAgICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTpsb2FkTWFudWFsbHkKICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudDomZWxlbWVudF0gYXV0b3JlbGVhc2VdOwogCkBAIC0yMDgzLDgg
KzIwNzYsOCBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDbwogICAgICAgICAgICAgICAgICAgICBV
Ukw6bmlsCiAgICAgICAgICAgICAgICAgICAgIGJhc2VVUkw6YmFzZVVSTAogICAgICAgICAgICAg
ICAgICAgICBNSU1FVHlwZTpNSU1FVHlwZQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVL
ZXlzOmtpdChwYXJhbU5hbWVzKQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6
a2l0KHBhcmFtVmFsdWVzKQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmNyZWF0
ZU5TQXJyYXkocGFyYW1OYW1lcykuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
VmFsdWVzOmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgpCiAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYW51YWxseTpOTwogICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiZlbGVtZW50
XSBhdXRvcmVsZWFzZV07CiAgICAgICAgICAgICAgICAgaWYgKHZpZXcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tCmluZGV4IDU1ZmIyYmRmYWQxYTVmNzc0YzgyMTIyM2Nh
Nzg2MjgxOWZjMTRkZjAuLmFhYTRhZmI1ZmNjNmFlYzhjZjRiM2IxZjIxYzgzMjEwYzI3ZDQzMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvSWNvbi5oPgpAQCAtNjQsMTEgKzY1LDcgQEAg
LSAodm9pZCljaG9vc2VGaWxlbmFtZXM6KE5TQXJyYXkgKilmaWxlbmFtZXMKICAgICBBU1NFUlQo
X2Nob29zZXIpOwogICAgIGlmICghX2Nob29zZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW2ZpbGVuYW1lcyBjb3VudF07Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFt
ZXMoY291bnQpOwotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0g
ICAgICAgIG5hbWVzW2ldID0gW2ZpbGVuYW1lcyBvYmplY3RBdEluZGV4OmldOwotICAgIF9jaG9v
c2VyLT5jaG9vc2VGaWxlcyhuYW1lcyk7CisgICAgX2Nob29zZXItPmNob29zZUZpbGVzKG1ha2VW
ZWN0b3I8U3RyaW5nPihmaWxlbmFtZXMpKTsKICAgICBfY2hvb3NlciA9IG51bGxwdHI7CiB9CiAK
QEAgLTc2LDcgKzczLDcgQEAgLSAodm9pZCljaG9vc2VGaWxlbmFtZXM6KE5TQXJyYXkgKilmaWxl
bmFtZXMKIAogLSAodm9pZCljaG9vc2VGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBkaXNw
bGF5U3RyaW5nOihOU1N0cmluZyAqKWRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOihDR0ltYWdlUmVm
KWltYWdlUmVmCiB7Ci0gICAgW3NlbGYgY2hvb3NlRmlsZW5hbWVzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpmaWxlbmFtZV0gZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTpp
bWFnZVJlZl07CisgICAgW3NlbGYgY2hvb3NlRmlsZW5hbWVzOkBbZmlsZW5hbWVdIGRpc3BsYXlT
dHJpbmc6ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6aW1hZ2VSZWZdOwogfQogCiAtICh2b2lkKWNo
b29zZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1lcyBkaXNwbGF5U3RyaW5nOihOU1N0cmlu
ZyAqKWRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOihDR0ltYWdlUmVmKWltYWdlUmVmCkBAIC04NSwx
MSArODIsNyBAQCAtICh2b2lkKWNob29zZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1lcyBk
aXNwbGF5U3RyaW5nOihOU1N0cmluZyAqKWRpc3BsYXlTdAogICAgIGlmICghX2Nob29zZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIG5hbWVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoW2ZpbGVuYW1lcyBjb3VudF0pOwotICAgIGZvciAoTlNTdHJp
bmcgKmZpbGVuYW1lIGluIGZpbGVuYW1lcykKLSAgICAgICAgbmFtZXMudW5jaGVja2VkQXBwZW5k
KGZpbGVuYW1lKTsKLSAgICBfY2hvb3Nlci0+Y2hvb3NlTWVkaWFGaWxlcyhuYW1lcywgZGlzcGxh
eVN0cmluZywgSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGltYWdlUmVmKS5nZXQoKSk7CisgICAg
X2Nob29zZXItPmNob29zZU1lZGlhRmlsZXMobWFrZVZlY3RvcjxTdHJpbmc+KGZpbGVuYW1lcyks
IGRpc3BsYXlTdHJpbmcsIEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShpbWFnZVJlZikuZ2V0KCkp
OwogICAgIF9jaG9vc2VyID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlci5tbQppbmRleCA5MzQzNzU3YWE1ZGNjMGNiMjFmODExMDIxZjQ0NGMy
MjNkMGU1MGU3Li45M2JlZDY5YTE0NzM4ZjgzNjFiMWY4Njc2MDNmZjgxMWRiMDU5ZWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQpAQCAtNDAsNyArNDAs
NyBAQCBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6V2ViU2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXIoV2ViVmlldyAqd2ViVmlldykKIHsKIH0KIAotdm9pZCBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlcjo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1i
ZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit2b2lkIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qdGVsZXBob25l
TnVtYmVycyovLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgUGFnZSog
cGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CiAgICAgaWYgKCFwYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYmQ5YTY3ODFiYmVhMDYxMWUyZTRk
NzA0OTYwODZjZWZkNThiMTE0Yi4uMmFiYmQ5MjRiN2VhMDBkYTMwMzk4MmUxMGQ0NjBjNTFhYmM4
MjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC0xMDgsNiArMTA4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYk1haWxEZWxlZ2F0ZS5oIgpAQCAtMTA5MSw2ICsxMDky
LDcgQEAgLSAoV2ViRnJhbWVMb2FkVHlwZSlfbG9hZFR5cGUKIH0KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisKIC0gKEJPT0wpbmVlZHNMYXlvdXQKIHsKICAgICAvLyBOZWVkZWQgZm9yIE1h
aWwgPHJkYXI6Ly9wcm9ibGVtLzYyMjgwMzg+CkBAIC0xMTA3LDM5ICsxMTA5LDI2IEBAIC0gKEJP
T0wpX2xvYWRzU3luY2hyb25vdXNseQogICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5s
b2FkZXIoKS5sb2Fkc1N5bmNocm9ub3VzbHkoKTsKIH0KIAotLy8gRklYTUU6IHNlbGVjdGlvbgot
CiAtIChOU0FycmF5ICopX3JlY3RzRm9yUmFuZ2U6KERPTVJhbmdlICopZG9tUmFuZ2UKIHsKICAg
ICBhdXRvKiByYW5nZSA9IGNvcmUoZG9tUmFuZ2UpOwotICAgIAorICAgIGlmICghcmFuZ2UpCisg
ICAgICAgIHJldHVybiBAW107CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGludFJlY3Rz
OwogICAgIHJhbmdlLT5hYnNvbHV0ZVRleHRSZWN0cyhpbnRSZWN0cywgTk8pOwotICAgIHVuc2ln
bmVkIHNpemUgPSBpbnRSZWN0cy5zaXplKCk7Ci0gICAgCi0gICAgTlNNdXRhYmxlQXJyYXkgKnJl
Y3RBcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIFtyZWN0QXJyYXkg
YWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6KENHUmVjdCApaW50UmVjdHNbaV1dXTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlY3RBcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShpbnRSZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilfc2VsZWN0
aW9uUmFuZ2VGb3JGaXJzdFBvaW50OihDR1BvaW50KWZpcnN0IHNlY29uZFBvaW50OihDR1BvaW50
KXNlY29uZAogewotICAgIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBmaXJzdFBvcyA9IFtzZWxm
IF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpmaXJzdF07Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBv
c2l0aW9uIHNlY29uZFBvcyA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpzZWNvbmRd
OwotICAgIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKGZpcnN0UG9zLCBzZWNv
bmRQb3MpOwotICAgIERPTVJhbmdlICpyYW5nZSA9IGtpdChzZWxlY3Rpb24udG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSk7Ci0gICAgcmV0dXJuIHJhbmdlOyAgICAKKyAgICBhdXRvIGZpcnN0UG9z
aXRpb24gPSBbc2VsZiBfdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6Zmlyc3RdOworICAgIGF1dG8g
c2Vjb25kUG9zaXRpb24gPSBbc2VsZiBfdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6c2Vjb25kXTsK
KyAgICByZXR1cm4ga2l0KFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbiwg
c2Vjb25kUG9zaXRpb24pLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAtIChET01S
YW5nZSAqKV9zZWxlY3Rpb25SYW5nZUZvclBvaW50OihDR1BvaW50KXBvaW50CiB7Ci0gICAgV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uIHBvcyA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dDpwb2ludF07Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ocG9zKTsK
LSAgICBET01SYW5nZSAqcmFuZ2UgPSBraXQoc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOwotICAgIHJldHVybiByYW5nZTsKKyAgICByZXR1cm4ga2l0KFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24oW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBvaW50OnBvaW50XSkudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpAQCAtMjI3MSwyMSArMjI2MCwyMSBAQCAtIChOU0FycmF5ICopX2NvbXB1dGVQYWdlUmVjdHNX
aXRoUHJpbnRTY2FsZUZhY3RvcjooZmxvYXQpcHJpbnRTY2FsZUZhY3RvciBwYWdlUwogewogICAg
IGlmIChwcmludFNjYWxlRmFjdG9yIDw9IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJwcmludFNj
YWxlRmFjdG9yIGhhcyBiYWQgdmFsdWUgJS4yZiIsIHByaW50U2NhbGVGYWN0b3IpOwotICAgICAg
ICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwogICAgIH0KIAog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJl
dHVybiBAW107CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAg
IHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgaWYgKCFf
cHJpdmF0ZS0+Y29yZUZyYW1lLT52aWV3KCktPmRvY3VtZW50VmlldygpKQotICAgICAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwogCiAgICAgYXV0byogcm9v
dCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKICAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVy
biBAW107CiAKICAgICBjb25zdCBhdXRvJiBkb2N1bWVudFJlY3QgPSByb290LT5kb2N1bWVudFJl
Y3QoKTsKICAgICBmbG9hdCBwcmludFdpZHRoID0gcm9vdC0+c3R5bGUoKS5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvY3VtZW50UmVjdC53aWR0aCgpKSAv
IHByaW50U2NhbGVGYWN0b3IgOiBwYWdlU2l6ZS53aWR0aDsKQEAgLTIyOTMsMTMgKzIyODIsNyBA
QCAtIChOU0FycmF5ICopX2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjooZmxv
YXQpcHJpbnRTY2FsZUZhY3RvciBwYWdlUwogCiAgICAgV2ViQ29yZTo6UHJpbnRDb250ZXh0IHBy
aW50Q29udGV4dChfcHJpdmF0ZS0+Y29yZUZyYW1lKTsKICAgICBwcmludENvbnRleHQuY29tcHV0
ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUocHJpbnRXaWR0aCwgcHJp
bnRIZWlnaHQpLCB0cnVlKTsKLSAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBh
Z2VSZWN0cyA9IHByaW50Q29udGV4dC5wYWdlUmVjdHMoKTsKLQotICAgIHNpemVfdCBzaXplID0g
cGFnZVJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSAqcGFnZXMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIFtwYWdlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRo
UmVjdDpOU1JlY3QocGFnZVJlY3RzW2ldKV1dOwotICAgIHJldHVybiBwYWdlczsKKyAgICByZXR1
cm4gY3JlYXRlTlNBcnJheShwcmludENvbnRleHQucGFnZVJlY3RzKCkpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjYyMyw3ICsyNjA2LDcgQEAgLSAo
TlNBcnJheSAqKWNoaWxkRnJhbWVzCiB7CiAgICAgYXV0byBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+
Y29yZUZyYW1lOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXldOworICAgICAgICByZXR1cm4gQFtdOwogICAgIE5TTXV0YWJsZUFycmF5ICpjaGlsZHJl
biA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlRnJhbWUtPnRyZWUoKS5j
aGlsZENvdW50KCldOwogICAgIGZvciAoV2ViQ29yZTo6RnJhbWUqIGNoaWxkID0gY29yZUZyYW1l
LT50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRT
aWJsaW5nKCkpCiAgICAgICAgIFtjaGlsZHJlbiBhZGRPYmplY3Q6a2l0KGNoaWxkKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1YmEy
ZTc4MDQ2ZjQ2ODA3ZDE4ZWI0MTg3NzNhZThiMjE0MjFmZmUyLi5jOTE1NWIxNmNkZjA3ZWIxYzlh
ZDBjNGFiYTBlOTI4MzQ3NDNjNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTE0OSw2ICsxNDksNyBAQAogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExB
VEZPUk0oTUFDKQogI2ltcG9ydCAiV2ViTlNFdmVudEV4dHJhcy5oIgpAQCAtMTk5NSw3ICsxOTk2
LDcgQEAgKyAoTlNBcnJheSAqKV9pbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVzCiArIChOU0FycmF5
ICopX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBlcwogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cHV0IGRhdGEgZm9yIE5TSFRNTFBib2FyZFR5cGUgb24gdGhlIHBhc3RlYm9hcmQgYnV0IE1pY3Jv
c29mdCBFeGNlbCBkb2Vzbid0IGxpa2Ugb3VyIGZvcm1hdCBvZiBIVE1MICgzNjQwNDIzKS4KLSAg
ICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwg
V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5p
bF07CisgICAgcmV0dXJuIEBbV2ViQXJjaGl2ZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVJU
RkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKIH0KIAogQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KQEAgLTQ0MDQsNyArNDQwNSw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChkcmFnZ2luZ0VsZW1lbnRVUkwp
CiAgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gX3dlYmtpdF9zZXRNZXRh
ZGF0YVVSTDpbZHJhZ2dpbmdFbGVtZW50VVJMIGFic29sdXRlU3RyaW5nXSByZWZlcnJlcjpuaWwg
YXRQYXRoOnBhdGhdOwogICAgIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKKyAgICByZXR1cm4gQFtbcGF0aCBsYXN0UGF0aENv
bXBvbmVudF1dOwogfQogCiAvLyBNQVJLOiBOU0RyYWdnaW5nU291cmNlCkBAIC00ODgxLDcgKzQ4
ODIsNyBAQCAtIChCT09MKWtub3dzUGFnZVJhbmdlOihOU1JhbmdlUG9pbnRlcilyYW5nZQogICAg
IC8vIGEgYmxhbmsgcGFnZSAod2l0aCBjb3JyZWN0LWxvb2tpbmcgaGVhZGVyIGFuZCBmb290ZXIg
aWYgdGhhdCBvcHRpb24gaXMgb24pLCB3aGljaCBtYXRjaGVzCiAgICAgLy8gdGhlIGJlaGF2aW9y
IG9mIElFIGFuZCBDYW1pbm8gYXQgbGVhc3QuCiAgICAgaWYgKFtuZXdQYWdlUmVjdHMgY291bnRd
ID09IDApCi0gICAgICAgIG5ld1BhZ2VSZWN0cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpb
TlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgMSwgMSldXTsKKyAgICAgICAg
bmV3UGFnZVJlY3RzID0gQFtbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoMCwgMCwg
MSwgMSldXTsKIAogICAgIF9wcml2YXRlLT5wYWdlUmVjdHMgPSBuZXdQYWdlUmVjdHM7CiAKQEAg
LTUwMTksNyArNTAyMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUNo
aWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICBpZCBhY2NUcmVlID0gW1tzZWxmIF9mcmFtZV0g
YWNjZXNzaWJpbGl0eVJvb3RdOwogICAgICAgICBpZiAoYWNjVHJlZSkKLSAgICAgICAgICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWNjVHJlZV07CisgICAgICAgICAgICByZXR1
cm4gQFthY2NUcmVlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgcmV0dXJuIFtz
dXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlTmFtZV07CkBAIC01Mjky
LDcgKzUyOTMsNyBAQCAtICh2b2lkKWNvcHlGb250OihpZClzZW5kZXIKICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBOU1Bhc3RlYm9hcmQgKmZvbnRQYXN0
ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6TlNGb250UGJvYXJkXTsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbZm9udFBhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpXZWJDb3JlOjpsZWdhY3lG
b250UGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAgICBbZm9udFBhc3RlYm9hcmQgZGVj
bGFyZVR5cGVzOkBbV2ViQ29yZTo6bGVnYWN5Rm9udFBhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5p
bF07CiAgICAgW2ZvbnRQYXN0ZWJvYXJkIHNldERhdGE6W3NlbGYgX3NlbGVjdGlvblN0YXJ0Rm9u
dEF0dHJpYnV0ZXNBc1JURl0gZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5
cGUoKV07CiB9CiAKQEAgLTYwMjMsNyArNjAyNCw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2
ZW50OihOYWtlZFB0cjxXZWJDb3JlOjpLZXlib2FyZEV2ZW50PilldmVudCBzYXZpbmdDb21tYW5k
CiAgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGNhbGxzIGltbWVkaWF0ZWx5LiBET00gZXZlbnRzIGxp
a2Uga2V5ZG93biBhcmUgdHdlYWtlZCB0byBoYXZlIGtleUNvZGUgb2YgMjI5LCBhbmQgY2FuY2Vs
aW5nIHRoZW0gaGFzIG5vIGVmZmVjdC4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlcmUg
aXMgbm8gcmVhbCBkaWZmZXJlbmNlIGJldHdlZW4gcGxhaW4gdGV4dCBpbnB1dCBhbmQgSU0gcHJv
Y2Vzc2luZyAtIGZvciBleGFtcGxlLCBBcHBLaXQgcXVlcmllcyBoYXNNYXJrZWRUZXh0CiAgICAg
ICAgIC8vIHdoZW4gdHlwaW5nIHdpdGggVS5TLiBrZXlib2FyZCwgYW5kIGluc2VydHMgbWFya2Vk
IHRleHQgZm9yIGRlYWQga2V5cy4KLSAgICAgICAgW3NlbGYgaW50ZXJwcmV0S2V5RXZlbnRzOltO
U0FycmF5IGFycmF5V2l0aE9iamVjdDptYWNFdmVudF1dOworICAgICAgICBbc2VsZiBpbnRlcnBy
ZXRLZXlFdmVudHM6QFttYWNFdmVudF1dOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFyZSB0
aGVyZSBjb21tYW5kcyB0aGF0IGNvdWxkIGp1c3QgY2F1c2UgdGV4dCBpbnNlcnRpb24gaWYgZXhl
Y3V0ZWQgdmlhIEVkaXRvcj8KICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2gg
aW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IHRoZXkgc2hvdWxkIGJlIHRyZWF0
ZWQsIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZQpAQCAtNjgzNCwxOCArNjgzNSwxMCBAQCAt
IChOU0FycmF5ICopc2VsZWN0aW9uVGV4dFJlY3RzCiAgICAgaWYgKCFbc2VsZiBfaGFzU2VsZWN0
aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IGxpc3Q7CisgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHM7CiAgICAgaWYg
KGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFt
ZS0+c2VsZWN0aW9uKCkuZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhsaXN0KTsKLQot
ICAgIHNpemVfdCBzaXplID0gbGlzdC5zaXplKCk7Ci0KLSAgICBOU011dGFibGVBcnJheSAqcmVz
dWx0ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0
OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6bGlzdFtpXV1dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5nZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0
YW5nbGVzKHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShyZWN0cykuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoTlNWaWV3ICopc2VsZWN0aW9uVmlldwpAQCAtNzEzMSwxNyArNzEyNCwx
MiBAQCAtIChOU0FycmF5ICopcmVjdHNGb3JUZXh0TWF0Y2hlcwogewogICAgIGF1dG8qIGNvcmVG
cmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAg
IHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgYXV0byog
ZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAg
ICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKIAotICAg
IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzID0gZG9jdW1lbnQtPm1hcmtlcnMoKS5y
ZW5kZXJlZFJlY3RzRm9yTWFya2VycyhXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNo
KTsKLSAgICB1bnNpZ25lZCBjb3VudCA9IHJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJh
eSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvdW50XTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAg
ICAgW3Jlc3VsdCBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0c1tpbmRleF1d
XTsgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShkb2N1
bWVudC0+bWFya2VycygpLnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50
TWFya2VyOjpUZXh0TWF0Y2gpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKV9maW5kU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2Vu
dGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQppbmRleCBlNGQwNjQyOWQ5ZWMzZDk2NzU2ZTVmYTJiNjVjMGU4ZWE2NzM4YjQ0
Li5lYmNhM2IwODRlNmI1ZjAxYTNiNWNmZGFmZTdjYTFhZWMyOTRkMzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24u
bW0KQEAgLTM5LDI1ICszOSwyNSBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0
UmVmLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVtZW50YXRpb24gV2ViUERGUmVwcmVz
ZW50YXRpb24KIAogKyAoTlNBcnJheSAqKXBvc3RTY3JpcHRNSU1FVHlwZXMKIHsKLSAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAgQCJh
cHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwKLSAgICAgICAgbmlsXTsKKyAgICBdOwogfQogCiArIChO
U0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7CiAgICAgcmV0dXJuIFtbW3NlbGYgY2xhc3Nd
IHBvc3RTY3JpcHRNSU1FVHlwZXNdIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OgotICAg
ICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgICAgICBAWwogICAgICAgICAgICAg
QCJ0ZXh0L3BkZiIsCiAgICAgICAgICAgICBAImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICAg
ICBuaWxdXTsKKyAgICAgICAgXQorICAgIF07CiB9CiAKICsgKENsYXNzKVBERkRvY3VtZW50Q2xh
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRl
eCBlYzdiZWZjOGU1YzE4NDVjZjc5M2UwZWFkYWI2ZDAzZGI3ZTNmNGFjLi43MTBjOTdiYjA0YWI0
Zjk0MjgwMDIzZDkxMWUyZjEwNGUwNzZlM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC01OTAsMTMgKzU5MCwxMCBAQCAtICh2b2lkKXZp
ZXdEaWRNb3ZlVG9Ib3N0V2luZG93CiAKIC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50
OihOU1BvaW50KXBvaW50CiB7Ci0gICAgV2ViRnJhbWUgKmZyYW1lID0gW2RhdGFTb3VyY2Ugd2Vi
RnJhbWVdOwotICAgIEFTU0VSVChmcmFtZSk7Ci0gICAgCi0gICAgcmV0dXJuIFtOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgZnJhbWUsIFdlYkVsZW1l
bnRGcmFtZUtleSwgCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpbc2VsZiBfcG9p
bnRJc0luU2VsZWN0aW9uOnBvaW50XV0sIFdlYkVsZW1lbnRJc1NlbGVjdGVkS2V5LAotICAgICAg
ICBuaWxdOworICAgIHJldHVybiBAeworICAgICAgICBXZWJFbGVtZW50RnJhbWVLZXk6IFtkYXRh
U291cmNlIHdlYkZyYW1lXSwKKyAgICAgICAgV2ViRWxlbWVudElzU2VsZWN0ZWRLZXk6IEAoW3Nl
bGYgX3BvaW50SXNJblNlbGVjdGlvbjpwb2ludF0pLAorICAgIH07CiB9CiAKIC0gKE5TRGljdGlv
bmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50IGFsbG93U2hhZG93Q29udGVudDoo
Qk9PTClhbGxvdwpAQCAtNzk1LDEwICs3OTIsMTAgQEAgLSAoaWQpdmlld1N0YXRlCiB7CiAgICAg
TlNNdXRhYmxlQXJyYXkgKnN0YXRlID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5
OjRdOwogICAgIFBERkRpc3BsYXlNb2RlIG1vZGUgPSBbUERGU3VidmlldyBkaXNwbGF5TW9kZV07
Ci0gICAgW3N0YXRlIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RlXV07Cisg
ICAgW3N0YXRlIGFkZE9iamVjdDpAKG1vZGUpXTsKICAgICBpZiAobW9kZSA9PSBrUERGRGlzcGxh
eVNpbmdsZVBhZ2UgfHwgbW9kZSA9PSBrUERGRGlzcGxheVR3b1VwKSB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBwYWdlSW5kZXggPSBbW1BERlN1YnZpZXcgZG9jdW1lbnRdIGluZGV4Rm9yUGFnZTpb
UERGU3VidmlldyBjdXJyZW50UGFnZV1dOwotICAgICAgICBbc3RhdGUgYWRkT2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cGFnZUluZGV4XV07CisgICAgICAgIFtzdGF0ZSBh
ZGRPYmplY3Q6QChwYWdlSW5kZXgpXTsKICAgICB9ICAvLyBlbHNlIGluIGNvbnRpbnVvdXMgbW9k
ZXMsIHNjcm9sbCBwb3NpdGlvbiBnZXRzIHVzIHRvIHRoZSByaWdodCBwYWdlCiAgICAgQk9PTCBh
dXRvU2NhbGVGbGFnID0gW1BERlN1YnZpZXcgYXV0b1NjYWxlc107CiAgICAgW3N0YXRlIGFkZE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YXV0b1NjYWxlRmxhZ11dOwpAQCAtODgyLDcg
Kzg3OSw3IEBAIC0gKE5TUmVjdClzZWxlY3Rpb25SZWN0CiAtIChOU0FycmF5ICopc2VsZWN0aW9u
VGV4dFJlY3RzCiB7CiAgICAgLy8gRklYTUU6IFdlJ2QgbmVlZCBuZXcgUERGS2l0IEFQSS9TUEkg
dG8gZ2V0IG11bHRpcGxlIHRleHQgcmVjdHMgZm9yIHNlbGVjdGlvbnMgdGhhdCBpbnRlcnNlY3Qg
bW9yZSB0aGFuIG9uZSBsaW5lCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpb
TlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIHNlbGVjdGlvblJlY3RdXV07CisgICAgcmV0dXJu
IEBbW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpbc2VsZiBzZWxlY3Rpb25SZWN0XV1dOwogfQogCiAt
IChOU1ZpZXcgKilzZWxlY3Rpb25WaWV3CkBAIC05MjYsNyArOTIzLDcgQEAgLSAoTlNSZWN0KXNl
bGVjdGlvbkltYWdlUmVjdAogCiAtIChOU0FycmF5ICopcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0
aW9uCiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5pbF07CisgICAgcmV0
dXJuIEBbV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldOwogfQogCiAtICh2b2lkKXdyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNB
cnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAt
MTEyNCwyMiArMTEyMSwyMyBAQCBzdGF0aWMgdm9pZCByZW1vdmVVc2VsZXNzTWVudUl0ZW1TZXBh
cmF0b3JzKE5TTXV0YWJsZUFycmF5ICptZW51SXRlbXMpCiAtIChOU011dGFibGVBcnJheSAqKV9t
ZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZlbnQ6KE5TRXZlbnQgKil0aGVFdmVudAogewogICAgIE5T
TXV0YWJsZUFycmF5ICpjb3BpZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAg
TlNEaWN0aW9uYXJ5ICphY3Rpb25zVG9UYWdzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6CisKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5kZWNsYXJlZC1z
ZWxlY3RvciIpCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERG
QWN0dWFsU2l6ZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6
ZTopKSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZab29t
SW5dLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbUluOikpLAotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERlpvb21PdXRdLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbU91dDopKSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6V2ViTWVudUl0ZW1QREZBdXRvU2l6ZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBz
ZWxlY3Rvcihfc2V0QXV0b1NpemU6KSksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OldlYk1lbnVJdGVtUERGU2luZ2xlUGFnZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rv
cihfc2V0U2luZ2xlUGFnZTopKSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2Vi
TWVudUl0ZW1QREZTaW5nbGVQYWdlU2Nyb2xsaW5nXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNl
bGVjdG9yKF9zZXRTaW5nbGVQYWdlU2Nyb2xsaW5nOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2VzXSwgTlNTdHJpbmdGcm9tU2VsZWN0
b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nXSwgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlU2Nyb2xsaW5nOikpLAotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERkNvbnRpbnVvdXNdLCBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3RvZ2dsZUNvbnRpbnVvdXM6KSksCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGTmV4dFBhZ2VdLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub05leHRQYWdlOikpLAotICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERlByZXZpb3VzUGFnZV0sIE5TU3RyaW5nRnJvbVNl
bGVjdG9yKEBzZWxlY3Rvcihnb1RvUHJldmlvdXNQYWdlOikpLAotSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIE5TRGljdGlvbmFyeSAqYWN0aW9uc1RvVGFncyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICBAKFdlYk1lbnVJdGVtUERGQWN0dWFs
U2l6ZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKSwK
KyAgICAgICAgQChXZWJNZW51SXRlbVBERlpvb21JbiksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBz
ZWxlY3Rvcih6b29tSW46KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZab29tT3V0KSwgTlNT
dHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21PdXQ6KSksCisgICAgICAgIEAoV2ViTWVu
dUl0ZW1QREZBdXRvU2l6ZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0
b1NpemU6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlKSwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlOikpLAorICAgICAgICBAKFdlYk1l
bnVJdGVtUERGU2luZ2xlUGFnZVNjcm9sbGluZyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxl
Y3Rvcihfc2V0U2luZ2xlUGFnZVNjcm9sbGluZzopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBE
RkZhY2luZ1BhZ2VzKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQ
YWdlOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcpLCBO
U1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSks
CisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZDb250aW51b3VzKSwgTlNTdHJpbmdGcm9tU2VsZWN0
b3IoQHNlbGVjdG9yKF90b2dnbGVDb250aW51b3VzOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVt
UERGTmV4dFBhZ2UpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub05leHRQYWdl
OikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGUHJldmlvdXNQYWdlKSwgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9QcmV2aW91c1BhZ2U6KSksCiAgICAgICAgIG5pbF07Ci0g
ICAgCitJR05PUkVfV0FSTklOR1NfRU5ECisKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0ZW1z
IG91dCwgc2luY2UgV2ViS2l0IGluc2VydHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQgd2Ug
bGVhdmUgb3V0IFBERktpdCdzICJMb29rIFVwIGluIERpY3Rpb25hcnkiCiAgICAgLy8gaXRlbSBo
ZXJlIGJlY2F1c2UgV2ViS2l0IGFscmVhZHkgaW5jbHVkZXMgYW4gaXRlbSB3aXRoIHRoZSBzYW1l
IHRpdGxlIGFuZCBwdXJwb3NlLiBXZSBtYXAgV2ViS2l0J3MgdG8gUERGS2l0J3MgCiAgICAgLy8g
Ikxvb2sgVXAgaW4gRGljdGlvbmFyeSIgdmlhIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYlBE
RlZpZXcgX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Ol0uCkBAIC0xMjY1LDIwICsxMjYzLDEz
IEBAIC0gKHZvaWQpX29wZW5XaXRoRmluZGVyOihpZClzZW5kZXIKICAgICBpZiAob3BhdGgpIHsK
ICAgICAgICAgaWYgKCF3cml0dGVuKSB7CiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBQREYgZmls
ZSB3aXRoIHRoZSBtaW5pbWFsIHBlcm1pc3Npb25zIChvbmx5IGFjY2Vzc2libGUgdG8gdGhlIGN1
cnJlbnQgdXNlciwgc2VlIDQxNDU3MTQpCi0gICAgICAgICAgICBOU051bWJlciAqcGVybWlzc2lv
bnMgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpTX0lSVVNSXTsKLSAgICAgICAgICAg
IE5TRGljdGlvbmFyeSAqZmlsZUF0dHJpYnV0ZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czpwZXJtaXNzaW9ucywgTlNGaWxlUG9zaXhQZXJtaXNzaW9ucywg
bmlsXTsKLSAgICAgICAgICAgIFtwZXJtaXNzaW9ucyByZWxlYXNlXTsKLQotICAgICAgICAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVGaWxlQXRQYXRoOm9wYXRoIGNv
bnRlbnRzOltkYXRhU291cmNlIGRhdGFdIGF0dHJpYnV0ZXM6ZmlsZUF0dHJpYnV0ZXNdOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBbZmlsZUF0dHJpYnV0ZXMgcmVsZWFzZV07CisgICAgICAg
ICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZUZpbGVBdFBhdGg6b3Bh
dGggY29udGVudHM6W2RhdGFTb3VyY2UgZGF0YV0gYXR0cmlidXRlczpAeyBOU0ZpbGVQb3NpeFBl
cm1pc3Npb25zOiBAKFNfSVJVU1IpIH1dOwogICAgICAgICAgICAgd3JpdHRlbiA9IFlFUzsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgaWYgKCFbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZp
bGU6b3BhdGhdKSB7Ci0gICAgICAgICAgICAvLyBOU1dvcmtzcGFjZSBjb3VsZG4ndCBvcGVuIGZp
bGUuICBEbyB3ZSBuZWVkIGFuIGFsZXJ0Ci0gICAgICAgICAgICAvLyBoZXJlPyAgV2UgaWdub3Jl
IHRoZSBlcnJvciBlbHNld2hlcmUuCisgICAgICAgICAgICAvLyBOU1dvcmtzcGFjZSBjb3VsZG4n
dCBvcGVuIGZpbGUuIERvIHdlIG5lZWQgYW4gYWxlcnQgaGVyZT8gV2UgaWdub3JlIHRoZSBlcnJv
ciBlbHNld2hlcmUuCiAgICAgICAgIH0KICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfQpAQCAtMTM0NSwxMiArMTMzNiw3IEBAIC0gKFBERlZpZXcgKilfUERG
U3VidmlldwogLSAoQk9PTClfcG9pbnRJc0luU2VsZWN0aW9uOihOU1BvaW50KXBvaW50CiB7CiAg
ICAgUERGUGFnZSAqcGFnZSA9IFtQREZTdWJ2aWV3IHBhZ2VGb3JQb2ludDpwb2ludCBuZWFyZXN0
Ok5PXTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICBOU1Jl
Y3Qgc2VsZWN0aW9uUmVjdCA9IFtQREZTdWJ2aWV3IGNvbnZlcnRSZWN0OltbUERGU3VidmlldyBj
dXJyZW50U2VsZWN0aW9uXSBib3VuZHNGb3JQYWdlOnBhZ2VdIGZyb21QYWdlOnBhZ2VdOwotICAg
IAotICAgIHJldHVybiBOU1BvaW50SW5SZWN0KHBvaW50LCBzZWxlY3Rpb25SZWN0KTsKKyAgICBy
ZXR1cm4gcGFnZSAmJiBOU1BvaW50SW5SZWN0KHBvaW50LCBbUERGU3VidmlldyBjb252ZXJ0UmVj
dDpbW1BERlN1YnZpZXcgY3VycmVudFNlbGVjdGlvbl0gYm91bmRzRm9yUGFnZTpwYWdlXSBmcm9t
UGFnZTpwYWdlXSk7CiB9CiAKIC0gKHZvaWQpX3NjYWxlT3JEaXNwbGF5TW9kZU9yUGFnZUNoYW5n
ZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAwMjc5Mzk0MzA4MDQ2Yjhh
MjgzYWI2YWEzNjA0ODI5YWIyOWZkMWI3Li4xODA5MjljNGQxZjY5N2Y3MDQxOThjM2Q5YzhjODUy
YmQ2ZGU2OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KQEAgLTQ2NSwxNyArNDY1LDE2IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQog
ICAgICAgICBAIjAiLCBXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXksCiAjZW5kaWYK
ICAgICAgICAgQCIwIiwgV2ViS2l0VXNlU2l0ZVNwZWNpZmljU3Bvb2ZpbmdQcmVmZXJlbmNlS2V5
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJLaXRFZGl0YWJsZUxpbmtEZWZh
dWx0QmVoYXZpb3JdLCBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXksCisg
ICAgICAgIEAoV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKSwgV2ViS2l0RWRpdGFi
bGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5LAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJUZXh0RGlyZWN0aW9uU3VibWVudUF1
dG9tYXRpY2FsbHlJbmNsdWRlZF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvclByZWZlcmVu
Y2VLZXksCisgICAgICAgIEAoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5j
bHVkZWQpLCBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5
LAogI2VuZGlmCiAgICAgICAgIEBZRVMsIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5
LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpjYWNoZU1vZGVsRm9yTWFpbkJ1bmRs
ZSgpXSwgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXksCisgICAgICAgIEAoY2FjaGVNb2Rl
bEZvck1haW5CdW5kbGUoKSksIFdlYktpdENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5LAogICAgICAg
ICBAWUVTLCBXZWJLaXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBATk8sIFdlYktpdERldmVsb3BlckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAotICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OjBdLCBXZWJLaXRKYXZhU2NyaXB0
UnVudGltZUZsYWdzUHJlZmVyZW5jZUtleSwKKyAgICAgICAgQCgwKSwgV2ViS2l0SmF2YVNjcmlw
dFJ1bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZRVMsIFdlYktpdEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0RE9N
VGltZXJzVGhyb3R0bGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktp
dFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTUxMSw5ICs1MTAs
OSBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQFlFUywgV2ViS2l0TGFyZ2VJbWFnZUFz
eW5jRGVjb2RpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0QW5p
bWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0
YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJL
aXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PHVp
bnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCkpLCBXZWJLaXRGcmFtZUZsYXR0
ZW5pbmdQcmVmZXJlbmNlS2V5LAogI2Vsc2UKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDpzdGF0aWNfY2FzdDx1aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpEaXNhYmxl
ZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6OkRpc2FibGVkKSksIFdlYktpdEZyYW1l
RmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgQE5PLCBXZWJLaXRBc3lu
Y0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTU0NCw3ICs1NDMsNyBA
QCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmFs
bG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5dLCBXZWJLaXRBbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOnJlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVdLCBXZWJL
aXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZUtleSwKICAg
ICAgICAgQE5PLCBXZWJLaXRNZWRpYUNvbnRyb2xzU2NhbGVXaXRoUGFnZVpvb21QcmVmZXJlbmNl
S2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OkF1ZGlvU2Vzc2lv
bjo6Tm9uZV0sIFdlYktpdEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUsCisgICAgICAgIEAo
QXVkaW9TZXNzaW9uOjpOb25lKSwgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSwK
ICAgICAgICAgQE5PLCBXZWJLaXRNZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNl
S2V5LAogI2lmIEhBVkUoQVZLSVQpCiAgICAgICAgIEBZRVMsIFdlYktpdEFWS2l0RW5hYmxlZCwK
QEAgLTU3MCw3ICs1NjksNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQFlFUywgV2Vi
S2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBO
TywgV2ViS2l0V2FudHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhhdmlvcktleSwKICAgICAg
ICAgQE5PLCBXZWJLaXREaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWRLZXksCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OldlYkFsbG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9j
a2luZ1BvbGljeUtleSwKKyAgICAgICAgQChXZWJBbGxvd0FsbFN0b3JhZ2UpLCBXZWJLaXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3lLZXksCiAgICAgICAgIEBOTywgV2ViS2l0UGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAt
NTc5LDcgKzU3OCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEZsb2F0Oi0xLjBmXSwgV2ViS2l0TWF4UGFyc2VEdXJhdGlvblByZWZlcmVuY2VLZXks
CiAgICAgICAgIEBOTywgV2ViS2l0QWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdEZvcm1TdWJtaXNz
aW9uUHJlZmVyZW5jZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRBbHdheXNSZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUHJlZmVyZW5jZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6c3RhdGljX2Nhc3Q8aW50PihJbnRlcnBvbGF0aW9uUXVhbGl0eTo6TG93KV0sIFdlYktp
dEludGVycG9sYXRpb25RdWFsaXR5UHJlZmVyZW5jZUtleSwKKyAgICAgICAgQChzdGF0aWNfY2Fz
dDxpbnQ+KEludGVycG9sYXRpb25RdWFsaXR5OjpMb3cpKSwgV2ViS2l0SW50ZXJwb2xhdGlvblF1
YWxpdHlQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBXZWJLaXRQYXNzd29yZEVjaG9FbmFi
bGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDoyLjBm
XSwgV2ViS2l0UGFzc3dvcmRFY2hvRHVyYXRpb25QcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8s
IFdlYktpdE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAt
ODUwLDcgKzg0OSw3IEBAIC0gKHZvaWQpX3NldFVuc2lnbmVkSW50VmFsdWU6KHVuc2lnbmVkIGlu
dCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgfSk7CiAjZW5kaWYKICAgICBpZiAo
X3ByaXZhdGUtPmF1dG9zYXZlcykKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6dmFs
dWVdIGZvcktleTpfa2V5XTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc2V0T2JqZWN0OkAodmFsdWUpIGZvcktleTpfa2V5XTsKICAgICBbc2VsZiBfcG9z
dFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbl07CiB9CiAKQEAgLTE4MDgsNyArMTgwNyw3
IEBAIC0gKHZvaWQpc2V0RWRpdGFibGVMaW5rQmVoYXZpb3I6KFdlYktpdEVkaXRhYmxlTGlua0Jl
aGF2aW9yKWJlaGF2aW9yCiAKIC0gKFdlYlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVo
YXZpb3IpdGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcgogewotICAgIFdlYlRl
eHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgdmFsdWUgPSBzdGF0aWNfY2FzdDxX
ZWJUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yPihbc2VsZiBfaW50ZWdlclZh
bHVlRm9yS2V5OldlYktpdFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JQcmVm
ZXJlbmNlS2V5XSk7CisgICAgYXV0byB2YWx1ZSA9IHN0YXRpY19jYXN0PFdlYlRleHREaXJlY3Rp
b25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3I+KFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2Vi
S2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXldKTsK
ICAgICBpZiAodmFsdWUgIT0gV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVOZXZlckluY2x1ZGVkICYm
CiAgICAgICAgIHZhbHVlICE9IFdlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUlu
Y2x1ZGVkICYmCiAgICAgICAgIHZhbHVlICE9IFdlYlRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlz
SW5jbHVkZWQpIHsKQEAgLTE5NDMsNyArMTk0Miw3IEBAICsgKENGU3RyaW5nRW5jb2RpbmcpX3N5
c3RlbUNGU3RyaW5nRW5jb2RpbmcKICsgKHZvaWQpX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29k
aW5nVG9TeXN0ZW1FbmNvZGluZwogewogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3Q6ZGVmYXVsdFRleHRFbmNvZGluZ05hbWVGb3JTeXN0ZW1MYW5ndWFnZSgp
IGZvcktleTpXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXldXTsKKyAg
ICAgICAgQHsgV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5OiBkZWZh
dWx0VGV4dEVuY29kaW5nTmFtZUZvclN5c3RlbUxhbmd1YWdlKCkgfV07CiB9CiAKIHN0YXRpYyBO
U1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKQEAgLTI3NTYsOCArMjc1NSw3IEBAIC0g
KHZvaWQpc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kp
c3RvcmFnZUJsb2NraW5nUG9saWN5CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHdyaXRlIHRoZSBzZXR0aW5nIG91dCwgc28gd2UganVzdCByZXNldCB0
aGUgZGVmYXVsdCBpbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIG5ldyBzZXR0aW5nLgogICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgcmVtb3ZlcyBhbnkgZGVmYXVsdHMgcHJldmlvdXNseSByZWdpc3RlcmVk
IGJ5IGNsaWVudCBwcm9jZXNzLCB3aGljaCBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIHRoaXMgbWV0
aG9kIHRvIGRvLgotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3RvcmFnZUJsb2NraW5nUG9s
aWN5XSBmb3JLZXk6V2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5XTsKLSAgICBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOmRpY3RdOwor
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6QHsgV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5OiBAKHN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSkgfV07CiAjZWxzZQogICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6c3RvcmFnZUJsb2Nr
aW5nUG9saWN5IGZvcktleTpXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXldOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQppbmRleCBlNjU5ZWYwZmEzZmFhMGU2MDE4YTNmNDgxNWQ4OTY0MTNmZTlkMjZkLi4x
NDU3Mzk4NzhjNTc5ZmVjNWNhMmRiZDVjMjExNmM3ZTFmM2IzYjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgTlNTdHJpbmcqIG5zRXJyb3JNZXNzYWdlID0gbnNTdHJpbmdOaWxJZkVt
cHR5KGVycm9yTXNnKTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICppbmZvID0gW1tOU0RpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlw
dEVycm9yRGVzY3JpcHRpb25LZXksIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6ZXJy
b3JMaW5lXSwgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5LCBuaWxdOworICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5k
S2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJv
ckxpbmUpLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07CiAgICAgICAgIE5TRXJy
b3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJv
ckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mb107CiAK
ICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0
aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLm1tCmluZGV4IGEzODFkMTBiMjhhM2RlZTk1NDhlYTJlZTQ2
OTk2MDU3YTNiMjZlMTYuLjZkMzE3Yjk3ZDU1YjM1N2JiMjg0ZDk3NzkyMWU0MGE2ZTdkZjBiYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgLSAodm9p
ZClfcGxhY2VQb3B1cFdpbmRvdzooTlNQb2ludCl0b3BMZWZ0CiAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgd2luZG93RnJhbWUuc2l6ZS5oZWlnaHQgPSBudW1iZXJU
b1Nob3cgKiBbX3RhYmxlVmlldyByb3dIZWlnaHRdICsgKG51bWJlclRvU2hvdyArIDEpICogW190
YWJsZVZpZXcgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0OwogICAgIHdpbmRvd0ZyYW1lLm9yaWdp
bi55IC09IHdpbmRvd0ZyYW1lLnNpemUuaGVpZ2h0OwotICAgIE5TRGljdGlvbmFyeSAqYXR0cmli
dXRlcyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNGb250
IHN5c3RlbUZvbnRPZlNpemU6MTIuMGZdLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAg
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IEB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtOU0Zv
bnQgc3lzdGVtRm9udE9mU2l6ZToxMi4wZl0gfTsKICAgICBDR0Zsb2F0IG1heFdpZHRoID0gMDsK
ICAgICBpbnQgbWF4SW5kZXggPSAtMTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBu
dW1iZXJUb1Nob3c7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IGQxMTc3N2RiNmUxNmJlODlkYWQ0ZDdlNjgwZTMxN2I1YjdkZmU1M2EuLjk1
ZDBmM2U4ZDY3YTgzNDAxMmFkMDdmNjNlZGRjZTI5MDY3M2FmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI0Myw3ICsyNDMsNiBAQAogI2ltcG9y
dCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4K
ICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTI1NCw2ICsyNTMsNyBA
QAogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMjkyMyw3ICsyOTIzLDcgQEAgLSAodm9pZClfcHJlZmVyZW5j
ZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAgICAgc2V0dGluZ3Muc2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KFtwcmVmZXJlbmNlcyBsb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHldKTsKICAgICBzZXR0aW5ncy5zZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2Fk
aW5nU2V0dGluZyhbcHJlZmVyZW5jZXMgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGlu
Z1ByZWZlcmVuY2VdKTsKIAotICAgIFdlYkNvcmU6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzKFdlYkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbcHJl
ZmVyZW5jZXMgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7CisgICAgV2ViQ29yZTo6
c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMobWFrZVZlY3RvcjxTdHJpbmc+KFtwcmVm
ZXJlbmNlcyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc2V0dGluZ3Muc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh0cnVl
KTsKQEAgLTQ1MjgsNyArNDUyOCw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNl
ckludGVyZmFjZUl0ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW0KICAgICAgICAgYXV0
byogdmFsaWRhdGlvbkJ1YmJsZSA9IF9wcml2YXRlLT5mb3JtVmFsaWRhdGlvbkJ1YmJsZS5nZXQo
KTsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlv
bkJ1YmJsZS0+bWVzc2FnZSgpIDogZW1wdHlTdHJpbmcoKTsKICAgICAgICAgZG91YmxlIGZvbnRT
aXplID0gdmFsaWRhdGlvbkJ1YmJsZSA/IHZhbGlkYXRpb25CdWJibGUtPmZvbnRTaXplKCkgOiAw
OwotICAgICAgICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChO
U1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9udFNpemUiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTpmb250U2l6ZV0gfSB9OworICAgICAgICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7
IEAibWVzc2FnZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9udFNpemUiOiBAKGZvbnRTaXpl
KSB9IH07CiAgICAgfQogCiAgICAgcmV0dXJuIG5pbDsKQEAgLTQ2NDQsMjIgKzQ2NDQsNiBAQCAt
ICh2b2lkKV91cGRhdGVBY3RpdmVTdGF0ZQogI2VuZGlmCiB9CiAKLXN0YXRpYyBWZWN0b3I8U3Ry
aW5nPiB0b1N0cmluZ1ZlY3RvcihOU0FycmF5KiBwYXR0ZXJucykKLXsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBwYXR0ZXJuc1ZlY3RvcjsKLQotICAgIE5TVUludGVnZXIgY291bnQgPSBbcGF0dGVybnMg
Y291bnRdOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsK
LQotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
aWQgZW50cnkgPSBbcGF0dGVybnMgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgaWYgKFtlbnRy
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgcGF0dGVybnNW
ZWN0b3IuYXBwZW5kKFN0cmluZygoTlNTdHJpbmcgKillbnRyeSkpOwotICAgIH0KLSAgICByZXR1
cm4gcGF0dGVybnNWZWN0b3I7Ci19Ci0KICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihO
U1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsZCBzb3VyY2U6
KE5TU3RyaW5nICopc291cmNlIHVybDooTlNVUkwgKil1cmwKICAgICAgICAgICAgICAgICAgICAg
d2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0IGJsYWNrbGlzdDooTlNBcnJheSAqKWJsYWNr
bGlzdAogICAgICAgICAgICAgICAgIGluamVjdGlvblRpbWU6KFdlYlVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKWluamVjdGlvblRpbWUKQEAgLTQ2ODEsNyArNDY2NSw3IEBAICsgKHZvaWQpX2FkZFVz
ZXJTY3JpcHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29y
bGQgKil3b3JsCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxG
cmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZy
YW1lcyA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJh
bWVPbmx5LCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7
CisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihz
b3VyY2UsIHVybCwgbWFrZVZlY3RvcjxTdHJpbmc+KHdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3Ry
aW5nPihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFy
dCA/IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IDogV2Vi
Q29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1l
cyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTY3JpcHQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0K
IApAQCAtNDcwNCw3ICs0Njg4LDcgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3Vw
OihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAo
IXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Io
d2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0g
V2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAg
IGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNv
dXJjZSwgdXJsLCBtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJp
bmc+KGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8g
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwg
V2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHls
ZVNoZWV0KSwgV2ViQ29yZTo6SW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAgLTY3
MzcsNyArNjcyMSw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9lbGVtZW50QXRXaW5kb3dQb2ludDoo
TlNQb2ludCl3aW5kb3dQb2ludAogICAgICAgICBOU1BvaW50IHBvaW50ID0gW2RvY3VtZW50Vmll
dyBjb252ZXJ0UG9pbnQ6d2luZG93UG9pbnQgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgcmV0dXJu
IFsoTlNWaWV3IDxXZWJEb2N1bWVudEVsZW1lbnQ+ICopZG9jdW1lbnRWaWV3IGVsZW1lbnRBdFBv
aW50OnBvaW50XTsKICAgICB9Ci0gICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3Q6W2ZyYW1lVmlldyB3ZWJGcmFtZV0gZm9yS2V5OldlYkVsZW1lbnRGcmFtZUtleV07
CisgICAgcmV0dXJuIEB7IFdlYkVsZW1lbnRGcmFtZUtleTogW2ZyYW1lVmlldyB3ZWJGcmFtZV0g
fTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQK
QEAgLTcwMjUsNyArNzAwOSw3IEBAIC0gKE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNGb3JTZWxl
Y3Rpb24KICAgICBpZiAoW2RvY3VtZW50VmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29s
KFdlYkRvY3VtZW50U2VsZWN0aW9uKV0pIHsKICAgICAgICAgcmV0dXJuIFsoTlNWaWV3IDxXZWJE
b2N1bWVudFNlbGVjdGlvbj4gKilkb2N1bWVudFZpZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0
aW9uXTsKICAgICB9Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICByZXR1cm4gQFtd
OwogfQogCiAtICh2b2lkKXdyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJh
eSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtNzA0
Nyw3ICs3MDMxLDcgQEAgLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRUeXBlc0ZvckVsZW1lbnQ6KE5T
RGljdGlvbmFyeSAqKWVsZW1lbnQKICAgICB9IGVsc2UgaWYgKFtbZWxlbWVudCBvYmplY3RGb3JL
ZXk6V2ViRWxlbWVudElzU2VsZWN0ZWRLZXldIGJvb2xWYWx1ZV0pIHsKICAgICAgICAgcmV0dXJu
IFtzZWxmIHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbl07CiAgICAgfQotICAgIHJldHVybiBb
TlNBcnJheSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAodm9pZCl3cml0ZUVsZW1l
bnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgd2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAq
KXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtODAxOCw3
ICs4MDAyLDcgQEAgLSAodm9pZCl1bm1hcmtBbGxUZXh0TWF0Y2hlcwogLSAoTlNBcnJheSAqKXJl
Y3RzRm9yVGV4dE1hdGNoZXMKIHsKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NlZCkKLSAgICAgICAg
cmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKIAogICAgIE5TTXV0
YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIFdlYkZyYW1l
ICpmcmFtZSA9IFtzZWxmIG1haW5GcmFtZV07CkBAIC05MDc1LDcgKzkwNTksNyBAQCAtICh2b2lk
KV9zZWFyY2hXaXRoR29vZ2xlRnJvbU1lbnU6KGlkKXNlbmRlcgogICAgIH0KIAogICAgIE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVO
YW1lXTsKLSAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07Cisg
ICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKICAgICBOU011dGFibGVTdHJpbmcgKnMgPSBbc2VsZWN0
ZWRTdHJpbmcgbXV0YWJsZUNvcHldOwogICAgIGNvbnN0IHVuaWNoYXIgbm9uQnJlYWtpbmdTcGFj
ZUNoYXJhY3RlciA9IDB4QTA7CiAgICAgTlNTdHJpbmcgKm5vbkJyZWFraW5nU3BhY2VTdHJpbmcg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6Jm5vbkJyZWFraW5nU3BhY2VDaGFyYWN0
ZXIgbGVuZ3RoOjFdOwpAQCAtMTAxNjksMTcgKzEwMTUzLDE2IEBAIC0gKHVpbnQ2NF90KV9ub3Rp
ZmljYXRpb25JREZvclRlc3Rpbmc6KEpTVmFsdWVSZWYpanNOb3RpZmljYXRpb24KIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdGb250U2VsZWN0aW9uKQorCiArICh2b2lk
KV9zZXRGb250V2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0CiB7CiAjaWYgIVBMQVRGT1JN
KE1BQykKICAgICBVTlVTRURfUEFSQU0od2hpdGVsaXN0KTsKICNlbHNlCi0gICAgVmVjdG9yPFN0
cmluZz4gdmVjdG9yOwotICAgIGZvciAoTlNTdHJpbmcgKnN0cmluZyBpbiB3aGl0ZWxpc3QpCi0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoc3RyaW5nKTsKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNl
dEZvbnRXaGl0ZWxpc3QodmVjdG9yKTsKKyAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRX
aGl0ZWxpc3QobWFrZVZlY3RvcjxTdHJpbmc+KHdoaXRlbGlzdCkpOwogI2VuZGlmCiB9CisKIEBl
bmQKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzI2YTA2ZWFjZDg2ZTcyYmFkMjUyZjNhNzUwZWU4
NTVlMmFiZmY4Yy4uZGM5YTEyYzNhNmU3YTRjYmRmMjIzMGM4NGYyZjdhNWM0NTgyYTQ1NyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1NCBAQAorMjAyMC0wNC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJl
ciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaDogUmVtb3ZlIHVzZSBvZiBOb3RpZmljYXRpb25IYW5kbGVyCisgICAgICAgIHR5cGU7IGl0
J3MganVzdCAiaWQiLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHA6CisgICAgICAgIChjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KTogTW92
ZWQgdGhpcyB1cCBpbiB0aGUgZmlsZSwgcmVtb3ZlZCB1bm5lZWRlZAorICAgICAgICB1c2Ugb2Yg
SlNWYWx1ZVRvT2JqZWN0IGFuZCB1bnVzZWQgZXhjZXB0aW9uIGFyZ3VtZW50LgorICAgICAgICAo
ZWxlbWVudHNGb3JSYW5nZUNhbGxiYWNrKTogVXNlIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJy
YXkuCisgICAgICAgIChjb2x1bW5IZWFkZXJzQ2FsbGJhY2spOiBVcGRhdGVkIGZvciByZW1vdmVk
IGV4Y2VwdGlvbiBhcmd1bWVudC4KKyAgICAgICAgKHJvd0hlYWRlcnNDYWxsYmFjayk6IERpdHRv
LgorICAgICAgICAodWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKTogRGl0dG8u
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IENo
YW5nZWQgdG8gdXNlIFJldGFpblB0ci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RO
ZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW06CisgICAgICAgIChjcmVhdGVDb3JlQW5p
bWF0aW9uTGF5ZXIpOiBVc2UgQHt9LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCBzb21lIHVubmVlZGVkCisgICAg
ICAgIGNvZGUgbm93IHRoYXQgd2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KTogVXNlIEBbXS4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMpOiBVc2UgQFtdLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hlc1RleHROZWFyTWFya2Vycyk6IFVzZSBAW10uCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubToKKyAgICAg
ICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBtYXJrZWRSYW5nZV0pOiBVc2UgQFtdLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW06CisgICAg
ICAgIChzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVy
aWEpOiBUd2VhayBhIGxpdHRsZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3Jl
YXRlSlNTdHJpbmdSZWZdKTogRGVsZXRlZC4gRHVwbGljYXRlIG9mIGEgbWV0aG9kIGFscmVhZHkK
KyAgICAgICAgaW1wbGVtZW50ZWQgaW4gYW5vdGhlIGZpbGUuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKG1ha2VW
ZWN0b3JFbGVtZW50KTogQWRkZWQgb3ZlcmxvYWRzIHRvIG1ha2UgYm90aAorICAgICAgICBtYWtl
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGFuZAorICAgICAgICBtYWtlVmVj
dG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHdvcmsuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCBzb21lIHVubmVlZGVk
CisgICAgICAgIGNvZGUgbm93IHRoYXQgd2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKGNvbnZl
cnRWZWN0b3JUb09iamVjdEFycmF5KTogUmVtb3ZlZCB1bm5lZWRlZCB1c2Ugb2YgSlNWYWx1ZVRv
T2JqZWN0CisgICAgICAgIGFuZCB1bm5lZWRlZCBleGNlcHRpb24gYXJndW1lbnQuCisgICAgICAg
IChjb252ZXJ0TlNBcnJheVRvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pi4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldERvY3VtZW50TGlua3MpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmdldENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cm93SGVhZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6
IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6IFVwZGF0ZWQg
c2luY2UgbV9lbGVtZW50IGlzIGEgUmV0YWluUHRyLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3Vicm9sZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm9sZURlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRpdGxlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
b3JpZW50YXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0cmluZ1ZhbHVlKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsYW5ndWFnZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVs
cFRleHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleCk6IFVzZSBAKCkuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOiBVc2UgQCgpLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2VhcmNoVGV4dFdpdGhDcml0ZXJpYSk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93SGVhZGVycyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mQ29sdW1ucyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKTogRGl0dG8uCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KTogVXNlIEBbXSBh
bmQgQCgpLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGls
ZCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRT
ZWxlY3RlZENoaWxkQXRJbmRleCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlv
bnMpOgorICAgICAgICBVc2UgQHt9LCBAWUVTLCBhbmQgQE5PLgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChh
ZGRUZXN0UGx1Z2luc1RvUGx1Z2luU2VhcmNoUGF0aCk6IFVzZSBAW10uCisgICAgICAgIChyZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOiBVc2UgQFtdLgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW06CisgICAg
ICAgICgtW0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCBkZWNsYXJlVHlwZTpvd25lcjpdKTogVXNl
IEBbXS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5tbToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmls
ZXM6XSk6IFVzZSBAKCkuCisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgc2VudFRv
dWNoRXZlbnRPZlR5cGU6XSk6IFVzZSBAKCkuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAgKC1bTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyIGNhbmNlbE5vdGlmaWNhdGlvbjpdKTogVXNlIEBbXS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tOgorICAgICAgICAoLVtPYmpD
Q29udHJvbGxlciBvYmplY3RPZkNsYXNzOl0pOiBVc2UgQCgpLgorICAgICAgICAoLVtPYmpDQ29u
dHJvbGxlciBhcnJheU9mU3RyaW5nXSk6IFVzZSBAW10uCisgICAgICAgICgtW09iakNDb250cm9s
bGVyIHRlc3RXcmFwcGVyUm91bmRUcmlwcGluZzpdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bT2Jq
Q0NvbnRyb2xsZXIgdGVzdEFycmF5XSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKG9yaWdpbnNBcnJheVRvSlMpOiBS
ZW1vdmVkIHVubmVlZGVkIHVzZSBvZiBKU1ZhbHVlVG9PYmplY3QuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tOgorICAgICAgICAoLVtUZXh0
SW5wdXRDb250cm9sbGVyIG1hcmtlZFJhbmdlXSk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAg
KC1bVGV4dElucHV0Q29udHJvbGxlciBzZWxlY3RlZFJhbmdlXSk6IFVzZSBAW10gYW5kIEAoKS4K
KyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJv
bTpsZW5ndGg6XSk6CisgICAgICAgIFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElu
cHV0Q29udHJvbGxlciBkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZl
OmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVybmF0aXZlTGVuZ3RoOl0pOgorICAgICAgICBVc2UgQFtd
LgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIGludGVycHJldEtleUV2ZW50czp3aXRo
U2VuZGVyOl0pOiBVc2UgQFtdLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFj
Ojpjb3B5VGV4dCk6IFVzZSBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDogRGVsZXRlZCBhbgorICAgICAgICB1bm5lZWRlZCBj
b3B5IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLgorCisgICAgICAgICogVGVzdFJ1bm5lclNo
YXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgorICAgICAgICAoLVtMYXlvdXRU
ZXN0U3BlbGxDaGVja2VyIHNldFJlc3VsdHNGcm9tSlNPYmplY3Q6aW5Db250ZXh0Ol0pOiBVc2Ug
QHt9LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24ubW06CisgICAgICAgICh0b1ZlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICgtW0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmNv
bnRlbnRSdWxlTGlzdFdpdGhJZGVudGlmaWVyOnBlcmZvcm1lZEFjdGlvbjpmb3JVUkw6XSk6Cisg
ICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW06CisgICAgICAgICh3cml0ZUltYWdlRGF0YVRvUGFz
dGVib2FyZCk6IFVzZSBAW10gYW5kIEB7fS4KKyAgICAgICAgKHdyaXRlQnVuZGxlRmlsZVRvUGFz
dGVib2FyZCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZVdlYkFyY2hpdmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTog
VXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJD
b250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2Ug
QFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToK
KyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6IFVzZSBAW10uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbToKKyAgICAgICAgKC1bRGlk
Q3JlYXRlSmF2YVNjcmlwdENvbnRleHRGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENyZWF0
ZUphdmFTY3JpcHRDb250ZXh0OmZvckZyYW1lOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW06CisgICAgICAgIChtYWluKTogVXNlIEB7
fS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6
OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IFVzZSBAe30gYW5kIEAoKS4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL21hYy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6IFVzZSB7fS4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgVXNlIGlkIGluc3RlYWQgb2YgTm90aWZpY2F0aW9uSGFuZGxlci4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UuaDoKKyAgICAgICAgVXNlIGlkIGZvciBQbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZS4gQWRkZWQgYW4gb3ZlcmxvYWQgb2YgbWFrZVZlY3RvckVsZW1lbnQKKyAgICAgICAgdG8gbWFr
ZSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4gd29yay4K
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaDoKKyAgICAgICAgVXNlIFJldGFpblB0ci4gQWRkZWQgYW4gb3ZlcmxvYWQgb2Yg
bWFrZVZlY3RvckVsZW1lbnQgdG8gbWFrZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4gd29yay4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tOgorICAgICAgICBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RS
Ojpjb252ZXJ0TlNBcnJheVRvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAg
ICAgICAgc2luY2Ugd2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdU
Ujo6Y29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9m
CisgICAgICAgIEpTVmFsdWVUb09iamVjdC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZWxlbWVudHNGb3JSYW5nZSk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgVXNl
IEBbXS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJh
bmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMpOgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1Mu
bW06CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBV
c2UgQHt9LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAg
c2luY2Ugd2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29u
dmVydE5TQXJyYXlUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+LgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKTogRGl0dG8uCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxk
cmVuKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENo
aWxkcmVuV2l0aFJhbmdlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJvd0hlYWRlcnMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKTogVXBkYXRlZCBzaW5jZSBt
X2VsZW1lbnQKKyAgICAgICAgaXMgYSBSZXRhaW5QdHIuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKTogRGl0dG8uCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOiBEaXR0by4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0
dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRs
ZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlw
dGlvbik6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpvcmll
bnRhdGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsYW5ndWFnZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoZWxwVGV4dCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOiBVc2UgQCgpLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisg
ICAgICAgIG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pi4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
SGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cyk6IERpdHRvLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMp
OiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0
KTogVXNlIEBbXS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlclJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyk6IFRha2UgVmVjdG9yJiYuCisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KTogVGFrZSBT
dHJpbmcmJi4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IFVw
ZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNv
Y29hUGxhdGZvcm1Jbml0aWFsaXplKTogVXNlIEB7fWFuZCBAKCkuCisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyk6IFVzZSBtYWtlVmVjdG9y
PFN0cmluZz4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5
RG9tYWlucyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOiBVcGRhdGUgdG8gcGFzcyBTdHJpbmcmJi4KKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEFsbG93ZWRNZW51QWN0aW9ucyk6IFVzZSBj
cmVhdGVOU0FycmF5LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRH
ZW5lcmF0b3IubW06CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2
ZW50czpdKTogVXNlIEAoKS4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9y
bVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2lu
ZG93U2NhbGVJZk5lZWRlZCk6IFVzZSBAe30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1
ZGUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOiBV
c2UgQFtdLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQ
YXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCBkZWNs
YXJlVHlwZTpvd25lcjpdKTogVXNlIEBbXS4KKwogMjAyMC0wNC0wOCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYSB3b3JrYXJvdW5kIHRo
YXQgYWxsb3dzIG1hbnkgQVBJIHRlc3RzIHRvIHBhc3Mgb24gaU9TIDEzLjIKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IDFiZGYxYzQzMGJj
NTBiZTM4NGZhY2NlNTBkZmZhNTI4ZGE0ODU2YTUuLjFkYzdkM2I1NjNhMTU0ZjRjZTliZjdhMzAz
MGM4YzVhNzY5N2YzOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CkBAIC0zMiw5
ICszMSwxMSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KICNlbmRpZgorCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9S
TShHVEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIK
ICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC05NCw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZpY2F0aW9uTGlzdGVu
ZXJzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRp
b25IYW5kbGVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9nbG9i
YWxOb3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIFBMQVRGT1JNKEdUSykKQEAgLTEwNCw1ICsxMDUsMyBAQCBwcml2YXRlOgogICAgIAogICAg
IHZvaWQgcGxhdGZvcm1SZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9OwotCi0jZW5kaWYgLy8g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmgKaW5kZXggOTZlOTk3YWFlMjhkMTI2Nzk0YTliZGZjOWFmZTNl
NDliYmE2ZDUxYi4uYmQ3Yjc1YzRiODdmMzI0MjEwODQ5OWFmYmI0NmRmY2M1NDI0NDkyNCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBAIC0y
Myw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogCkBAIC0z
NiwxNSArMzUsMTMgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlcjsKLXR5cGVkZWYg
Q0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxhdGZvcm1UZXh0TWFy
a2VyID0gaWQ7Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UKIHR5
cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZTsKICNlbmRpZgogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Owot
CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB7CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKQEAgLTU4LDggKzU1LDggQEAgcHVi
bGljOgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7
Ci0jaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oTUFDKQotICAgIFJldGFp
blB0cjxQbGF0Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgUmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXI7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4
dE1hcmtlciBtX3RleHRNYXJrZXI7CiAjZW5kaWYKQEAgLTc5LDggKzc2LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKIAogcHJpdmF0ZToKLSNpZiBTVVBQ
T1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPFBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgUmV0YWluUHRyPGlkPiBtX3RleHRNYXJrZXJSYW5nZTsKICNlbHNlCiAgICAgUGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UgbV90ZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTg5LDcgKzg2
LDcgQEAgcHJpdmF0ZToKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0b1RleHRNYXJrZXIoSlNP
YmplY3RSZWYgb2JqZWN0KTsKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHRvVGV4dE1h
cmtlclJhbmdlKEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKLSNpZiAhU1VQUE9SVFNfQVhfVEVYVE1B
UktFUlMKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlcikgeyB9CiBpbmxp
bmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJikgeyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpIHsgfQpAQCAtMTAyLDUgKzk5LDMgQEAg
aW5saW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKCkgeyB9CiBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsg
fQogaW5saW5lIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TWFy
a2VyUmFuZ2U7IH0KICNlbmRpZgotCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9o
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmlu
ZGV4IDJmZGNjMDBkMjFmY2ZiYzI1ZGViMjEwZGZlY2QzNDc2NTdmOGRmYjcuLjExZjNhNTE5NGY5
ZWIyMTdkMzM3YzU5MzAzZTNjZmU2ZmI2ZWU1OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0zMDcsNiArMzA3LDE1IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIGluZGV4T2ZDaGlsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQs
IChkb3VibGUpdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGlsZChjaGlsZEVsZW1l
bnQpKTsKIH0KIAorc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJy
YXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiYgZWxlbWVudHMpCit7CisgICAgYXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNv
bnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50
cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxl
bWVudHNbaV0pLCAwKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJbmRleENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTMyNywyMCArMzM2LDE0IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IEpTVmFsdWVUb051
bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsK
LSAgICAKKwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAg
ICB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+ZWxlbWVudHNGb3JSYW5nZShsb2NhdGlvbiwgbGVu
Z3RoLCBlbGVtZW50cyk7Ci0gICAgCi0gICAgSlNWYWx1ZVJlZiBhcnJheVJlc3VsdCA9IEpTT2Jq
ZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0UmVmIGFycmF5T2Jq
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsKLSAgICB1bnNpZ25l
ZCBlbGVtZW50c1NpemUgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGVsZW1lbnRzU2l6ZTsgKytrKQotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJ
bmRleChjb250ZXh0LCBhcnJheU9iaiwgaywgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpT
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVtZW50c1trXSksIDApOwotICAgIAot
ICAgIHJldHVybiBhcnJheVJlc3VsdDsKKworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09i
amVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgaW5j
cmVhc2VUZXh0U2VsZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpA
QCAtNjE1LDMwICs2MTgsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgc3RyaW5nQXR0cmlidXRlVmFs
dWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFy
cmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4m
IGVsZW1lbnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNWYWx1ZVJlZiBhcnJh
eVJlc3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2Jq
ZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAw
KTsKLQotICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAgICAgSlNPYmplY3RT
ZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0p
LCAwKTsKLQotICAgIHJldHVybiBhcnJheVJlc3VsdDsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYg
Y29sdW1uSGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9BWEVsZW1l
bnQodGhpc09iamVjdCktPmNvbHVtbkhlYWRlcnMoZWxlbWVudHMpOwotICAgIHJldHVybiBjb252
ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzLCBleGNlcHRpb24pOwor
ICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRz
KTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgcm93SGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
ZWxlbWVudHM7CiAgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnJvd0hlYWRlcnMoZWxlbWVu
dHMpOwotICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVs
ZW1lbnRzLCBleGNlcHRpb24pOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFy
cmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
QEAgLTY1MCw3ICs2NDEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRBcnJheUF0dHJp
YnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTTwogICAgIAogICAgIFZl
Y3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KS0+dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUuZ2V0KCks
IGVsZW1lbnRzKTsKLSAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250
ZXh0LCBlbGVtZW50cywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9P
YmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4
IGNhMjI1NWM5ZWRlMDc1MjZmOTA1Mzk1NDhlMGI0NDE4YjM1YjVkMGMuLmQ3MjE5N2ZlYzBjZTc1
ZjRlYWQ2NTM4MWIyNWE1OGYyNjBjNTBlY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE4ICszMiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fCi10eXBlZGVmIGlkIFBs
YXRmb3JtVUlFbGVtZW50OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQbGF0
Zm9ybVVJRWxlbWVudDsKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbGlm
IFBMQVRGT1JNKFdJTikKICN1bmRlZiBfV0lOU09DS0FQSV8KICNkZWZpbmUgX1dJTlNPQ0tBUElf
IC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKLQogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+Ci0KIHR5cGVkZWYgQ09N
UHRyPElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlmIEhBVkUoQUNDRVNTSUJJ
TElUWSkgJiYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyQXRrLmgiCkBAIC01MywyMSArNDcsMjIgQEAgdHlwZWRlZiBBdGtPYmplY3QqIFBs
YXRmb3JtVUlFbGVtZW50OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbmRp
ZgogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKK3B1YmxpYzoKICNpZiBQTEFURk9S
TShDT0NPQSkKLSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5kbGVy
OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5kbGVy
OworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQpOwogI2VuZGlmCisjaWYgIVBMQVRGT1JN
KENPQ09BKQorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwog
I2VuZGlmCiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewotcHVibGljOgotICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwotICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwotICAgIH5BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWQgcGxhdGZvcm1V
SUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KKyNlbmRpZgogCisj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRmb3JtVUlFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKIAogICAgIHN0YXRpYyBK
U09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29u
c3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwogCkBAIC0zMTgsMTAgKzMxMyw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdDsKICAgICAKICAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMo
SlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqKTsKLSAgICAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFu
IGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlvbnMo
KTsKICAgICAKQEAgLTMzMiwxMSArMzI2LDE0IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygpOworCisjaWYgIVBMQVRGT1JNKENPQ09B
KQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKKyNlbmRpZgogICAgIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVj
dCB1c2VkIHRvIGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgotICAg
IE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworICAgIFJldGFpblB0
cjxpZD4gbV9lbGVtZW50OworICAgIFJldGFpblB0cjxpZD4gbV9ub3RpZmljYXRpb25IYW5kbGVy
OwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5P
YmplY3RNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1
Z2luT2JqZWN0TWFjLm1tCmluZGV4IGE2NDU3YTA3NmIxYjkyMjJlYzE4MzYyZDRiYzk0Y2I0NzJh
M2EzY2MuLjBjOGZhNDAwM2E3ZGZiNWRmNWMzNDJmMTQyMmI3YmUzOTY4NjU1M2QgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RN
YWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdp
bk9iamVjdE1hYy5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIENGVHlwZVJlZiBjcmVhdGVDb3JlQW5p
bWF0aW9uTGF5ZXIoKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBjYUxheWVyID0gYWRvcHROUyhb
W1Rlc3RQbHVnaW5MYXllciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNOdWxsICpudWxsVmFsdWUg
PSBbTlNOdWxsIG51bGxdOwotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9ucyA9IFtOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAImJvdW5kcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJjb250ZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJjb250ZW50c1JlY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxsVmFsdWUsIEAib3BhY2l0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJwb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJzaGFkb3dDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJzdWJsYXllclRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJzdWJsYXllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAidHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAInpQb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Cisg
ICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zID0gQHsKKyAgICAgICAgQCJhbmNob3JQb2ludCI6IG51
bGxWYWx1ZSwKKyAgICAgICAgQCJib3VuZHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29udGVu
dHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29udGVudHNSZWN0IjogbnVsbFZhbHVlLAorICAg
ICAgICBAIm9wYWNpdHkiOiBudWxsVmFsdWUsCisgICAgICAgIEAicG9zaXRpb24iOiBudWxsVmFs
dWUsCisgICAgICAgIEAic2hhZG93Q29sb3IiOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5
ZXJUcmFuc2Zvcm0iOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJzIjogbnVsbFZhbHVl
LAorICAgICAgICBAInRyYW5zZm9ybSI6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJ6UG9zaXRpb24i
OiBudWxsVmFsdWUsCisgICAgfTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMu
Ci0gICAgW2NhTGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dDphY3Rpb25zIGZvcktleTpAImFjdGlvbnMiXV07CisgICAgW2NhTGF5ZXIgc2V0U3R5bGU6QHsg
QCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVkc0Rpc3BsYXlPbkJv
dW5kc0NoYW5nZTpZRVNdOwogCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwg
MCwgMjAwLCAxMDApXTsKQEAgLTc2LDcgKzc2LDcgQEAgQ0ZUeXBlUmVmIGNyZWF0ZUNvcmVBbmlt
YXRpb25MYXllcigpCiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxheWVyIGxheWVyXTsK
ICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW3N1YmxheWVyIHNldFN0
eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0aW9ucyBmb3JLZXk6QCJh
Y3Rpb25zIl1dOworICAgIFtzdWJsYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMiOiBhY3Rpb25z
IH1dOwogCiAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1
KTsKICAgICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQpp
bmRleCBjMzY4N2MxMDc0ZTA1NzExY2Y4Yjk3NDZiODM1ZTQ2ZjM4YmY5MGIzLi5kZTI5ZDU1MTAy
MDQ4NWU4ZDQ0YjZlNTZkYWYyMzM5NGIxMDg1NTBkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCkBAIC00OCw3ICs0
OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIo
KQogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIo
KSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBb
cGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OwogfQogCiBQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OnBsYXRm
b3JtVGV4dE1hcmtlcigpIGNvbnN0IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCBhNGU0MTg5NTUzNDg4ODQ0YzRj
ZjhjMjNlMTRkZjg0NzdmYmYzODE5Li45NTFkZGRkMmU3YjM4NmNlNTZhOWYyYTZhOGU2MTJlYzVm
NGZlMjVlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbQpAQCAtNDEsMjQgKzQxLDkgQEAKIAogdHlwZWRlZiB2b2lkICgq
QVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlm
aWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKK0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVudCkKICAgICA6IG1f
ZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAg
W21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQotICAg
IDogbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxl
cigwKQotCi17Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci0gICAgW21fZWxlbWVudCByZWxl
YXNlXTsKIH0KIAogQGludGVyZmFjZSBOU09iamVjdCAoVUlBY2Nlc3NpYmlsaXR5SGlkZGVuKQpA
QCAtNDYyLDkgKzQ0Nyw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogCiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAgIGlk
IHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2VyRm9yTWFya2VyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQgZW5kVGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIsIG5pbF07Cisg
ICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJr
ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIGVuZFRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydFRleHRN
YXJrZXIsIGVuZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKQEAgLTQ3
Miw3ICs0NTcsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TQogCiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1hcmtl
clJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHN0YXJ0UmFuZ2UsIGJvb2wgZm9y
d2FyZCkKIHsKLSAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVsbGlu
Z1RleHRNYXJrZXJSYW5nZTooaWQpc3RhcnRSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KSBmb3J3YXJkOmZvcndhcmRdOworICAgIGlkIG1pc3NwZWxsaW5nUmFuZ2UgPSBbbV9lbGVtZW50
IG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlOnN0YXJ0UmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAtNTAzLDM0ICs0ODgsMzQgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
KCkKIAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2Vy
cyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFy
a2VycyA9IHJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIHJldHVybiBbbV9l
bGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKIH0KIAogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2Vy
cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07Cisg
ICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJz
XTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFu
Z2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsK
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiB9CiAKIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2Up
CiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAgICBpZCBvYmogPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlPYmplY3RGb3JUZXh0TWFya2VyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAg
IGlmIChvYmopCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iaik7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTMsMTkgKzUzOCwxOSBAQCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgs
IGludCB5KQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7Ci0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9y
TWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgcHJl
dmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOnRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIocHJldmlvdXNNYXJrZXIpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFy
a2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAg
aWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKG5leHRNYXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKW1h
cmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJz
ID0gbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWYgKCF0ZXh0
TWFya2VycyB8fCAhW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SlNTdHJpbmcoKTsKICAgICByZXR1cm4gW1ttX2Vs
ZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5nUmVm
XTsKQEAgLTY3MCw3ICs2NTUsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TgogewogICAgIE5T
QXJyYXkgKnRleHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkKLSAgICAgICAg
dGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBuaWxdOworICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzOnRleHRN
YXJrZXJzIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4dF1dOwog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJv
bGxlcklPUy5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJ
T1MubQppbmRleCA2NTMzOWIzY2JlYjgzZWI1MjRmMThhZmVjYjBlMmNmMjJhMTlkM2RjLi45NjVm
YWY1OTk3YTMyMzhlMTMyOWI1NzI1OWJhOWM1ZDcyODJlNmVlIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm0KQEAgLTc2LDcgKzc2LDcg
QEAgLSAoTlNBcnJheSAqKW1hcmtlZFJhbmdlCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAoW3Jhbmdl
IHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pLCBuaWxdOworICAgIHJldHVybiBA
W0AoW3JhbmdlIHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pXTsKIH0KIAogLSAo
dm9pZClpbnNlcnRUZXh0OihOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMGI4NjdhZGNiOTBjMzEy
MjQxNmRjYzI2NWYzODUzYjYxYjZkNDcxMy4uNzk0MDczOGEzMzkwZWIyNzBhNjA4YmZkMDU5ZTE3
MmFmNGI3OTA5MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0KQEAgLTQ4LDE3ICs0OCwxNyBAQCAtIChKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKIH0KIAotTlNEaWN0
aW9uYXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3Jp
dGVyaWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0
RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNW
YWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9u
bHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorTlNEaWN0aW9uYXJ5ICpzZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBp
c0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFyY2hL
ZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICAK
ICAgICBpZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQo
KSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OihpZClzdGFydEVs
ZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKLSAg
ICAKKyAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnN0YXJ0RWxlbWVu
dC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdOworCiAgICAg
W3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8gQCJB
WERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERpcmVj
dGlvbiJdOwotICAgIAorCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAo
cmVzdWx0c0xpbWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOwotICAgIAorCiAgICAgaWYg
KHNlYXJjaEtleSkgewogICAgICAgICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBuaWw7CiAgICAg
ICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgc2VhcmNoS2V5KSkgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tCmluZGV4IDlkN2ZmNmU5YmU2NDQ0NTM3YTlmZmE1YmE4NjNiZWM0NjdhYWZi
YTYuLmQxNjc4Mjc4ZDg0YjNkZWViYmM1NjJmYmNlNDA3YThhZDU0NTk1NDAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIubW0KQEAgLTI5LDMzICsyOSwyMCBAQAogICovCiAKICNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgi
CiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKKyNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxvYmpj
L3J1bnRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBOU09i
amVjdCAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBZGRpdGlvbnMpCiArICh2b2lkKWFj
Y2Vzc2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdDsKIEBl
bmQKIAotQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0tIChKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0KLS0gKEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJldHVybiBhZG9wdChKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc2VsZikpOwotfQot
Ci1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cgogCiAtIChpZClpbml0CkBAIC0xMzIsMjcgKzExOSwyMiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBt
YWtlVmFsdWVSZWZGb3JWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaWQgdmFsdWUpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VBcnJheVJlZkZvckFy
cmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICphcnJheSkKK3N0YXRpYyBKU09iamVj
dFJlZiBtYWtlQXJyYXlSZWZGb3JBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAq
YXJyYXkpCiB7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwogICAgIEpTVmFs
dWVSZWYgYXJndW1lbnRzW2NvdW50XTsKLQogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8
IGNvdW50OyBpKyspCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG1ha2VWYWx1ZVJlZkZvclZhbHVl
KGNvbnRleHQsIFthcnJheSBvYmplY3RBdEluZGV4OmldKTsKLQogICAgIHJldHVybiBKU09iamVj
dE1ha2VBcnJheShjb250ZXh0LCBjb3VudCwgYXJndW1lbnRzLCBudWxscHRyKTsKIH0KIAotc3Rh
dGljIEpTVmFsdWVSZWYgbWFrZU9iamVjdFJlZkZvckRpY3Rpb25hcnkoSlNDb250ZXh0UmVmIGNv
bnRleHQsIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKK3N0YXRpYyBKU09iamVjdFJlZiBtYWtl
T2JqZWN0UmVmRm9yRGljdGlvbmFyeShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNEaWN0aW9uYXJ5
ICpkaWN0aW9uYXJ5KQogewogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTT2JqZWN0TWFrZShj
b250ZXh0LCBudWxscHRyLCBudWxscHRyKTsKLQotICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtl
eXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIG9iaiwgQk9PTCAqc3Rv
cCkKLSAgICB7Ci0gICAgICAgIGlmIChKU1ZhbHVlUmVmIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFs
dWVSZWZGb3JWYWx1ZShjb250ZXh0LCBvYmopKQorICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtl
eXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIHZhbHVlLCBCT09MKiBz
dG9wKSB7CisgICAgICAgIGlmIChhdXRvIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFsdWVSZWZGb3JW
YWx1ZShjb250ZXh0LCB2YWx1ZSkpCiAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNv
bnRleHQsIG9iamVjdCwgW2tleSBjcmVhdGVKU1N0cmluZ1JlZl0uZ2V0KCksIHByb3BlcnR5VmFs
dWUsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CiAgICAgfV07Ci0KICAgICBy
ZXR1cm4gb2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KaW5kZXggMGVmZjkxNjk1MDY0NTg5ZmQ5ZThl
ZmI1YzYzNTYxZGExOTk4MDVkNy4uMWJmY2FjN2ZiMzRjZmMwYTc1ZWIyMmEzMTJkYTQ2OTg5YmVh
MDU3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbQpAQCAtMjgsMTEgKzI4LDExIEBACiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKIAotI2lmIFNV
UFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMp
CiAKIC8vIE1BUks6IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyCiAKLUFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2Vy
KQorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGlkIG1h
cmtlcikKICAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIpCiB7CiB9CkBAIC00OCwxNyArNDgsMTcg
QEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpCiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIG90aGVyKQogewotICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1h
cmtlcigpIGlzRXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgcmV0dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CiB9CiAKLVBsYXRmb3JtVGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QgCitpZCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIG1fdGV4
dE1hcmtlci5nZXQoKTsKIH0KIAogLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZQogCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShpZCBtYXJrZXJS
YW5nZSkKICAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQogewogfQpAQCAtNzQs
MTIgKzc0LDEyIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKCkKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpp
c0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90aGVyKQogewotICAgIHJldHVy
biBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNFcXVhbDooX19icmlk
Z2UgaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBbcGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKIH0KIAotUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAoraWQgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKIH0KIAotI2VuZGlmIC8vIFNVUFBP
UlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCmluZGV4IGNlNmI2MjMxZTMyZDVlOWYzZWQ4ZjVhN2I2MzQ3NzM0M2Y1MDQx
MGYuLjZiNWI1ZWZiZGI3ODMxZjA4YjA1YWYwNTYxODJjM2JjMzA2NGRjMWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwx
MSArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkR1bXBSZW5k
ZXJUcmVlLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCi0jaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCisjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2ltcG9ydCAiRHVtcFJl
bmRlclRyZWUuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1l
Lmg+CkBAIC0zNiw3ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlPd25zQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUgQCJB
WE93bnMiCkBAIC04NiwyNiArODYsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKLSAgICA6
IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCitzdGF0
aWMgT3B0aW9uYWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbWFrZVZlY3RvckVsZW1lbnQoY29u
c3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGlkIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6
IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NG
UmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJl
dGFpbl07CisgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50JiBvdGhlcikKLSAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAgLCBtX25v
dGlmaWNhdGlvbkhhbmRsZXIoMCkKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKiwgaWQgZWxlbWVudCkKIHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CisgICAgcmV0
dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoKQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudChpZCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiB7Ci0gICAg
Ly8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0
LgotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBbbV9lbGVtZW50IHJl
bGVhc2VdOwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1
ZU9iamVjdCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCkBAIC0xNzksMTYgKzE3Miwx
MyBAQCBzdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQgYWNjZXNzaWJpbGl0
eU9iamVjdCkKICAgICByZXR1cm4gYXR0cmlidXRlc1N0cmluZzsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KEpT
Q29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQogewotICAg
IEpTVmFsdWVSZWYgYXJyYXlSZXN1bHQgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAw
LCAwKTsKLSAgICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0
LCBhcnJheVJlc3VsdCwgMCk7Ci0gICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNp
emUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQotICAg
ICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaSwgSlNP
YmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLmdldEpTQ2xhc3MoKSwgbmV3IFQoZWxlbWVu
dHNbaV0pKSwgMCk7Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAgYXV0byBhcnJheSA9
IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVu
c2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4
dCwgYXJyYXksIGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS5nZXRKU0NsYXNz
KCksIG5ldyBUKGVsZW1lbnRzW2ldKSksIG51bGxwdHIpOworICAgIHJldHVybiBhcnJheTsKIH0K
IAogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUsIE5TU3RyaW5nICp2YWx1ZSkKQEAgLTIwNSwxNyAr
MTk1LDYgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUKICAgICByZXR1cm4gYWRvcHQoSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNvbnZlcnROU0FycmF5
VG9WZWN0b3IoTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7Ci0gICAgTlNVSW50
ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShj
b3VudCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAg
ICAgdi5hcHBlbmQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pOwotICAgIHJldHVybiB2OwotfQot
CiBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhW
ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgTlNN
dXRhYmxlU3RyaW5nKiBhbGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdd
OwpAQCAtMzE1LDcgKzI5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlu
a2VkVUlFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlU
b1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihsaW5rZWRFbGVtZW50cyk7CisgICAgZWxl
bWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua2VkRWxl
bWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzIzLDcgKzMwMiw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9
IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua0VsZW1l
bnRzKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PihsaW5rRWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAt
MzMxLDcgKzMxMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4o
VmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50CiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07
Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiB9CiAKQEAgLTMzOSw3ICszMTgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pgogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKLSAgICBl
bGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PihjaGlsZHJlbik7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4oY2hpbGRyZW4pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0K
IApAQCAtNTI4LDggKzUwNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCiAKIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKIHsKLSAgICBO
U1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9lbGVtZW50KTsKLSAg
ICByZXR1cm4gW2F0dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIHJldHVybiBbYXR0
cmlidXRlc09mRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0K
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTU0OCw3ICs1MjYsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoVmVjdG9yPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50cwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0gY29u
dmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7CisgICAg
ICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC01NTcsNyArNTM1LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiYgZWxlbWUKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZl
cnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAg
ICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTY2LDcgKzU0NCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUsCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBlbGVt
ZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNjQzLDcgKzYyMSw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvbGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5n
ICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAg
IE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1l
bnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhS
b2xlIiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjUzLDcg
KzYzMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdWJyb2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmlu
Zyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsK
KyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwg
bV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShAIkFYU3Vicm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAt
NjYzLDcgKzY0MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlv
bkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICBy
ZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2NyaXB0aW9uIiwg
cm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjczLDcgKzY1MSw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xl
RGVzY3JpcHRpb24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZWYWx1
ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUiXSwg
bV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklB
Um9sZSJdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbY29tcHV0ZWRSb2xlU3RyaW5n
IGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBA
IC02ODMsNyArNjYxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJp
YnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVRpdGxlQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5h
dGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogCkBAIC02OTMsNyArNjcxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVz
Y3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAg
ICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24iLCBk
ZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MDMsNyArNjgx
LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
c2NyaXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1
dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0
ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MTMsNyArNjkxLDcgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29u
c3QKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJp
bmdWYWx1ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3Jp
cHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAg
IGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVt
ZW50LmdldCgpKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCkBAIC03MjQsNyArNzAyLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1
YWdlIl0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0s
IG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUoQCJBWExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKIApAQCAtNzM0LDcgKzcxMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBB
dHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25P
ZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEwMjYsNyArMTAwNCw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBj
b25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5k
ZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDppbmRleF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBmb3JQYXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1ZSBp
bnRWYWx1ZV07IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEwMzcsNyArMTAxNSw3
IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9y
TGluZShpbnQgbGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051
bWJlciBudW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1cm4gW05TU3RyaW5n
RnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExNjYsNyArMTE0NCw3IEBAIEpTVmFsdWVSZWYgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRSZWYg
Y29udGV4dCwKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBzZWFy
Y2hUZXh0UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIHNlYXJjaFN0
cmluZ3MsIHN0YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdpdGhDcml0ZXJpYSIg
Zm9yUGFyYW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbcmVzdWx0IGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWZWN0
b3JUb09iamVjdEFycmF5PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KGNvbnRleHQsIGNv
bnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4ocmVzdWx0
KSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheShjb250ZXh0LCBt
YWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KHJlc3VsdCkpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNzcsNyAr
MTE1NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4g
QXBwS2l0Li4uIG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkq
IGNvbHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBjb2x1bW5IZWFkZXJz
VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihj
b2x1bW5IZWFkZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9IG1ha2VW
ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uSGVhZGVyc0FycmF5KTsKICAgICBy
ZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0b3IpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTExODgsNyArMTE2Niw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dI
ZWFkZXJzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBy
b3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gcm93SGVhZGVyc1ZlY3RvciA9IGNv
bnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4ocm93SGVhZGVyc0Fy
cmF5KTsKKyAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZF
bGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgCkBAIC0xMTk5LDcgKzExNzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0
ZV07Ci0gICAgYXV0byBjb2x1bW5zVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pihjb2x1bW5zQXJyYXkpOworICAgIGF1dG8gY29sdW1uc1ZlY3Rv
ciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uc0FycmF5KTsKICAg
ICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEyMTAsNyArMTE4OCw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzQXJyYXkg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlS
b3dzQXR0cmlidXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHJvd3NBcnJheSk7CisgICAgYXV0byByb3dzVmVj
dG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihyb3dzQXJyYXkpOwogICAg
IHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTIyMSw3ICsxMTk5LDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxs
cygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2VsbHNB
cnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhWaXNpYmxl
Q2VsbHMiXTsKLSAgICBhdXRvIGNlbGxzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKKyAgICBhdXRvIGNlbGxzVmVjdG9y
ID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKICAgICBy
ZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCkBAIC0xMzAyLDcgKzEyODAsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiAKIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKLSAgICBOU0FycmF5ICpjb2xS
b3dBcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10sIG5p
bF07CisgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBAW0AoY29sKSwgQChyb3cpXTsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRlcjpj
b2xSb3dBcnJheV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKQEAgLTE0MjgsNyAr
MTQwNiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
TlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxhdGZv
cm1VSUVsZW1lbnQoKV07CisgICAgTlNBcnJheSogYXJyYXkgPSBAW2VsZW1lbnQtPnBsYXRmb3Jt
VUlFbGVtZW50KCldOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFycmF5
IGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTQ0MCw3ICsxNDE4LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQucGxhdGZvcm1VSUVsZW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENo
aWxkcmVuQXR0cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdDplbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIE5TQXJyYXkgKmFycmF5
ID0gQFtlbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChzZWxlY3RlZENoaWxk
cmVuKQogICAgICAgICBhcnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmpl
Y3RzRnJvbUFycmF5OmFycmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5U2V0VmFs
dWU6YXJyYXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRy
aWJ1dGVdOwpAQCAtMTY2Niw4ICsxNjQ0LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVTZWxlY3Rpb24oKQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwot
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xNjc3LDEwICsxNjU1LDEwIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcGFyYW1l
dGVycyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotICAgIFtwYXJhbWV0ZXJz
IHNldE9iamVjdDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkg
Zm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJhbWV0ZXJzIHNldE9i
amVjdDpzdGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0VGV4
dE1hcmtlclJhbmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJlY3Rpb24iXTsKICAg
ICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYTWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpwYXJhbWV0
ZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2OTAsNyArMTY2OCw3IEBAIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudChBCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4
dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRm
b3JtVUlFbGVtZW50KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MDAsNyArMTY3OCw3
IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRl
XTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZU
eXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzQxLDcgKzE3MTksNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIGludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgTlNOdW1iZXIq
IGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpXTsKICAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNzUxLDcgKzE3MjksNyBAQCBpbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5n
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKV07CiAgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmli
dXRlZFN0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xNzY2
LDcgKzE3NDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZQogaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFy
a2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBpbmRl
eE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJbmRl
eEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbaW5kZXhO
dW1iZXIgaW50VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE3
NzcsNyArMTc1NSw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZvclBhcmFtZXRlcjpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3ODYsNyArMTc2
NCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiB2YWxpZE51
bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFy
a2VySXNWYWxpZCIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlkIiBmb3JQYXJh
bWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbdmFs
aWROdW1iZXIgYm9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTE3
OTYsOCArMTc3NCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2Vy
VmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0g
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJl
dmlvdXNNYXJrZXIpOworICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODA2LDggKzE3
ODQsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOworICAgIGlkIG5l
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0
TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xODE2LDcgKzE3OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0U3RyaW5nID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBh
cmFtZXRlcjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgcmV0
dXJuIFt0ZXh0U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCkBAIC0xODQ2LDcgKzE4MjQsNyBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIAogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7
Ci0gICAgaWQgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19i
cmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIGlk
IHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRy
aWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6bWFya2VyUmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVybiBjcmVhdGVKU1N0cmluZ1Jl
ZihzdHJpbmcpOwogfQogCkBAIC0xODU0LDkgKzE4MzIsOSBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJr
ZXJSYQogewogICAgIGlkIHBhcmFtZXRlciA9IG5pbDsKICAgICBpZiAoaW5jbHVkZVNwZWxsQ2hl
Y2spCi0gICAgICAgIHBhcmFtZXRlciA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aW5jbHVkZVNwZWxsQ2hlY2tdLCBA
IkFYU3BlbGxDaGVjayIsIChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKSwgQCJBWFRleHRNYXJrZXJSYW5nZSIsIG5pbF07CisgICAgICAgIHBhcmFtZXRl
ciA9IEB7IEAiQVhTcGVsbENoZWNrIjogaW5jbHVkZVNwZWxsQ2hlY2sgPyBAWUVTIDogQE5PLCBA
IkFYVGV4dE1hcmtlclJhbmdlIjogbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCkgfTsKICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlciA9IChfX2JyaWRnZSBpZCltYXJrZXJS
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVyID0gbWFy
a2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgc3RyaW5nID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CiAg
ICAgcmV0dXJuIGNyZWF0ZUpTU3RyaW5nUmVmKHN0cmluZyk7CiB9CkBAIC0xODY0LDkgKzE4NDIs
OSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IGVuZE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5
KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9fYnJpZGdlIGlkKXN0
YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlkKWVuZE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBA
W3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRN
YXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE4NzUsOCArMTg1Myw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBCiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
ODg1LDggKzE4NjMsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZwogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZU
eXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg5Niw3ICsxODc0
LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW4KIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVj
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTA2LDcgKzE4ODQsNyBAQCBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJG
b3JCb3VuZHMoaW50IHgsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQg
dGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xOTE2LDcgKzE4OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGlu
dCB5KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZv
clBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtlUG9p
bnQoeCwgeSldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdl
IENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTkyNSw3ICsxOTAzLDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQg
eSkKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdWlFbGVtZW50ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCh1aUVsZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE5
MzYsNyArMTkxNCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0Niw3ICsxOTI0LDcgQEAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYp
dGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJr
ZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE5NTUsNyArMTkzMyw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSogbWFya2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdl
LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5U2V0VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9y
QXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRl
XTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTY0LDggKzE5NDIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVj
dGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcgogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlZnRXb3JkVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAg
IGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTc0LDggKzE5NTIsOCBA
QCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxl
ZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgo
X19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJh
bmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29y
ZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTg0LDggKzE5NjIsOCBAQCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvcgogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIg
Zm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVS
ZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIocHJldmlv
dXNUZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xOTk0LDggKzE5NzIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JU
ZQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdv
cmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4
dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0VGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0
V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlk
KXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAg
aWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIobmV4dFRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMDQsOCArMTk4Miw4IEBAIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBD
RlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTIwMTQsOCArMTk5Miw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9y
CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91
c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgcHJldmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIg
Zm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVS
ZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNQYXJhZ3JhcGhT
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihw
cmV2aW91c1RleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMjQsOCArMjAwMiw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0
TWFya2VyCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0
ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4
dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1hcmtlcik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjAzNCw4
ICsyMDEyLDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXgKIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
U2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0NCw4ICsyMDIyLDggQEAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRl
eHRNYXJrZXJSYW5nZUZvclQKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChf
X2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1Rl
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJl
dmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKHByZXZpb3VzVGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1NCw4ICsyMDMyLDggQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50
ZW5jZVN0YXJ0VGV4dE1hcmtlckYKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
IiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlw
ZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5leHRUZXh0TWFya2Vy
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0g
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMGI3NDQ0
OTUyMWMwNjI4ZWE2NzY1YjQzZDBmYmM2N2VjMzYzZGIyZS4uOTkwNmE5ZjdjZjMzODk0ZDNlMTVl
MzlkMmFlMTA2NjdhZTlkYjE3NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQpAQCAtOTIsOSArOTIsOSBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8Z2V0b3B0Lmg+Cisj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+
CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgc3Rh
dGljIHZvaWQgYWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29uc3QgY2hhciogZXhl
Y3V0YWJsZVBhdGgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNTdHJpbmcg
KnB3ZCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZXhlY3V0YWJsZVBhdGhdIHN0
cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07Ci0gICAgW1dlYlBsdWdpbkRhdGFiYXNl
IHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cHdk
XV07CisgICAgW1dlYlBsdWdpbkRhdGFiYXNlIHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpA
W3B3ZF1dOwogICAgIFtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0YWJhc2VdIHJlZnJlc2hd
OwogI2VuZGlmCiB9CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlv
bgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRz
IG9mIHRoZSBnZW5lcmFsIHBhc3RlYm9hcmQKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1N0cmluZ1Bi
b2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRp
ZgogCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0
cigpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVBhc3RlYm9hcmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLm1tCmluZGV4IDExOWMzZGI5ZDM0ZmI2NjY3NzE2YzA5NTI2ZjhjOGQ5ZjI0NTYy
YjUuLmY5MzFjNmFmNTEzNDE0NDIzNGYwYjY3OWU1NDg3YjlmOGVmMGM0ZTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQpA
QCAtODYsNyArODYsNyBAQCArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiAvLyBvZiB0
aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3VuZAogLSAoTlNJbnRl
Z2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiB7Ci0g
ICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dHlw
ZV0gb3duZXI6bmV3T3duZXJdOworICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6QFt0eXBl
XSBvd25lcjpuZXdPd25lcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggZGM5Mjg3ODE3YWUyYWUzOWU3
NmI1NmJmYzZjNjNhZTExYzVkNDI5NS4uMzZhNDA0YjA1OWE0NmZjYmY2YWUyZmQ3MWI3MzY3ODM1
ZDMzOWI5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhG
aWxlczooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2VydChbanNGaWxlUGF0
aHMgaXNLaW5kT2ZDbGFzczpbV2ViU2NyaXB0T2JqZWN0IGNsYXNzXV0pOwogCiAgICAgTlNQYXN0
ZWJvYXJkICpwYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07
Ci0gICAgW3Bib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmls
ZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbcGJvYXJkIGRlY2xhcmVUeXBlczpA
W05TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKIAogICAgIE5TVVJMICpjdXJyZW50
VGVzdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltbbWFpbkZyYW1lIHdlYlZpZXddIG1haW5G
cmFtZVVSTF1dOwogCkBAIC0xNDkzLDggKzE0OTMsOCBAQCAtICh2b2lkKXNlbnRUb3VjaEV2ZW50
T2ZUeXBlOihXZWJFdmVudFR5cGUpdHlwZQogCiAgICAgZm9yIChTeW50aGV0aWNUb3VjaCAqY3Vy
clRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAgICAgW3RvdWNoTG9jYXRpb25zIGFkZE9iamVjdDpb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmN1cnJUb3VjaC5sb2NhdGlvbl1dOwotICAgICAgICBb
dG91Y2hJZGVudGlmaWVycyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZElu
dDpjdXJyVG91Y2guaWRlbnRpZmllcl1dOwotICAgICAgICBbdG91Y2hQaGFzZXMgYWRkT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y3VyclRvdWNoLnBoYXNlXV07CisgICAg
ICAgIFt0b3VjaElkZW50aWZpZXJzIGFkZE9iamVjdDpAKGN1cnJUb3VjaC5pZGVudGlmaWVyKV07
CisgICAgICAgIFt0b3VjaFBoYXNlcyBhZGRPYmplY3Q6QChjdXJyVG91Y2gucGhhc2UpXTsKIAog
ICAgICAgICBpZiAoKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VFbmRlZCkgfHwgKGN1
cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpKQogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5tbQppbmRleCBkOWY1MGQzMDc2NTFjYTI2YzQ1YjQ3MzIwNTYxNzlk
M2NjZGQxNzcyLi4yNDI4NGYwZTA2NzljODM1ZmFlNTFhOTc0ZWQ1NGUyMWY1MmQ4NjQ3IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIubW0KQEAgLTc1LDcgKzc1LDcgQEAgLSAodm9pZCljYW5jZWxOb3RpZmljYXRpb246
KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEID0gW25vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF07CiAgICAgQVNTRVJUKF9ub3RpZmlj
YXRpb25zLmNvbnRhaW5zKG5vdGlmaWNhdGlvbklEKSk7CiAKLSAgICBbKF9fYnJpZGdlIFdlYlZp
ZXcgKilfbm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmljYXRp
b25zRGlkQ2xvc2U6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRMb25nTG9uZzpub3RpZmljYXRpb25JRF1dXTsKKyAgICBbKF9fYnJpZGdlIFdlYlZp
ZXcgKilfbm90aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmljYXRp
b25zRGlkQ2xvc2U6QFtbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6bm90aWZp
Y2F0aW9uSURdXV07CiB9CiAKIC0gKHZvaWQpbm90aWZpY2F0aW9uRGVzdHJveWVkOihXZWJOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9PYmpDQ29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250
cm9sbGVyLm0KaW5kZXggMGIxMjFlOTAxYmE0NTFmZDk3MWI2NDExOWY0MDJkNzZiODUxMGY2Zi4u
YzFhMTBhN2I3NTM2MTBiYzI4YmM4ZjdhY2UyOTEyMWU2NDU2MmEyZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KQEAgLTE0NiwyNSArMTQ2LDIwIEBAIC0gKGlk
KW9iamVjdE9mQ2xhc3M6KE5TU3RyaW5nICopYUNsYXNzCiAgICAgaWYgKFthQ2xhc3MgaXNFcXVh
bFRvU3RyaW5nOkAiTlNDRkJvb2xlYW4iXSkKICAgICAgICAgcmV0dXJuIEBZRVM7CiAgICAgaWYg
KFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNDRk51bWJlciJdKQotICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgIHJldHVybiBAKDEpOwogICAgIGlm
IChbYUNsYXNzIGlzRXF1YWxUb1N0cmluZzpAIk5TQ0ZTdHJpbmciXSkKICAgICAgICAgcmV0dXJu
IEAiIjsKICAgICBpZiAoW2FDbGFzcyBpc0VxdWFsVG9TdHJpbmc6QCJXZWJTY3JpcHRPYmplY3Qi
XSkKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5n
OkAiTlNBcnJheSJdKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICBy
ZXR1cm4gQFtdOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAoTlNBcnJheSAqKWFycmF5T2ZT
dHJpbmcKIHsKLSAgICBOU1N0cmluZyAqc3RyaW5nc1szXTsKLSAgICBzdHJpbmdzWzBdID0gQCJv
bmUiOwotICAgIHN0cmluZ3NbMV0gPSBAInR3byI7Ci0gICAgc3RyaW5nc1syXSA9IEAidGhyZWUi
OwotICAgIE5TQXJyYXkgKmFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdHJpbmdz
IGNvdW50OjNdOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gQFsgQCJvbmUiLCBAInR3
byIsIEAidGhyZWUiIF07CiB9CiAKIC0gKEJPT0wpaWRlbnRpdHlJc0VxdWFsOihXZWJTY3JpcHRP
YmplY3QgKilhIDooV2ViU2NyaXB0T2JqZWN0ICopYgpAQCAtMjE3LDkgKzIxMiwxMSBAQCAtIChC
T09MKXRlc3RXcmFwcGVyUm91bmRUcmlwcGluZzooV2ViU2NyaXB0T2JqZWN0ICopd2ViU2NyaXB0
T2JqZWN0CiAgICAgaWYgKFtbd2ViU2NyaXB0T2JqZWN0IGV2YWx1YXRlV2ViU2NyaXB0OkAiKHsg
fSkiXSBjbGFzc10gIT0gW3dlYlNjcmlwdE9iamVjdCBjbGFzc10pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFt3ZWJTY3JpcHRPYmplY3Qgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6NjY2XSBmb3JLZXk6QCJrZXkiXTsKLSAgICBpZiAoIVtbd2ViU2NyaXB0T2JqZWN0IHZh
bHVlRm9yS2V5OkAia2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fAotICAg
ICAgICAhW1t3ZWJTY3JpcHRPYmplY3QgdmFsdWVGb3JLZXk6QCJrZXkiXSBpc0VxdWFsVG9OdW1i
ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6NjY2XV0pCisgICAgW3dlYlNjcmlwdE9iamVjdCBz
ZXRWYWx1ZTpAKDY2NikgZm9yS2V5OkAia2V5Il07CisgICAgaWQgdmFsdWUgPSBbd2ViU2NyaXB0
T2JqZWN0IHZhbHVlRm9yS2V5OkAia2V5Il07CisgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFz
czpOU051bWJlci5jbGFzc10pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVt2YWx1
ZSBpc0VxdWFsVG9OdW1iZXI6QCg2NjYpXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
W3dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6QCJrZXkiXTsKQEAgLTI3Miw3ICsy
NjksNyBAQCAtICh2b2lkKXN0b3JlV2ViU2NyaXB0T2JqZWN0OihXZWJTY3JpcHRPYmplY3QgKil3
ZWJTY3JpcHRPYmplY3QKIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheQogewotICAgIHJldHVybiBb
TlNBcnJheSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKXRlc3RB
cnJheU9mT2JqZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCAwMDY1OTU2YzgxZGQ3MTM1ZGUwMjdmNDlhMWY1M2JlYzY4MzYwNzJhLi45MzEyZDhiOGE5
NzZmYTVhMmIxNGRhYTRlMzM2MDRlNDI0YmEwNTMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTczLDE5ICsxNzMsMTYgQEAgdm9pZCBUZXN0UnVubmVy
OjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogICAgIFtv
cmlnaW4gcmVsZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0NvbnRl
eHRSZWYgY29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKK3N0YXRpYyBKU09iamVjdFJlZiBvcmln
aW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpvcmlnaW5zKQogewot
ICAgIE5TVUludGVnZXIgY291bnQgPSBbb3JpZ2lucyBjb3VudF07Ci0KLSAgICBKU1ZhbHVlUmVm
IGFycmF5UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgMCwgMCk7Ci0gICAg
SlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJyYXlSZXN1
bHQsIDApOworICAgIGF1dG8gY291bnQgPSBbb3JpZ2lucyBjb3VudF07CisgICAgYXV0byBhcnJh
eSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOwogICAg
IGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgTlNTdHJp
bmcgKm9yaWdpbiA9IFtbb3JpZ2lucyBvYmplY3RBdEluZGV4OmldIGRhdGFiYXNlSWRlbnRpZmll
cl07CiAgICAgICAgIGF1dG8gb3JpZ2luSlMgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0
cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpb3JpZ2luKSk7Ci0gICAgICAgIEpTT2JqZWN0U2V0
UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBKU1ZhbHVlTWFrZVN0cmluZyhj
b250ZXh0LCBvcmlnaW5KUy5nZXQoKSksIDApOworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgb3Jp
Z2luSlMuZ2V0KCkpLCAwKTsKICAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAg
cmV0dXJuIGFycmF5OwogfQogCiBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRoQXBw
bGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tCmluZGV4IDFjYmJkNzFkNGFjMWJh
YWU3MWI0ZjljNDc1Y2FiMjE3YmEyM2MyNDUuLjM1ZWFlOGYwNTNkODc5YWJhNTcxZmI5YjM5ZDAz
NGYyZDg2ODRjNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5w
dXRDb250cm9sbGVyTWFjLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1
dENvbnRyb2xsZXJNYWMubQpAQCAtMzg3LDcgKzM4Nyw3IEBAIC0gKE5TQXJyYXkgKiltYXJrZWRS
YW5nZQogCiAgICAgaWYgKHRleHRJbnB1dCkgewogICAgICAgICBOU1JhbmdlIHJhbmdlID0gW3Rl
eHRJbnB1dCBtYXJrZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRpb25dLCBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07CisgICAg
ICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwogICAgIH0K
IAogICAgIHJldHVybiBuaWw7CkBAIC0zOTksNyArMzk5LDcgQEAgLSAoTlNBcnJheSAqKXNlbGVj
dGVkUmFuZ2UKIAogICAgIGlmICh0ZXh0SW5wdXQpIHsKICAgICAgICAgTlNSYW5nZSByYW5nZSA9
IFt0ZXh0SW5wdXQgc2VsZWN0ZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRp
b25dLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07
CisgICAgICAgIHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwog
ICAgIH0KIAogICAgIHJldHVybiBuaWw7CkBAIC00MTUsMTIgKzQxNSw3IEBAIC0gKE5TQXJyYXkg
KilmaXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3Ro
CiAgICAgICAgICAgICByZWN0Lm9yaWdpbiA9IFtbd2ViVmlldyB3aW5kb3ddIGNvbnZlcnRTY3Jl
ZW5Ub0Jhc2U6cmVjdC5vcmlnaW5dOwogICAgICAgICAgICAgcmVjdCA9IFt3ZWJWaWV3IGNvbnZl
cnRSZWN0OnJlY3QgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6cmVjdC5vcmlnaW4ueF0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZs
b2F0OnJlY3Qub3JpZ2luLnldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDpyZWN0LnNpemUud2lkdGhdLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDpyZWN0LnNpemUuaGVpZ2h0XSwKLSAgICAgICAgICAgIG5pbF07CisgICAgICAgIHJldHVybiBA
WyBAKHJlY3Qub3JpZ2luLngpLCBAKHJlY3Qub3JpZ2luLnkpLCBAKHJlY3Quc2l6ZS53aWR0aCks
IEAocmVjdC5zaXplLmhlaWdodCkgXTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpAQCAtNDg0
LDcgKzQ3OSw3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVkU3RyaW5n
V2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nCiAgICAgaWYgKCFzdWJTdHJpbmdX
aXRoQWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1RleHRBbHRlcm5h
dGl2ZXMqIGFsdGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBp
bml0V2l0aFByaW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0aXZl
U3RyaW5nczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFz
ZV07CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVjdCA9IFtbW05TVGV4
dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dpdGhB
bHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6QFthbHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNl
XTsKICAgICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBA
IC01MzgsNyArNTMzLDcgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKill
dmVudEFycmF5IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGUKIAogICAgIFttb2RpZmll
cnMgcmVsZWFzZV07CiAgICAgCi0gICAgaWQgcmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxlciBj
YWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmlucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbSwgbmlsXV07CisgICAgaWQg
cmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIg
d2l0aEFyZ3VtZW50czpAW2lucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbV1dOwogICAgIGlm
ICghW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJvb2xWYWx1ZSldIHx8ICFb
cmVzdWx0IGJvb2xWYWx1ZV0pIHsKICAgICAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRl
Y2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgW3NlbmRlciBkb0NvbW1hbmRCeVNlbGVjdG9yOkBz
ZWxlY3Rvcihub29wOildOyAvLyBBcHBLaXQgc2VuZHMgbm9vcDogaWYgdGhlIGltZSBkb2VzIG5v
dCBoYW5kbGUgYW4gZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDBlZWFhMDhjYTIyM2JlNDk2Njc2MDRkOWU5ZjY1MTlk
YWZlN2MyYzYuLmVlMzIzNTkyMTUxM2MzZTllMGExMTVjZDBhM2NmOTBjZjZlNzI3NDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpA
QCAtMTY0LDcgKzE2NCw3IEBAIE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29udHJvbGxlck1hYzo6
cGxhdGZvcm1VbmRvTWFuYWdlcigpIGNvbnN0CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6
Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9h
cmQgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7Ci0gICAgW3Bhc3RlYm9hcmQgZGVj
bGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5n
XSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVib2Fy
ZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnRleHQt
PnN0cmluZygpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cAppbmRleCA3OTdjNzBkYzRhNzMzMGQxNzAzYjc0MThmZWM4M2UzZDcxZmZhODAxLi5iNzM4NDBl
ZTA1MGVhOWI5NjM3MDBlMjZlMzJlMzQ5NDY4OGU1Njk0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC01OCwx
NSArNTgsNiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCiB7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYg
b3RoZXIpCi0gICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotewotfQotCi1BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci19Ci0KIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBv
dGhlckVsZW1lbnQpCiB7CiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlQ29tcGFyYWJsZT4gY29tcGFy
YWJsZSA9IGNvbXBhcmFibGVPYmplY3QobV9lbGVtZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQppbmRl
eCA2MjlkMWRmY2YyMzdiN2U2ZDk0OGU1YWQyNzBjNmViMTU5MWZjNGE5Li43YTFkM2Y3NjExNTg3
NDAyYjBkMTRhZDc2NGZiZGRlODNlMzg3MTYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0yNDIsMTIgKzI0
MiwxMCBAQCAtICh2b2lkKXNldFJlc3VsdHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlc3Vs
dHNPYmplY3QgaW5Db250ZXh0OihKU0NvbnRleHRSZQogICAgICAgICAgICAgICAgIGF1dG8gZGV0
YWlsc09iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBkZXRhaWxzVmFsdWUsIG51bGxw
dHIpOwogICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09iamVjdFByb3BlcnRpZXMgPSBKU09i
amVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIGRldGFpbHNPYmplY3QpOwogICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGRldGFpbEluZGV4ID0gMDsgZGV0YWlsSW5kZXggPCBKU1Byb3Bl
cnR5TmFtZUFycmF5R2V0Q291bnQoZGV0YWlsc09iamVjdFByb3BlcnRpZXMpOyArK2RldGFpbElu
ZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBk
ZXRhaWxPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0
eUF0SW5kZXgoY29udGV4dCwgZGV0YWlsc09iamVjdCwgZGV0YWlsSW5kZXgsIG51bGxwdHIpLCBu
dWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgbG9uZyBmcm9tID0gbHJvdW5kbChKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBkZXRhaWxPYmpl
Y3QsIGZyb21Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGxvbmcgdG8gPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGRldGFpbE9iamVjdCwgdG9Qcm9wZXJ0eU5hbWUu
Z2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRhaWwg
c2V0T2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIHRvIC0g
ZnJvbSldIGZvcktleTpOU0dyYW1tYXJSYW5nZV07Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRh
aWxzIGFkZE9iamVjdDpkZXRhaWwuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICBbZGV0YWls
cyBhZGRPYmplY3Q6QHsgTlNHcmFtbWFyUmFuZ2U6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5T
TWFrZVJhbmdlKGZyb20sIHRvIC0gZnJvbSldIH1dOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxzT2JqZWN0UHJvcGVy
dGllcyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCmluZGV4IDQyMzczYzQ3YjY1YzdlZjUwZDg0YjQ5YjdiMGQ2NzNmN2M2MjQ0M2EuLjk5MjU4
ZDVjZDI1YTdjNTA2NzJjMTQ2MmE0MzdlNjg5NGQxNjVhNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
X1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZE5vdGlm
aWNhdGlvbjsKQEAgLTU4LDE1ICs1OSw2IEBAIHN0cnVjdCBOb3RpZmljYXRpb24gewogICAgIH0K
IH07CiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1ZlY3RvcihOU0FycmF5PE5TU3RyaW5nICo+
ICphcnJheSkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnN0cmlu
ZyBpbiBhcnJheSkKLSAgICAgICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIHJldHVybiB2
ZWN0b3I7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25MaXN0
Owogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gbm90aWZpY2F0aW9uVVJMOwogc3RhdGljIFJldGFp
blB0cjxOU1N0cmluZz4gbm90aWZpY2F0aW9uSWRlbnRpZmllcjsKQEAgLTg4LDcgKzgwLDcgQEAg
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBVUkw6KE5TVVJMICopdXJsIGNv
bnRlbnRSdWxlTGlzdElkZW50aWZpZXIKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlm
aWVyIHBlcmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uICopYWN0aW9uIGZv
clVSTDooTlNVUkwgKil1cmwKIHsKLSAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50
aWZpZXIsIHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9u
LmJsb2NrZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIHRvVmVjdG9yKGFjdGlvbi5ub3Rp
ZmljYXRpb25zKSB9KTsKKyAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50aWZpZXIs
IHVybC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9uLmJsb2Nr
ZWRDb29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIG1ha2VWZWN0b3I8U3RyaW5nPihhY3Rpb24u
bm90aWZpY2F0aW9ucykgfSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRh
c2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBkYjAwODg3N2U3NTdjYTYyNWFiN2U3Mjdm
NWE5MDRlYmFjYTdkYWRlLi42OGJlODFiMWI5MzUzY2IwMTFlMTY4YzFkYzRjYTg0ODllZTg5Njhk
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlhbGl6ZUluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmREb21haW5zOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5ICpkb21haW5zVG9D
b21wYXJlID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpAIjEyNy4wLjAuMSIsIEAiYXBwbGUu
Y29tIiwgQCJiYXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0
IiwgQCJ0ZXN0ZG9tYWluMSIsICBAIndlYmtpdC5vcmciLCBuaWxdOworICAgICAgICBOU0FycmF5
ICpkb21haW5zVG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJiYXIu
Y29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0ZG9t
YWluMSIsICBAIndlYmtpdC5vcmciXTsKIAogICAgICAgICBOU0FycmF5ICpzb3J0ZWREb21haW5z
ID0gW2RvbWFpbnMgc29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOkBzZWxlY3RvcihjYXNlSW5zZW5z
aXRpdmVDb21wYXJlOildOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Bhc3RlSW1hZ2UubW0KaW5kZXggM2EyZmM5MGYwYzJiY2VmZDEzNzllNjE4YTgw
ZWE3NTdlNjU5NGI5NS4uOTg0ODlmMGI4NjExZWVhMDA1OGJlNTkwNGMyNTZiNzFiNmM4ZjgyYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUlt
YWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJ
bWFnZS5tbQpAQCAtMzksMTMgKzM5LDEzIEBACiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0
ZUltYWdlRGF0YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRhICpkYXRhKQogewot
ICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW3R5cGVdIG93bmVyOm5pbF07CiAgICAg
W1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YSBmb3JUeXBlOnR5
cGVdOwogfQogI2Vsc2UKIHZvaWQgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQoTlNTdHJpbmcg
KnR5cGUsIE5TRGF0YSAqZGF0YSkKIHsKLSAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0gc2V0SXRlbXM6QFtbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRhdGEg
Zm9yS2V5OnR5cGVdXV07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNl
dEl0ZW1zOkBbQHsgdHlwZTogZGF0YSB9XV07CiB9CiAjZW5kaWYKIApAQCAtMTU1LDggKzE1NSw4
IEBAIFRFU1QoUGFzdGVJbWFnZSwgUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJQYXN0aW5nSW1hZ2UpCiAj
aWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3RlYm9hcmQoaWQgb2Jq
ZWN0KQogewotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlw
ZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6
bmlsXTsKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gd3JpdGVPYmplY3Rz
OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6b2JqZWN0LCBuaWxdXTsKKyAgICBbW05TUGFzdGVi
b2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNGaWxlbmFtZXNQYm9hcmRU
eXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB3
cml0ZU9iamVjdHM6QFtvYmplY3RdXTsKIH0KIAogVEVTVChQYXN0ZUltYWdlLCBQYXN0ZUdJRkZp
bGUpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlV2ViQXJjaGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UGFzdGVXZWJBcmNoaXZlLm1tCmluZGV4IGI3ODVmNWM0ZjJiZDcwMmEzMjViMzcwNTA0NmJlZTU5
ODI2MzExOGIuLmNjN2Y0NDM4YzgyZGY5NGIyOTBkNzc3YTZiYzZhZWI5MjdjNzdkODggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNo
aXZlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVX
ZWJBcmNoaXZlLm1tCkBAIC0yNDksNyArMjQ5LDcgQEAgVEVTVChQYXN0ZVdlYkFyY2hpdmUsIFdl
YkFyY2hpdmVUeXBlSWRlbnRpZmllcikKICAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbV2Vi
QXJjaGl2ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291cmNlLmdldCgpIHN1
YnJlc291cmNlczpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsKIAogICAgIE5TUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwotICAgIFtw
YXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOkBbKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVd
IG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2ZSBkYXRhXSBmb3JU
eXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJD
b250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDk0MTJhNGY1NmZjNmQ0Nzk3MWE0YWVi
Y2VmNTljOTRkYTViNjdmNDQuLjgxYjZmZDgzYmI0ZjFkMjgwMzk4N2NmNjUyNDUyY2Q0NjczNmE4
MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC04MTcsNyArODE3LDcgQEAgVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQog
CiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQog
ewotICAgIFdLVXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBbW1tXS1VzZXJTY3Jp
cHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlmaWNhdGlv
bicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3Rh
cnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0FycmF5IGFycmF5XSBs
ZWdhY3lCbGFja2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQg
ZGVmYXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZRVNdIGF1
dG9yZWxlYXNlXTsKKyAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZpY2F0aW9uID0gW1tb
V0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBu
b3RpZmljYXRpb24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXRE
b2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10gbGVn
YWN5QmxhY2tsaXN0OkBbXSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVz
dDovLy9zY3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRlZmF1bHRDbGllbnRX
b3JsZF0gZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFzZV07CiAg
ICAgV0tVc2VyU2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5p
dFdpdGhTb3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmplY3Rpb25U
aW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFtZU9u
bHk6WUVTXSBhdXRvcmVsZWFzZV07CiAKICAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9IFtb
VGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4
IDk5NzUwNWJjNDBkYzA4N2EwNWU5M2M4Njk4ZTkwOGM0YjlkZGEzYzguLmM0NGYwZGFiZGZlMThh
YWIwNTQ4Y2M5MmM3MzIzNzM1MTIwODBkN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTcx
Niw3ICsxNzE2LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgVGFyZ2V0ZWRQcmV2aWV3
c1doZW5Ecm9wcGluZ0ltYWdlcykKICAgICBbc2Vjb25kSXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAi
YXBwbGUiXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpEcm9wQW5p
bWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBbc2ltdWxhdG9yIHNl
dEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmZpcnN0SXRl
bS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKSwgbmlsXSBkZWZhdWx0RHJvcFByZXZpZXdzOltOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6Zmlyc3RQcmV2aWV3LmdldCgpLCBzZWNvbmRQcmV2aWV3Lmdl
dCgpLCBuaWxdXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAW2Zp
cnN0SXRlbS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW2Zp
cnN0UHJldmlldy5nZXQoKSwgc2Vjb25kUHJldmlldy5nZXQoKV1dOwogICAgIFtzaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSg0NTAsIDQ1MCldOwogCiAg
ICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10uY291bnQsIDJVKTsK
QEAgLTE3NTUsNyArMTc1NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIFRhcmdldGVk
UHJldmlld0lzQ2xpcHBlZFdoZW5Ecm9wcGluZ1RhbGxJbWFnZSkKICAgICBbaXRlbSBzZXRTdWdn
ZXN0ZWROYW1lOkAiZ3JlZW4iXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRp
bWluZzpEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBb
c2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6aXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6cHJldmlldy5nZXQoKV1dOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlk
ZXJzOkBbaXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW3ByZXZpZXcuZ2V0KCldXTsK
ICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2Uo
MzUwLCAzNTApXTsKIAogICAgIEVYUEVDVF9FUShbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmll
d3NdLmNvdW50LCAxVSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA3YTdhYzY2YzFjNDUwMDVk
OTk1NmQ1ZTZjYjgxNzVmNDk0YjE0M2JmLi5mYTQ0ZTI2NmI1ZGUxZTVmNzcyOWY3ZjMwYzEzZDg1
MzgyMWZkNWZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTM3Miw3ICszNzIsNyBAQCBURVNU
KFdLSFRUUENvb2tpZVN0b3JlLCBDcmVhdGlvblRpbWUpCiAgICAgW2Nvb2tpZVByb3BlcnRpZXMg
c2V0T2JqZWN0OkAiY29va2llVmFsdWUiIGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CiAgICAg
W2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiLnd3dy53ZWJraXQub3JnIiBmb3JLZXk6TlNI
VFRQQ29va2llRG9tYWluXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIvcGF0
aCIgZm9yS2V5Ok5TSFRUUENvb2tpZVBhdGhdOwotICAgIFJldGFpblB0cjxOU051bWJlcj4gY3Jl
YXRpb25UaW1lID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MTAwMDAwXTsKKyAgICBSZXRh
aW5QdHI8TlNOdW1iZXI+IGNyZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJv
cGVydGllcyBzZXRPYmplY3Q6Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsK
ICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tp
ZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1t
CmluZGV4IDliYjM2ZDRhZmExNzVmMGUxMjNjMWNhZjVlNzkwN2FhZjZmMjc4ZmYuLmI5NThmM2Iy
M2QwYmFjOTM5ZWUwZThjYjA1MzY4ZmQ1ZTdkOTM3NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1t
CkBAIC0yMDEsNyArMjAxLDcgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJlbW92ZU5vblBl
cnNpc3RlbnRDcmVkZW50aWFscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
XSBmb3JEYXRhUmVjb3JkczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZXhwZWN0ZWRSZWNvcmQu
Z2V0KCldIGNvbXBsZXRpb25IYW5kbGVyOl4odm9pZCkgeworICAgIFt3ZWJzaXRlRGF0YVN0b3Jl
IHJlbW92ZURhdGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlw
ZUNyZWRlbnRpYWxzXSBmb3JEYXRhUmVjb3JkczpAW2V4cGVjdGVkUmVjb3JkLmdldCgpXSBjb21w
bGV0aW9uSGFuZGxlcjpeKHZvaWQpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggMTNhM2U5OGViYWJiZGZlZWFhMjRkZDg4NjEzOGNkZTcz
MWJmNmI4NC4uYzkwZWExY2IyYTI4ZWNiZWZmYWUyM2VkZTVhZDY5ZTM1ZThlODUyMyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTIxOCw3ICsyMTgsNyBAQCBz
dGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJv
Y2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgICAgICBFWFBFQ1RfRVEoW3JlY29yZHMgY291bnRd
LCAodW5zaWduZWQgbG9uZykzKTsKICAgICAgICAgZm9yIChpZCByZWNvcmQgaW4gcmVjb3Jkcykg
ewogICAgICAgICAgICAgaWYgKFtbcmVjb3JkIGRpc3BsYXlOYW1lXSBpc0VxdWFsOiBAImFwcGxl
LmNvbSJdKSB7Ci0gICAgICAgICAgICAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0
eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cmVjb3Jk
XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICAgICAgICAgIFtkYXRhU3RvcmUgcmVt
b3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6QFtyZWNvcmRdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZnJhbWVJREJQYXRoLmdldCgp
LnBhdGhdKTsKICAgICAgICAgICAgICAgICB9XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbQppbmRleCAxMDZhMjVhYTc0YjliNzFk
N2FiNmU4MTdkMGNjNTk0MTAwNTNiNDhlLi40YjI5ZTc5ZGI3ZDg3NjNlMGJhZDFlNmIzYmEyMjlh
ZWY3MWIzYmUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJW
aWV3Q2FuUGFzdGVVUkwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2Vi
Vmlld0NhblBhc3RlVVJMLm1tCkBAIC0zNyw3ICszNyw3IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBX
ZWJWaWV3Q2FuUGFzdGVVUkwpCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF07
CiAgICAgW3dlYlZpZXcgc2V0RWRpdGFibGU6WUVTXTsKIAotICAgIFtbTlNQYXN0ZWJvYXJkIGdl
bmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5T
VVJMUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNVUkxQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAg
IFtbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iXSB3cml0ZVRv
UGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CiAgICAgW3dlYlZp
ZXcgcGFzdGU6bmlsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0KaW5kZXggNThlMDdjMTQwZWVmY2FiNDViOGUy
ZGU3M2M4MGRmNzFlZGVmYjA4Ni4uZmEyZTJhYTk2N2FiYTIzMWE3NzA3MGQyYzE3MGExOGViMWJk
ZjhhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0Nh
blBhc3RlWmVyb1BuZy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJW
aWV3Q2FuUGFzdGVaZXJvUG5nLm1tCkBAIC0zOCw3ICszOCw3IEBAIFRFU1QoV2ViS2l0TGVnYWN5
LCBXZWJWaWV3Q2FuUGFzdGVaZXJvUG5nKQogICAgIFt3ZWJWaWV3IHNldEVkaXRhYmxlOllFU107
CiAgICAgCiAgICAgLy9wYXN0aW5nIGEgMHgwIGltYWdlIGFzIHBkZiBib2FyZCB0eXBlLiBSZWZl
cnJpbmcgdG8gPHJkYXI6Ly9wcm9ibGVtLzExMTQxOTIwPgotICAgIFtbTlNQYXN0ZWJvYXJkIGdl
bmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5T
UERGUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNQREZQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAg
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiMCIgd2l0aEV4dGVuc2lv
bjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXSB3cml0ZVRv
UGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CiAgICAgW3dlYlZp
ZXcgcGFzdGU6bmlsXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQpp
bmRleCA2OWY0NDg5ZTc3ZmEwYjY2ODY1YjFiYTY1MWE3MmM1ZTUxMTYwZTdhLi5hMGYzNDgxMzRh
ZTQ1NDgxZTRiNmVlZjhlYmJiOWU4NmFlYzJmNjE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3Jp
cHRDb250ZXh0Lm1tCkBAIC05NCw3ICs5NCw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXcgZGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRlCiAg
ICAgfTsKIAogICAgIGNvbnRleHRbQCJjYWxsTWVCYWNrIl0gPSBeKEpTVmFsdWUgKmZ1bmN0aW9u
VmFsdWUpIHsKLSAgICAgICAgW2Z1bmN0aW9uVmFsdWUgY2FsbFdpdGhBcmd1bWVudHM6W05TQXJy
YXkgYXJyYXldXTsKKyAgICAgICAgW2Z1bmN0aW9uVmFsdWUgY2FsbFdpdGhBcmd1bWVudHM6QFtd
XTsKICAgICB9OwogCiAgICAgY29udGV4dFtAImNoZWNrRm9yTXlDdXN0b21Qcm9wZXJ0eSJdID0g
XihKU1ZhbHVlICplbGVtZW50KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9tYWluSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQppbmRleCBj
ZjA4YTc0ODA5YmUxMDFkOGViMzk0MTFmMzQyYjY1MDIzOTJlYTgxLi4wMWM3ZDI3MzYxNTY3MWJl
MDA4ZjIxODhmY2QzYzdlMWZkMDBiNWY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9tYWluSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0K
QEAgLTM3LDkgKzM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGlm
ICghYXJndW1lbnREb21haW4pCiAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEBZRVMsICAgIEAiV2ViS2l0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0
ID0gQHsgQCJXZWJLaXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nIjogQFlFUyB9OwogCiAgICAg
W2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKICAgICBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1
bWVudERvbWFpbiBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCmluZGV4IDNh
MzNjMmRhYmNjMzAyMDVlYmE3M2IzZDQ4OGJhNDgwOGNmMjNmOTguLjZmNjM0ZjE3NjZjMmMxMDk4
MTcyMWIwMTU0M2VhODA3MTRkZDRkYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KQEAgLTM2LDE0ICszNiwxNCBA
QCB2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERv
bWFpbl0gbXV0YWJsZUNvcHldOwogICAgIGlmICghYXJndW1lbnREb21haW4pCiAgICAgICAgIGFy
Z3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICAK
LSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50ZWdlcjo0XSwgICBAIkFwcGxlQW50aUFsaWFzaW5nVGhyZXNob2xkIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOjBdLCAgIEAiQXBw
bGVGb250U21vb3RoaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQE5PLCAgICAgQCJO
U1Njcm9sbEFuaW1hdGlvbkVuYWJsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBATk8s
ICAgICBAIk5TT3ZlcmxheVNjcm9sbGVyc0VuYWJsZWQiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBAIkFsd2F5cyIsICAgICAgICAgICAgICAgICAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxC
YXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKworICAgIE5TRGljdGlvbmFy
eSAqZGljdCA9IEB7CisgICAgICAgIEAiQXBwbGVBbnRpQWxpYXNpbmdUaHJlc2hvbGQiOiBAKDQp
LAorICAgICAgICBAIkFwcGxlRm9udFNtb290aGluZyI6IEAoMCksCisgICAgICAgIEAiTlNTY3Jv
bGxBbmltYXRpb25FbmFibGVkIjogQE5PLAorICAgICAgICBAIk5TT3ZlcmxheVNjcm9sbGVyc0Vu
YWJsZWQiOiBATk8sCisgICAgICAgIEAiQXBwbGVTaG93U2Nyb2xsQmFycyI6IEAiQWx3YXlzIiwK
KyAgICB9OwogCiAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpk
aWN0XTsKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xh
dGlsZURvbWFpbjphcmd1bWVudERvbWFpbiBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvbWFjL21haW5NYWMubW0KaW5kZXggN2NhOTllNmEzYjVlNDA4MmVhZmNkOTQ3NDQ5
MGFjMDk1ZmYwZDQzYy4uYmU3ZDg3MjY3ZWMyMjE1NDNhNTQ5ZmUyYjg4ZDFjODMyOTkyZmEyNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCkBAIC0zOSw5ICszOSw3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpZiAoIWFyZ3VtZW50RG9tYWluKQogICAgICAg
ICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAg
ICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgICBAWUVTLCAgICBAIldl
YktpdExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBuaWxdOworICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IEB7IEAiV2ViS2l0TGlua2VkT25PckFm
dGVyRXZlcnl0aGluZyI6IEBZRVMgfTsKIAogICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVz
RnJvbURpY3Rpb25hcnk6ZGljdF07CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3Vt
ZW50RG9tYWluXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCBhNWQ1OGVjYzE2
MjA3Zjg0OWQ3NGMyZGYxMWYzOTg2Njg5YTlmNDliLi41YjY3ODExMDEyNTEzOGQ2MmJkZGI4YjMz
MzM0ZjRkMjQ1MWYwMzUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC05MCw3
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxOb3RpZmljYXRpb25IYW5kbGVyPiBtX2ds
b2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2dsb2JhbE5vdGlm
aWNhdGlvbkhhbmRsZXI7CiAjZWxpZiBVU0UoQVRLKQogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKaW5kZXggMDQxZjgxYmM3NmQ1MDM2YjlhOTI5
ZTkwYTJjNjJlNzExNzhiZWIzYy4uOGZjOTRmNmY1NDk0ODgzNTU1YjE0NGIxNDUwMzA2MjA0ODE2
MDFlNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaApAQCAtMzIsNyArMzIsNyBAQAog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRl
ZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyOwordXNpbmcgUGxhdGZvcm1UZXh0TWFya2Vy
ID0gaWQ7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJrZXI7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKaW5kZXggMThjMThkNDhlNDFj
ZGYwOThhYzkxNTg4ZmY2NjMxMTA2Mjk5MTIzZi4uNzgxODJlZTkwYzRlMjc5NzU2ZmM2OTU4YTQx
MmUxY2FiMjQwZTI2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcg
KzMyLDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UgPSBpZDsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlOwogI2VuZGlmCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlJik7CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPFBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyAgICBSZXRhaW5QdHI8aWQ+
IG1fdGV4dE1hcmtlclJhbmdlOwogI2Vsc2UKICAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBt
X3RleHRNYXJrZXJSYW5nZTsKICNlbmRpZgpAQCAtNjcsNCArNjcsOCBAQCBwcml2YXRlOgogaW5s
aW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIAorI2lm
ZGVmIF9fT0JKQ19fCitpbmxpbmUgT3B0aW9uYWw8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4qLCBpZCByYW5nZSkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZShyYW5nZSkgfSB9OyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDM1ZmIzNzA3MTZiMmFjM2U5
MjVlMTY3NmM1MmUxMjJhYTgxYmI3N2YuLjE0MWRiMjBhZWI5MmE4MTg0N2U5MGQ4OGEwNTk0NDA3
ZTY4YzZlYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0zNSwxMSArMzUsOCBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVm
IF9fT0JKQ19fCi10eXBlZGVmIGlkIFBsYXRmb3JtVUlFbGVtZW50OwotI2Vsc2UKLXR5cGVkZWYg
c3RydWN0IG9iamNfb2JqZWN0KiBQbGF0Zm9ybVVJRWxlbWVudDsKLSNlbmRpZgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KK3VzaW5nIFBsYXRmb3JtVUlFbGVtZW50ID0gaWQ7CiAjZWxpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC00OSwxNCAr
NDYsNiBAQCB0eXBlZGVmIEdSZWZQdHI8QXRrT2JqZWN0PiBQbGF0Zm9ybVVJRWxlbWVudDsKIHR5
cGVkZWYgdm9pZCogUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENP
Q09BKQotI2lmZGVmIF9fT0JKQ19fCi10eXBlZGVmIGlkIE5vdGlmaWNhdGlvbkhhbmRsZXI7Ci0j
ZWxzZQotdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIE5vdGlmaWNhdGlvbkhhbmRsZXI7Ci0j
ZW5kaWYKLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CkBAIC02Niw3ICs1NSwxMyBAQCBwdWJsaWM6
CiAKICAgICB+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgaWQgcGxhdGZvcm1VSUVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0K
KyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVVJRWxlbWVudCBwbGF0
Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorI2VuZGlmCisKICAgICB2aXJ0
dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNsYXNzKCk7CiAKICAgICBzdGF0aWMgSlNPYmplY3RSZWYg
bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQmKTsKQEAgLTM1NiwxMiArMzUxLDE1IEBAIHByaXZhdGU6CiAgICAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCk7CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CiAKKyNpZiAhUExBVEZP
Uk0oQ09DT0EpCiAgICAgUGxhdGZvcm1VSUVsZW1lbnQgbV9lbGVtZW50OwotICAgIAorI2VuZGlm
CisKICAgICAvLyBBIHJldGFpbmVkLCBwbGF0Zm9ybSBzcGVjaWZpYyBvYmplY3QgdXNlZCB0byBo
ZWxwIG1hbmFnZSBub3RpZmljYXRpb25zIGZvciB0aGlzIG9iamVjdC4KICNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTm90aWZpY2F0aW9uSGFuZGxlciBt
X25vdGlmaWNhdGlvbkhhbmRsZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2VsZW1lbnQ7CisgICAg
UmV0YWluUHRyPGlkPiBtX25vdGlmaWNhdGlvbkhhbmRsZXI7CiAKICAgICB2b2lkIGdldExpbmtl
ZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAg
ICAgdm9pZCBnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiYpOwpAQCAtMzc4LDQgKzM3Niw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAgICAg
CisjaWZkZWYgX19PQkpDX18KK2lubGluZSBPcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiosIGlkIGVsZW1lbnQpIHsgcmV0dXJuIHsgeyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoZWxlbWVudCkgfSB9OyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL0Fj
dGl2YXRlRm9udHNDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCmluZGV4IGQxY2Y3ZjU1MDRlZWUwYmMzMjlm
MTkzZDI1NWI2ZjJjNDQzOTJjZTEuLmRiM2MyODkzMWQwNWY1NDIwNmIxYmY1ZDUyOTgxNDg0OTk4
YWEyNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
Y29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCkBAIC0zMCw3ICszMCw2
IEBACiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZvbnRNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tTdHJpbmdDRi5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3
dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lm
IFVTRShBUFBLSVQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1t
CmluZGV4IDFmMTA3Y2U3OWQ3ZTQzYjhkODMwODA4ZDMxMWRmYzdhYjY4YTQwMTUuLjUzNzE4ZmU1
YWJkZGViMDc2YzJlMzNkODQxMWI2NTFjNmZkNjZmYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9T
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VySU9TLm1tCkBAIC0yOSw4ICsyOSw3IEBAIG5hbWVzcGFjZSBXVFIg
ewogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIo
KSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBb
cGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0KaW5kZXggMzY0MTc1NTg1ZTk3MWU3YWFmNjcyYWFhODc5YjZkZDE3ZmE0
ZGMwNi4uNTZkMjdiNGMwZjBmNzY0NDRiYjBlYWRjOTgxOGU4YWNkNmU1NjhiZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0yNCw5ICsyNCwxMCBAQAog
ICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oIgorCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbXBvcnQgIkluamVjdGVk
QnVuZGxlUGFnZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CkBAIC0zNiw2
ICszNyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2Fs
bGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQp
OwogCkBAIC0xMzcsMTMgKzEzOSw2IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
Y3JlYXRlRW1wdHlKU1N0cmluZygpCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMobnVsbHB0ciwgMCkpOwogfQogCi1zdGF0aWMgdm9pZCBjb252ZXJ0TlNBcnJh
eVRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCi17Ci0gICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJh
eSBjb3VudF07Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAg
ICAgICAgZWxlbWVudFZlY3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRl
KFthcnJheSBvYmplY3RBdEluZGV4OmldKSk7Ci19ICAgIAotCiBzdGF0aWMgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcgKmF0dHJp
YnV0ZSwgTlNTdHJpbmcgKnZhbHVlKQogewogICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIoW2F0
dHJpYnV0ZSBsZW5ndGhdKTsKQEAgLTE2MCwyMyArMTU1LDE3IEBAIHN0YXRpYyBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyAqYXR0
cmlidXRlCiAgICAgCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkK
LSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAgIC8vIEZJWE1FOiBhcEB3ZWJr
aXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZSZXRhaW5lZC9DRlJlbGVhc2Ug
dG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCi0gICAgW21fZWxlbWVudCByZXRhaW5dOwog
fQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQogICAgIDogSlNXcmFwcGFibGUoKQogICAg
ICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxl
cigwKQogewotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQogewotICAgIFttX2VsZW1lbnQgcmVsZWFz
ZV07CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpCkBAIC0yNDMsMjYgKzIzMiwyMCBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0
UG9pbnQoaW50IHgsIGludAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoZWxlbWVudCk7CiB9CiAgICAgCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNU
b09iamVjdEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudHMpCitzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxl
bWVudHNUb09iamVjdEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJl
ZiBhcnJheVJlc3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51
bGxwdHIpOwotICAgIEpTT2JqZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIGFycmF5UmVzdWx0LCBudWxscHRyKTsKLSAgICBzaXplX3QgZWxlbWVudENvdW50ID0gZWxl
bWVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyAr
K2kpCi0gICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2Jq
LCBpLCBKU09iamVjdE1ha2UoY29udGV4dCwgZWxlbWVudHNbaV0tPndyYXBwZXJDbGFzcygpLCBl
bGVtZW50c1tpXS5nZXQoKSksIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBhcnJheVJlc3Vs
dDsKKyAgICBhdXRvIGFycmF5ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgbnVsbHB0
ciwgbnVsbHB0cik7CisgICAgYXV0byBzaXplID0gZWxlbWVudHMuc2l6ZSgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRz
W2ldLT53cmFwcGVyQ2xhc3MoKSwgZWxlbWVudHNbaV0uZ2V0KCkpLCBudWxscHRyKTsKKyAgICBy
ZXR1cm4gYXJyYXk7CiB9Ci0KIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxl
bWVudHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CiAgICAgSlNDb250ZXh0
UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1l
KTsKLQogICAgIE5TQXJyYXkgKmVsZW1lbnRzRm9yUmFuZ2UgPSBbbV9lbGVtZW50IGVsZW1lbnRz
Rm9yUmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCldOwotICAgIFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGVsZW1lbnRzOwotICAgIGNvbnZlcnROU0FycmF5
VG9WZWN0b3IoZWxlbWVudHNGb3JSYW5nZSwgZWxlbWVudHMpOwotICAgIHJldHVybiBjb252ZXJ0
RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKKyAgICByZXR1cm4gY29u
dmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4oZWxlbWVudHNGb3JSYW5nZSkpOwogfQogCiB1bnNpZ25lZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCogZWxlbWVudCkKQEAgLTExMDAsOSArMTA4Myw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVtb3ZlU2VsZWN0aW9uKCkKIC8vIFRleHQgbWFya2VycwogUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewotICAgIGlkIHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2Vy
Rm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQg
ZW5kVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJz
ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJr
ZXIsIG5pbF07CisgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRN
YXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlk
IGVuZFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0g
QFtzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJr
ZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vy
c107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0
TWFya2VyUmFuZ2UpOwpAQCAtMTExMCw3ICsxMDkzLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFu
Z2UKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIHN0YXJ0LCBib29sIGZvcndhcmQpCiB7Ci0gICAgaWQgbWlzc3BlbGxpbmdSYW5n
ZSA9IFttX2VsZW1lbnQgbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2U6KGlkKXN0YXJ0LT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaWQgbWlzc3BlbGxp
bmdSYW5nZSA9IFttX2VsZW1lbnQgbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2U6c3RhcnQtPnBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKG1pc3NwZWxsaW5nUmFuZ2UpOwogfQog
CkBAIC0xMTIyLDQ3ICsxMTA1LDQ2IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFCiAKIGludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFu
Z2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7ICAgIAotICAgIHJldHVybiBbbV9lbGVtZW50
IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gW21fZWxlbWVu
dCBsZW5ndGhGb3JUZXh0TWFya2VyczpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07
CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewotICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtl
ckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlk
IHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtlcjp0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpjcmVhdGUocHJldmlvdXNNYXJrZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAgIGlkIG5leHRNYXJrZXIg
PSBbbV9lbGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFya2Vy
Rm9yTWFya2VyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKIH0KIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsK
LSAgICBpZCB0ZXh0TWFya2VycyA9IChpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKTsKLSAgICBpZiAoIXRleHRNYXJrZXJzIHx8ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgIGlkIHRleHRNYXJrZXJzID0gbWFya2VyUmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWYgKCFbdGV4dE1hcmtlcnMgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQogICAgICAgICByZXR1cm4gY3JlYXRlRW1wdHlKU1N0
cmluZygpOwogICAgIHJldHVybiBbW21fZWxlbWVudCBzdHJpbmdGb3JUZXh0TWFya2Vyczp0ZXh0
TWFya2Vyc10gY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7Ci0gICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOworICAgIE5T
QXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCks
IGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlkIHRleHRNYXJrZXJSYW5n
ZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2Vy
UmFuZ2UpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZCly
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IHJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnMgaXNT
dGFydDpZRVNdOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRl
eHRNYXJrZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQp
cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSBy
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlz
U3RhcnQ6Tk9dOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRl
eHRNYXJrZXIpOwogfQpAQCAtMTE5NCw3ICsxMTc2LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50
IHgKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogbWFya2VyKQogewotICAgIGlkIG9iaiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9i
amVjdEZvclRleHRNYXJrZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IGlkIG9iaiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXI6bWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWYgKG9iaikKICAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShvYmopOwogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTI5NCw3ICsxMjc2LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGMKIHsKICAgICBO
U0FycmF5ICp0ZXh0TWFya2VycyA9IG5pbDsKICAgICBpZiAoc3RhcnRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpICYmIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCkpCi0gICAgICAg
IHRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooaWQpc3RhcnRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KSwgbmlsXTsKKyAgICAgICAgdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4
dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2Vyczp0ZXh0
TWFya2VycyB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnRleHRdXTsK
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJr
ZXJSYW5nZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9JbmplY3RlZEJ1bmRsZUlPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCmluZGV4IDQyOTA4YmVmZWY3
YTU4ZjdhZTA0ZjA1ODA1MzE0ZTVhNDVlNGUzZWQuLmJkNzJmOTg0NWMwMTM3MGIxZmRhOGVkN2Qz
YmI0NzkyOWNlYTBkYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCkBAIC0zNiwxMiAr
MzYsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBlUmVm
KQogCiAgICAgLy8gTGFuZ3VhZ2Ugd2FzIHNldCB1cCBlYXJsaWVyIGluIG1haW4oKS4gRG9uJ3Qg
Y2xvYmJlciBpdC4KICAgICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnREb21h
aW5dIHZhbHVlRm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKLQotICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBkaWN0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdKTsKLSAgICBpZiAobGFuZ3VhZ2VzKQotICAgICAgICBbZGljdCBzZXRPYmplY3Q6
bGFuZ3VhZ2VzIGZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07Ci0KLSAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjpkaWN0LmdldCgpIGZv
ck5hbWU6TlNBcmd1bWVudERvbWFpbl07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
bGFuZ3VhZ2VzID8gQHsgQCJBcHBsZUxhbmd1YWdlcyI6IGxhbmd1YWdlcyB9IDogQHsgfTsKKyAg
ICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFp
bjpkaWN0aW9uYXJ5IGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggY2Y3Nzhj
NmUxZDRhYTBhOGM1MzQzNGM3ODgyZTY5ZjhhY2I0NmVkMS4uMzlhYWEyNGE5NzQwYThjMjMwNDZh
YjhmNTMyZDk4NzMxY2QyOTU1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
Lm1tCkBAIC01NSw3ICs1NSw3IEBAIE5TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGljYXRlUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlCiAgICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IFtOU011dGFibGVEaWN0aW9u
YXJ5IGRpY3Rpb25hcnldOwogICAgIAogICAgIGlmIChzdGFydEVsZW1lbnQgJiYgc3RhcnRFbGVt
ZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpKQotICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0
ZSBzZXRPYmplY3Q6KGlkKXN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6
QCJBWFN0YXJ0RWxlbWVudCJdOworICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRP
YmplY3Q6c3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRF
bGVtZW50Il07CiAgICAgCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihp
c0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZp
b3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlck1hYy5tbQppbmRleCA1ZWI5NWYyMjc0MDFmODdkNmYzOWY0ZDU0OWMw
ZmNjODU0NmQ3YTg3Li5iYTI4OWIxZDZjZGU3YTIyMTEzMmRhMThjMjBmOTYyOTMyZTJkMzk4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQpAQCAtMjksOCAr
MjksNyBAQCBuYW1lc3BhY2UgV1RSIHsKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3RoZXIpCiB7Ci0gICAgcmV0dXJuIFso
X19icmlkZ2UgaWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooX19icmlkZ2UgaWQpb3Ro
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gW3BsYXRmb3JtVGV4dE1hcmtl
cigpIGlzRXF1YWw6b3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RSCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmlu
ZGV4IDliNTliZmNlMGY0YzQ4NTViZmNkZmFlNjVkNDU5NWU0YmY2NjFjYTMuLjI3ZjBmYjVlMTgw
MDlkNTU5ZDIxNDg2ZTQ4OTM0YmEyZmFhZDc3YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlRnJh
bWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4K
LQorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5T3duc0F0dHJpYnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRl
IEAiQVhPd25zIgpAQCAtOTIsMjcgKzkyLDE5IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gY3JlYXRlRW1wdHlKU1N0cmluZygpCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCitB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGlkIGVsZW1lbnQp
CiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigw
KQogewotICAgIC8vIEZJWE1FOiBhcEB3ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQg
dG8gYmUgQ0ZSZXRhaW5lZC9DRlJlbGVhc2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMu
Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVy
KQogICAgIDogSlNXcmFwcGFibGUoKQogICAgICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkK
LSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAgIFttX2VsZW1lbnQgcmV0YWlu
XTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
KQogewotICAgIC8vIFRoZSBub3RpZmljYXRpb24gaGFuZGxlciBzaG91bGQgYmUgbmlsIGJlY2F1
c2UgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBp
biB0aGUgdGVzdC4KLSAgICBBU1NFUlQoIW1fbm90aWZpY2F0aW9uSGFuZGxlcik7Ci0gICAgW21f
ZWxlbWVudCByZWxlYXNlXTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vx
dWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKQEAgLTE2NCw5ICsxNTYs
OSBAQCBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwg
aWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplYwogICAgIHJldHVybiBbdmFsdWVPYmplY3QgZGVz
Y3JpcHRpb25dOwogfQogCi1zdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQg
YWNjZXNzaWJpbGl0eU9iamVjdCkKK3N0YXRpYyBOU1N0cmluZyAqYXR0cmlidXRlc09mRWxlbWVu
dChpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0KQogewotICAgIE5TQXJyYXkqIHN1cHBvcnRlZEF0dHJp
YnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNd
OworICAgIE5TQXJyYXkgKnN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVj
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOwogCiAgICAgTlNNdXRhYmxlU3RyaW5nKiBh
dHRyaWJ1dGVzU3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7CkBA
IC0yMTksMTcgKzIxMSw2IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29uY2F0
ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlCiAgICAgcmV0dXJuIGFk
b3B0KEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIFZlY3RvcjxUPiBjb252
ZXJ0TlNBcnJheVRvVmVjdG9yKE5TQXJyYXkgKmFycmF5KQotewotICAgIFZlY3RvcjxUPiB2Owot
ICAgIE5TVUludGVnZXIgY291bnQgPSBhcnJheS5jb3VudDsKLSAgICB2LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOwotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyAr
K2kpCi0gICAgICAgIHYuYXBwZW5kKFQ6OlZhbHVlVHlwZTo6Y3JlYXRlKFthcnJheSBvYmplY3RB
dEluZGV4OmldKSk7Ci0gICAgcmV0dXJuIHY7Ci19Ci0KIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKIHsKICAgICBOU011dGFibGVTdHJpbmcqIGFs
bEVsZW1lbnRTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CkBAIC0zMjgsMzQgKzMw
OSwzNCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICptaXNzcGVsbGluZ1NlYXJjaFBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVGb3JDcml0ZXJpYShBY2Nlc3NpYgogewogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnBhcmFtZXRlcnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKIAotICAg
IFtwYXJhbWV0ZXJzIHNldE9iamVjdDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCkgZm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJh
bWV0ZXJzIHNldE9iamVjdDpzdGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6
QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoQm9vbDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJl
Y3Rpb24iXTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4+JiBlbGVtZW50VmVjdG9yKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIE5TQXJyYXkqIGxpbmtlZEVsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0g
ICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+PihsaW5rZWRFbGVtZW50cyk7CisgICAgZWxlbWVudFZlY3RvciA9IG1h
a2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihsaW5rZWRFbGVtZW50cyk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+JiBlbGVtZW50VmVjdG9yKQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRE
b2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVt
ZW50VmVjdG9yKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkq
IGxpbmtFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhMaW5rVUlFbGVtZW50cyJdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRv
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4obGlua0VsZW1lbnRzKTsKKyAg
ICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4+KGxpbmtFbGVtZW50cyk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
JiBlbGVtZW50cykgY29uc3QKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVt
ZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudHMpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1d
OwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAg
ICBlbGVtZW50cyA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+Pih2YWx1ZSk7CisgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiB9CiAKQEAgLTM2Myw3ICszNDQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPgogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGVdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRW
ZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRy
ZW4pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzczLDcgKzM1NCw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
OwogICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5leGVjdXRlT25BWFRocmVhZElmUG9zc2li
bGUoWyZlbGVtZW50VmVjdG9yLCBsb2NhdGlvbiwgbGVuZ3RoLCB0aGlzXSB7CiAgICAgICAgIE5T
QXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVW
YWx1ZXM6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4
Q291bnQ6bGVuZ3RoXTsKLSAgICAgICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9W
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CisgICAgICAg
IGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4oY2hpbGRyZW4pOwogICAgIH0pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KQEAg
LTM4Nyw3ICszNjgsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hl
YWRlcnMoKSBjb25zdAogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
IGVsZW1lbnRzOwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVs
ZW1lbnRzID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4+KHZhbHVlKTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9P
YmplY3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbnRleHQsIGVsZW1l
bnRzKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CkBAIC00MDEsNyArMzgyLDcgQEAg
SlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKCkgY29uc3QK
ICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiBlbGVtZW50czsKICAg
ICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNv
bnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1
ZSk7CisgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KHZhbHVlKTsKICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2JqZWN0QXJyYXk8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb250ZXh0LCBlbGVtZW50cyk7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtNjEwLDE0ICs1OTEsMTQgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxk
cmVuKCkKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFsbEF0dHJpYnV0ZXMoKQogewotICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRl
c09mRWxlbWVudChtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmli
dXRlc09mRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbYXR0cmlidXRlcyBj
cmVhdGVKU1N0cmluZ1JlZl07CiB9CiAgICAgCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKEpT
U3RyaW5nUmVmIGF0dHJpYnV0ZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBOU1N0cmluZyAqdmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRy
aWJ1dGVdXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyAqdmFsdWUgPSBkZXNjcmlwdGlvbk9m
VmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICBy
ZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03MjksNyArNzEwLDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVOYW1lcygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm9sZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcg
KnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAg
TlNTdHJpbmcgKnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVu
dC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJv
bGUiLCByb2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC03MzksNyAr
NzIwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvbGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN1YnJvbGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5n
KiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdLCBt
X2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KEAiQVhTdWJyb2xlIiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03
NDksNyArNzMwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN1YnJvbGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9u
QXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9u
T2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJl
dHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlRGVzY3JpcHRpb24iLCBy
b2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC03NTksNyArNzQwLDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVE
ZXNjcmlwdGlvbigpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBUm9sZSJdLCBt
X2VsZW1lbnQpOworICAgIE5TU3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEFSSUFS
b2xlIl0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIFtjb21wdXRlZFJvbGVTdHJpbmcg
Y3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAg
LTc2OSw3ICs3NTAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmli
dXRlXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
VGl0bGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhUaXRsZSIsIHRpdGxlKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAKQEAgLTc3OSw3ICs3NjAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNj
cmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAg
IHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhEZXNjcmlwdGlvbiIsIGRl
c2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc4OSw3ICs3NzAs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVz
Y3JpcHRpb24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0
ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhPcmllbnRhdGlvbiIsIGRlc2NyaXB0aW9uKTsgICAg
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03OTksNyArNzgwLDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkg
Y29uc3QKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdWYWx1ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVz
Y3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9l
bGVtZW50LmdldCgpKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC04MTAsNyArNzkxLDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlw
dGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExh
bmd1YWdlIl0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9m
VmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdl
Il0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5k
VmFsdWUoQCJBWExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIApAQCAtODIwLDcgKzgwMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhl
bHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24pOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTExMjksNyArMTExMCw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMo
KSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5k
ZXgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9y
SW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDppbmRleF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1
ZSBpbnRWYWx1ZV07IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExNDAsNyArMTEy
MSw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4
KQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdl
Rm9yTGluZShpbnQgbGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltO
U051bWJlciBudW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1cm4gW05TU3Ry
aW5nRnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEyNzIsNyArMTI1Myw3IEBAIEpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRS
ZWYgY29udGV4dCwKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBz
ZWFyY2hUZXh0UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIHNlYXJj
aFN0cmluZ3MsIHN0YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdpdGhDcml0ZXJp
YSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRW
ZWN0b3JUb09iamVjdEFycmF5PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4o
Y29udGV4dCwgY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4+KHJlc3VsdCkpOworICAgICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2Jq
ZWN0QXJyYXk8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pihjb250ZXh0LCBt
YWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4ocmVzdWx0KSk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
Mjg0LDcgKzEyNjUsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCiAgICAgLy8gbm90IHlldCBkZWZp
bmVkIGluIEFwcEtpdC4uLiBvZGQKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBO
U0FycmF5KiBjb2x1bW5IZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gY29sdW1u
SGVhZGVyc1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+Pihjb2x1bW5IZWFkZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVy
c1ZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1
bW5IZWFkZXJzQXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1u
SGVhZGVyc1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTI5
NSw3ICsxMjc2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIE5TQXJyYXkqIHJvd0hlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0
byByb3dIZWFkZXJzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+KHJvd0hlYWRlcnNBcnJheSk7CisgICAgYXV0byByb3dIZWFkZXJz
VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHJvd0hl
YWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dIZWFkZXJz
VmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzA2LDcgKzEy
ODcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07Ci0gICAgYXV0byBjb2x1
bW5zVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KGNvbHVtbnNBcnJheSk7CisgICAgYXV0byBjb2x1bW5zVmVjdG9yID0gbWFrZVZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVtbnNBcnJheSk7CiAgICAg
cmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVjdG9yKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzE3LDcgKzEyOTgsNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93c0FycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93
c0F0dHJpYnV0ZV07Ci0gICAgYXV0byByb3dzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHJvd3NBcnJheSk7CisgICAgYXV0byBy
b3dzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHJv
d3NBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dzVmVjdG9yKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzI4LDcgKzEzMDksNyBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBO
U0FycmF5KiBjZWxsc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFZpc2libGVDZWxscyJdOwotICAgIGF1dG8gY2VsbHNWZWN0b3IgPSBjb252ZXJ0TlNB
cnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2VsbHNBcnJheSk7
CisgICAgYXV0byBjZWxsc1ZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+PihjZWxsc0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRz
KGNlbGxzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNDA5
LDcgKzEzOTAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNv
bCwgdW5zaWduZWQgcm93KQogewotICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5ID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvbF0sIFtO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cm93XSwgbmlsXTsKKyAgICBOU0FycmF5ICpj
b2xSb3dBcnJheSA9IEBbQChjb2wpLCBAKHJvdyldOwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZv
clBhcmFtZXRlcjpjb2xSb3dBcnJheV0pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAg
CkBAIC0xNDkwLDcgKzE0NzEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNl
bGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZQogYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdl
IGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlQXR0cmlidXRlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE1NDgsNyArMTUyOSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3luY1ByZXNzKCkKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRD
aGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGFycmF5ID0gZWxlbWVudCA/IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXSA6IFtOU0Fy
cmF5IGFycmF5XTsKKyAgICBOU0FycmF5KiBhcnJheSA9IGVsZW1lbnQgPyBAW2VsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCldIDogQFtdOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNl
dFZhbHVlOmFycmF5IGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTU2MCw3
ICsxNTQxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxk
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKICAgICBOU0FycmF5ICpzZWxlY3RlZENoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0
dHJpYnV0ZV07Ci0gICAgTlNBcnJheSAqYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgTlNBcnJheSAqYXJyYXkgPSBAW2Vs
ZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChzZWxlY3RlZENoaWxkcmVuKQog
ICAgICAgICBhcnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJv
bUFycmF5OmFycmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJy
YXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVd
OwpAQCAtMTc2OSw4ICsxNzUwLDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVTZWxlY3Rpb24oKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVh
dGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzgxLDcgKzE3NjIsNyBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdU
ZXh0TWFyawogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TRGljdGlvbmFyeSAq
cGFyYW1ldGVycyA9IG1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNy
aXRlcmlhKHN0YXJ0LCBmb3J3YXJkKTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWlzc3BlbGxpbmdUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJh
bmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xNzkxLDcgKzE3NzIsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFu
Z2VGb3JVSUVsZW1lbnQiIGZvclBhcmFtZXRlcjplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgp
XTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2Jy
aWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgwMCw3ICsxNzgx
LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckUKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1iZXIqIGxlbmd0
aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0
aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJr
ZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
ICAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCkBAIC0xODEwLDggKzE3OTEsOCBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBwcmV2aW91c01hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1RleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXByZXZpb3VzTWFya2VyKTsKKyAgICBpZCBw
cmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKHByZXZpb3VzTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODIwLDggKzE4MDEsOCBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
VGV4dE1hcmtlcihBY2NlcwogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
dGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0
TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0TWFya2VyKTsKKyAgICBpZCBu
ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5l
eHRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZShuZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xODMwLDcgKzE4MTEsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vz
c2liaQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJr
ZXJSYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0U3Ry
aW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UiIGZvclBhcmFtZXRlcjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07
CiAgICAgcmV0dXJuIFt0ZXh0U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xODQwLDkgKzE4MjEsOSBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKEFjY2VzcwogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2Vy
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIHRleHRNYXJr
ZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooX19icmlkZ2UgaWQpc3RhcnRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoX19icmlkZ2UgaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKSwgbmlsXTsKKyAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiIGZv
clBhcmFtZXRlcjp0ZXh0TWFya2Vyc107Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2Vy
UmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE4NTIsNyArMTgzMyw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGVdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2Up
OworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1h
cmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xODc3LDggKzE4NTgsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRl
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgaWQgdGV4dE1hcmtlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4
dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTg4Nyw4ICsxODY4LDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWEKIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiByYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgaWQg
dGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4OTgsNyArMTg3OSw3IEBAIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZv
ckJvdW5kcyhpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUVuZFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFt
ZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdo
dCldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5MjQsNyArMTkwNSw3IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yQm91bmRzCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9y
UGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwg
aGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChf
X2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkzNCw3ICsxOTE1LDcgQEAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9yUG9pbnQoaW50IHgKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFRleHRNYXJrZXJGb3JQb3NpdGlvbiIgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFBv
aW50Ok5TTWFrZVBvaW50KHgsIHkpXV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQzLDcgKzE5
MjQsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0
ZXI6KF9fYnJpZGdlIGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIHVp
RWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVs
ZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6bWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CiAgICAgaWYgKHVpRWxlbWVudCkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNyZWF0ZSh1aUVsZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
QEAgLTE5NzUsNyArMTk1Niw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhCiAgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBuaWw7CiAKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgc3Ry
aW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0
ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjptYXJrZXJSYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAg
ICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11d
KQpAQCAtMTk5MCw5ICsxOTcxLDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKIAogICAgIGlk
IHBhcmFtZXRlciA9IG5pbDsKICAgICBpZiAoaW5jbHVkZVNwZWxsQ2hlY2spCi0gICAgICAgIHBh
cmFtZXRlciA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6aW5jbHVkZVNwZWxsQ2hlY2tdLCBAIkFYU3BlbGxDaGVjayIs
IChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSwgQCJB
WFRleHRNYXJrZXJSYW5nZSIsIG5pbF07CisgICAgICAgIHBhcmFtZXRlciA9IEB7IEAiQVhTcGVs
bENoZWNrIjogaW5jbHVkZVNwZWxsQ2hlY2sgPyBAWUVTIDogQE5PLCBAIkFYVGV4dE1hcmtlclJh
bmdlIjogbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgfTsKICAgICBlbHNl
Ci0gICAgICAgIHBhcmFtZXRlciA9IChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVyID0gbWFya2VyUmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCk7CiAKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25zIiBmb3JQYXJhbWV0ZXI6
cGFyYW1ldGVyXTsKQEAgLTIwMDcsNyArMTk4OCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJh
CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCldOworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAg
ICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11d
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0yMDIyLDcgKzIwMDMsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2VDb250YWluc0F0dHJpYnV0ZQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJbmRleEZvclRleHRNYXJrZXIiIGZv
clBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cisg
ICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOm1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbaW5kZXhOdW1iZXIgaW50VmFsdWVdOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTIwMzIsNyArMjAxMyw3IEBAIGlu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIG1hcmtlcikKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0
TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlk
IiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICBOU051bWJlciogdmFsaWROdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlcklzVmFsaWQiIGZvclBhcmFtZXRlcjp0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIFt2YWxpZE51bWJlciBi
b29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTIwNDMsNyAr
MjAyNCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCB0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZvclBhcmFtZXRlcjpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDUzLDcgKzIwMzQsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOwor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTIwNjMsNyArMjA0NCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDcyLDggKzIwNTMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVmdFdvcmRUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsK
KyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDgy
LDggKzIwNjMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUgogUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJh
bmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29y
ZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2Vy
UmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
IiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yMDkyLDggKzIwNzMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlcgogUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dv
cmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0
ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZp
b3VzV29yZFN0YXJ0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpcHJldmlvdXNXb3JkU3RhcnRNYXJrZXIpOworICAgIGlkIHByZXZpb3VzV29yZFN0YXJ0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3Vz
V29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUocHJldmlvdXNXb3JkU3RhcnRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMDIsOCArMjA4Myw4IEBA
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFyCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dFdvcmRFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUo
KF9fYnJpZGdlIENGVHlwZVJlZiluZXh0V29yZEVuZE1hcmtlcik7CisgICAgaWQgbmV4dFdvcmRF
bmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZShuZXh0V29yZEVuZE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjExMiw4ICsyMDkzLDggQEAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29y
ZEVuZFRleHRNYXJrZXJGb3IKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
UGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEyMiw4ICsyMTAzLDgg
QEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3Rh
cnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJl
dmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6
KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIpOworICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3Rh
cnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJl
dmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIx
MzIsOCArMjExMyw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRlCiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0UGFyYWdyYXBo
RW5kTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5l
eHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0UGFy
YWdyYXBoRW5kTWFya2VyKTsKKyAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRQYXJhZ3JhcGhFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShu
ZXh0UGFyYWdyYXBoRW5kTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTQyLDggKzIxMjMsOCBAQCBSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhF
bmRUZXh0TWFyawogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
IiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChf
X2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VudGVuY2VU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTUyLDggKzIxMzMsOCBAQCBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vu
dGVuY2VUZXh0TWFya2VyUgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzU2VudGVu
Y2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlk
KXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXByZXZpb3VzUGFyYWdy
YXBoU3RhcnRNYXJrZXIpOworICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNTZW50ZW5j
ZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpjcmVhdGUocHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE2Miw4ICsyMTQzLDgg
QEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXgKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dFBhcmFncmFwaEVuZE1hcmtlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0UGFyYWdyYXBoRW5kTWFya2Vy
KTsKKyAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRQYXJhZ3JhcGhFbmRN
YXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggY2Jk
MTQ2OWI5Mjg4ZWM2NGVkNmM2YTU3YzEzZmI2N2JmNWY3MGI5NC4uNjFjZGYwZWMxNGE3ZWM4Nzc1
MzExMzI1M2VlNWI3NjkzYThlMTc1NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQor
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzIikpOwogICAgIApAQCAtMjAwNSw3ICsy
MDA1LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlE
b21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAotdm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmIHdlYlZp
ZXdDYXRlZ29yeSkKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdv
cnkoU3RyaW5nJiYgd2ViVmlld0NhdGVnb3J5KQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkNhbGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5IikpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGU4NGY1ZWI3NDlhMjQwMmJiOTg1YTAxNjM2NGM4
MWE2NjI5ZDliYjYuLmM3YTk1NjQzNDQ2MzI5NGIxNTVjNWMwNTAwMjRkZWY0N2ZjYjcxZjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRlc3RJ
bnZvY2F0aW9uX2gKLSNkZWZpbmUgVGVzdEludm9jYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCkBAIC01Mywx
NyArNTIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJc1BpeGVsVGVzdChjb25zdCBzdGQ6
OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2gpOwogCi0gICAgdm9pZCBzZXRDdXN0b21UaW1lb3V0
KFdURjo6U2Vjb25kcyBkdXJhdGlvbikgeyBtX3RpbWVvdXQgPSBkdXJhdGlvbjsgfQorICAgIHZv
aWQgc2V0Q3VzdG9tVGltZW91dChTZWNvbmRzIGR1cmF0aW9uKSB7IG1fdGltZW91dCA9IGR1cmF0
aW9uOyB9CiAgICAgdm9pZCBzZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoYm9vbCB2YWx1ZSkg
eyBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciA9IHZhbHVlOyB9CiAKLSAgICBXVEY6OlNlY29u
ZHMgc2hvcnRUaW1lb3V0KCkgY29uc3Q7CisgICAgU2Vjb25kcyBzaG9ydFRpbWVvdXQoKSBjb25z
dDsKIAogICAgIHZvaWQgaW52b2tlKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5KTsKICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSk7CiAKICAgICBzdGF0aWMgdm9pZCBkdW1wV2ViUHJvY2Vzc1VucmVzcG9u
c2l2ZW5lc3MoY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIG91dHB1dFRleHQo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2b2lkIG91dHB1dFRleHQoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2b2lkIGRpZEJlZ2luU3dpcGUoKTsKICAgICB2b2lkIHdpbGxFbmRTd2lwZSgpOwpA
QCAtODcsOSArODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRQcmV2YWxlbnRSZXNvdXJj
ZSgpOwogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBk
aWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhWZWN0b3I8U3RyaW5n
PiYmIGRvbWFpbnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJiYpOwogICAgIHZv
aWQgZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIAogICAgIHZvaWQgZGlkUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CkBAIC0xMzgsMTIgKzEzNywxMiBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFRlc3RPcHRpb25zIG1fb3B0aW9uczsKICAgICAKICAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gbV91cmw7Ci0gICAgV1RGOjpTdHJpbmcgbV91cmxTdHJpbmc7CisgICAgU3Ry
aW5nIG1fdXJsU3RyaW5nOwogICAgIFJ1bkxvb3A6OlRpbWVyPFRlc3RJbnZvY2F0aW9uPiBtX3dh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVyOwogCiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVs
SGFzaDsKIAotICAgIFdURjo6U2Vjb25kcyBtX3RpbWVvdXQ7CisgICAgU2Vjb25kcyBtX3RpbWVv
dXQ7CiAgICAgYm9vbCBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07CiAKICAg
ICAvLyBJbnZvY2F0aW9uIHN0YXRlCkBAIC0xNzMsNSArMTcyLDMgQEAgcHJpdmF0ZToKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gVGVzdEludm9jYXRpb25faApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmlu
ZGV4IDU0OGZlNzMxMzA2NjQ2OGYyZGFhNzZjMjE1MDBlMGEyYTQwODQxYmYuLjZmMzI5ZTc1Yjk3
MTdmMzBjYzg3YWM5Y2ZjMzFjZmM5NjgzYWYwMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNp
bXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBA
IC0xMDEsMTAgKzEwMiw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0
aWFsaXplKCkKICAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciA9IFN0cmlu
ZyhkdW1wUmVuZGVyVHJlZVRlbXApICsgJy8nICsgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiOwog
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRo
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjogbmlsXTsKICAgICBTdHJpbmcgZnVsbEJyb3dzaW5n
U2Vzc2lvblJlc291cmNlTG9nID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciArICcvJyAr
ICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiOwotICAgIE5TRGljdGlv
bmFyeSAqcmVzb3VyY2VMb2dQbGlzdCA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHNBbmRLZXlzOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSwgQCJ2ZXJzaW9uIiwgbmls
XTsKKyAgICBOU0RpY3Rpb25hcnkgKnJlc291cmNlTG9nUGxpc3QgPSBAeyBAInZlcnNpb24iOiBA
KDEpIH07CiAgICAgaWYgKCFbcmVzb3VyY2VMb2dQbGlzdCB3cml0ZVRvRmlsZTpmdWxsQnJvd3Np
bmdTZXNzaW9uUmVzb3VyY2VMb2cgYXRvbWljYWxseTpZRVNdKQogICAgICAgICBXVEZDcmFzaCgp
OwotICAgIFtyZXNvdXJjZUxvZ1BsaXN0IHJlbGVhc2VdOwogfQogCiBXS0NvbnRleHRSZWYgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtQ29udGV4dCgpCkBAIC0zMzIsMTIgKzMzMiw4IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKICAgICBpZiAoIXBh
cmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjpwYXJl
bnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKm5zRG9tYWlucykgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwotICAg
ICAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNvdW50KTsKLSAg
ICAgICAgZm9yIChOU1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQotICAgICAgICAgICAgZG9t
YWlucy51bmNoZWNrZWRBcHBlbmQoZG9tYWluKTsKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKGRvbWFpbnMpOworICAgIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1ha2VWZWN0b3I8U3Ry
aW5nPihkb21haW5zKSk7CiAgICAgfV07CiB9CiAKQEAgLTM0NywxMiArMzQzLDggQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogICAgIGlmICghcGFyZW50
VmlldykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjpwYXJlbnRW
aWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKm5zRG9tYWlucykgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwotICAgICAg
ICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNvdW50KTsKLSAgICAg
ICAgZm9yIChOU1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQotICAgICAgICAgICAgZG9tYWlu
cy51bmNoZWNrZWRBcHBlbmQoZG9tYWluKTsKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+
ZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGly
ZFBhcnR5RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKG1ha2VWZWN0b3I8
U3RyaW5nPihkb21haW5zKSk7CiAgICAgfV07CiB9CiAKQEAgLTM4Nyw3ICszNzksNyBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoKQogICAgICAgICAgICAgY2F0ZWdv
cnkgPSAiV2ViQnJvd3NlciI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KGNhdGVnb3J5
KTsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29y
eShXVEZNb3ZlKGNhdGVnb3J5KSk7CiAgICAgfV07CiB9CiAKQEAgLTQ5NCwxMCArNDg2LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24oY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIGRpc21pc3Nlc0EKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFsbG93ZWRN
ZW51QWN0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWN0aW9ucykKIHsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIGF1dG8gYWN0aW9uTmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YWN0aW9ucy5zaXplKCld
KTsKLSAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnMpCi0gICAgICAgIFthY3Rpb25OYW1l
cyBhZGRPYmplY3Q6YWN0aW9uXTsKLSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkg
c2V0QWxsb3dlZE1lbnVBY3Rpb25zOmFjdGlvbk5hbWVzLmdldCgpXTsKKyAgICBbbV9tYWluV2Vi
Vmlldy0+cGxhdGZvcm1WaWV3KCkgc2V0QWxsb3dlZE1lbnVBY3Rpb25zOmNyZWF0ZU5TQXJyYXko
YWN0aW9ucykuZ2V0KCldOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYWN0aW9ucyk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJh
dG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0K
aW5kZXggYmMzYjYzNWU3YWEwYjYyYTMzODlmN2M3ZDJmZGVhMDRiNGFkOTg1Zi4uZTI5ODM4YmE4
MjhmYjRiZDkwODU3YWI2YmVmMmZkNDY1OWZiNDIxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTEwNDQsNyArMTA0NCw3IEBAIC0g
KE5TQXJyYXkgKilpbnRlcnBvbGF0ZWRFdmVudHM6KE5TRGljdGlvbmFyeSAqKWludGVycG9sYXRp
b25zRGljdGlvbmFyeQogICAgIHdoaWxlICh0aW1lIDwgZW5kVGltZSkgewogICAgICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICpuZXdFdmVudCA9IFtlbmRFdmVudCBtdXRhYmxlQ29weV07CiAgICAg
ICAgIGRvdWJsZSB0aW1lUmF0aW8gPSAodGltZSAtIHN0YXJ0VGltZSkgLyAoZW5kVGltZSAtIHN0
YXJ0VGltZSk7Ci0gICAgICAgIG5ld0V2ZW50W0hJREV2ZW50VGltZU9mZnNldEtleV0gPSBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZToodGltZSldOworICAgICAgICBuZXdFdmVudFtISURFdmVu
dFRpbWVPZmZzZXRLZXldID0gQCh0aW1lKTsKICAgICAgICAgCiAgICAgICAgIE5TRW51bWVyYXRv
ciAqc3RhcnRFbnVtZXJhdG9yID0gW3N0YXJ0VG91Y2hlcyBvYmplY3RFbnVtZXJhdG9yXTsKICAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpzdGFydFRvdWNoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCmluZGV4IDVlMzNmMWY1NjM4ODM2YmZiNmY2
MDY0OGIxMDc5ODg1YTQ2ODRmMjEuLjY0MTc4MmNhOTdlMWRhZmI5MDA5MTlkYjE5YjM0NzRhNTU0
Mzg4ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2Vi
Vmlld01hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZp
ZXdNYWMubW0KQEAgLTIyMywxMCArMjIzLDEwIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpjaGFu
Z2VXaW5kb3dTY2FsZUlmTmVlZGVkKGZsb2F0IG5ld1NjYWxlKQogCiAgICAgLy8gSW5zdGVhZCBv
ZiByZS1jb25zdHJ1Y3RpbmcgdGhlIGN1cnJlbnQgd2luZG93LCBsZXQncyBmYWtlIHJlc2l6ZSBp
dCB0byBlbnN1cmUgdGhhdCB0aGUgc2NhbGUgY2hhbmdlIGdldHMgcGlja2VkIHVwLgogICAgIGZv
cmNlV2luZG93RnJhbWVzQ2hhbmdlZCgpOworCiAgICAgLy8gQ2hhbmdpbmcgdGhlIHNjYWxpbmcg
ZmFjdG9yIG9uIHRoZSB3aW5kb3cgZG9lcyBub3QgdHJpZ2dlciBOU1dpbmRvd0RpZENoYW5nZUJh
Y2tpbmdQcm9wZXJ0aWVzTm90aWZpY2F0aW9uLiBXZSBuZWVkIHRvIHNlbmQgdGhlIG5vdGlmaWNh
dGlvbiBtYW51YWxseS4KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbm90aWZp
Y2F0aW9uVXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eToxXSk7Ci0gICAgW25vdGlmaWNhdGlvblVzZXJJbmZvIHNldE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpjdXJyZW50U2NhbGVdIGZvcktleTpOU0JhY2tpbmdQ
cm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5XTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOk5TV2luZG93RGlkQ2hhbmdlQmFja2lu
Z1Byb3BlcnRpZXNOb3RpZmljYXRpb24gb2JqZWN0Om1fd2luZG93IHVzZXJJbmZvOm5vdGlmaWNh
dGlvblVzZXJJbmZvLmdldCgpXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsgTlNC
YWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleTogQChjdXJyZW50U2NhbGUpIH07CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpOU1dpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzTm90aWZpY2F0aW9uIG9iamVjdDpt
X3dpbmRvdyB1c2VySW5mbzp1c2VySW5mb107CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpm
b3JjZVdpbmRvd0ZyYW1lc0NoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA4YzU5NTU1MTYxN2ZlMDM5NWFhZTQ3Nzk3NmI5
N2Y0OGZmZTY5ZmI2Li40OThlMzcyZjIwNDM0MzBlY2I5ZTdlMjg5M2UwNDM2ZGU2ZWE1NjA5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtNDQsNyArNDQsNiBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJp
dmF0ZS5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogCiBAaW50ZXJmYWNlIE5TU291bmQgKCkKICsgKHZvaWQpX3NldEFsZXJ0VHlw
ZTooTlNVSW50ZWdlcilhbGVydFR5cGU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggYTQ0Y2ZkMGMxOGQ1ODRiZDQ5NTIy
YTFmNDhiZGRjNTQzY2E5NjhjOC4uZTk1NmVlZDkyYTBhNTg3ODM2NmVjNTMwMDk3MjI0MTY5ODg1
Njc5YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
TWFjOjphY3RpdmF0ZUF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2FsbGJhY2sp
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkK
IHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBh
c3RlYm9hcmQ7Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJv
YXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVib2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CiAg
ICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnRleHQtPnN0cmluZygpIGZvclR5cGU6TlNQYXN0ZWJv
YXJkVHlwZVN0cmluZ107CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KaW5kZXggMWI2Mjg2Y2Y5MzEyM2Vi
ZjkwMTNjNjEyNjJhMTY2MmI2ZDk5MGVjMS4uMGQzMDRmYzI4NGEyODgzY2ZkMGY3MmUyZjk2NjA1
MGNmMjVlZGIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0
VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
V2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTgyLDcgKzgyLDcgQEAgKyAodm9pZCly
ZWxlYXNlTG9jYWxQYXN0ZWJvYXJkcwogLy8gb2YgdGhlIHVzdWFsIFdlYlNjcmlwdE9iamVjdCB0
aGF0IGlzIHBhc3NlZCBhcm91bmQKIC0gKE5TSW50ZWdlcilkZWNsYXJlVHlwZTooTlNTdHJpbmcg
Kil0eXBlIG93bmVyOihpZCluZXdPd25lcgogewotICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlw
ZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5ld093bmVyXTsKKyAgICBy
ZXR1cm4gW3NlbGYgZGVjbGFyZVR5cGVzOkBbdHlwZV0gb3duZXI6bmV3T3duZXJdOwogfQogCiBA
ZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395894</attachid>
            <date>2020-04-08 18:05:41 -0700</date>
            <delta_ts>2020-04-08 20:27:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210138-20200408180540.patch</filename>
            <type>text/plain</type>
            <size>476918</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTMxZTFlZGZlYTY0MTBhZThmYmU5YjU5NWExZmI2MzVkNGIwNzM0Li5jMWU1NmU2ZjRkMWZjZmZi
YzkwYWE5ZmUxM2NjYzVjNzRkMTYyODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNC0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0V2l0aG91dENvcHkpOiBVc2UgQCgpLgorICAgICAgICAodmFsdWVUb051bWJlcik6IERp
dHRvLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAoLVtUZXN0T2Jq
ZWN0IGNhbGxiYWNrOl0pOiBVc2UgQFtdLCBAKCksIGFuZCBAe30uCisgICAgICAgICgtW1RleHRY
WVogY2xpY2tdKTogRGl0dG8uCisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOiBEaXR0
by4KKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJhY2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkyYjYwY2NhM2U0
MDJiODcyNWI0MDhjMWIyOWQ5YWRlMWM2NzBmZmYuLjQ2ODk5NDU2YWM1YjVlYWMxYjM5YjJhZWZl
MjVmOGExODQxNGMyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMDggIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJh
eSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBWZWN0b3JDb2NvYS5oLgorICAgICAgICAqIHd0
Zi9QbGF0Zm9ybU1hYy5jbWFrZTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiB3dGYvY29jb2Ev
VVJMQ29jb2EubW06IERpdHRvLgorCisgICAgICAgICogd3RmL2NvY29hL1ZlY3RvckNvY29hLmg6
IEFkZGVkLiBDb250YWlucyBjcmVhdGVOU0FycmF5IGFuZCBtYWtlVmVjdG9yCisgICAgICAgIGZ1
bmN0aW9uIHRlbXBsYXRlcyBmb3IgY29udmVydGluZyBOU0FycmF5IHRvIGFuZCBmcm9tIFZlY3Rv
ci4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBBZGRlZCBtYWtlTlNBcnJheUVs
ZW1lbnQgYW5kIG1ha2VWZWN0b3JFbGVtZW50CisgICAgICAgIGZ1bmN0aW9ucywgbWFraW5nIGNy
ZWF0ZU5TQXJyYXkgYW5kIG1ha2VWZWN0b3IgY29tcGF0aWJsZSB3aXRoIFN0cmluZy4KKyAgICAg
ICAgKiB3dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbToKKyAgICAgICAgKFdURjo6bWFrZU5T
QXJyYXlFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXVEY6Om1ha2VWZWN0b3JFbGVtZW50KTog
QWRkZWQuCisKIDIwMjAtMDQtMDggIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLNF0gTWFrZSBQQUw6OnN5c3RlbUJlZXAoKSB3b3JrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZTRlODViMzAyMDQwNzUyNTY3ZDllOGFhZTU5MjM1YmNiMDgxNjcyZi4uM2Mx
Yzc1NWQyMmI5OGY3MzU0NWI1ZTJhYjE5MGI0MDJhOWM5YjM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1NiBAQAorMjAyMC0wNC0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkZWQgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZlY3Rv
ci4KKyAgICAgICAgLSBVc2UgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZlY3RvcjxTdHJpbmc+IGlu
IG1hbnkgcGxhY2VzIHdoZXJlIHdlIGNvbnZlcnQKKyAgICAgICAgICBiZXR3ZWVuIE5TQXJyYXkg
YW5kIFZlY3RvciwgcmVwbGFjaW5nIG11bHRpcGxlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0IHdl
cmUKKyAgICAgICAgICBkb2luZyB0aGUgc2FtZSBqb2IgYmVmb3JlOyBsYXRlciBjYW4gdXNlIHRo
ZW0gZXZlbiBtb3JlLgorICAgICAgICAtIFVzZSBAW10gbWFueSBwbGFjZXMgd2hlcmUgd2UgY3Jl
YXRlIGFuIGF1dG9yZWxlYXNlZCBOU0FycmF5LgorICAgICAgICAtIFVzZSBAe30gbWFueSBwbGFj
ZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU0RpY3Rpb25hcnkuCisgICAgICAg
IC0gVXNlIEAoKSBtYW55IHBsYWNlcyB3aGVyZSB3ZSBjcmVhdGUgYW4gYXV0b3JlbGVhc2VkIE5T
TnVtYmVyLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IE1vdmVkIEZsb2F0L0ludFJl
Y3RNYWMubW0gdG8gRmxvYXQvSW50UmVjdENvY29hLm1tLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2tx
dW90ZUxldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGlu
Z0xldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10uCisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6dG9FbmRN
YXJrZXI6YXR0cmlidXRlZDpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgZWxlbWVudHNGb3JSYW5nZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlcnNGb3JSYW5nZTpdKTogVXNl
IEBbXS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KTogVXNl
IEAoKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKG1ha2VWZWN0b3JFbGVtZW50KTogQWRlZCBvdmVy
bG9hZCBmb3IgQWNjZXNzaWJpbGl0eVNlYXJjaEtleS4KKyAgICAgICAgKGFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpOgor
ICAgICAgICBVc2UgbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Pi4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
OgorICAgICAgICAoYWNjZXNzaWJpbGl0eVRleHRDcml0ZXJpYUZvclBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoYWNjZXNzaWJpbGl0eVNl
YXJjaFRleHRDcml0ZXJpYUZvclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpOiBVc2UgbWFrZVZlY3Rv
cjxTdHJpbmc+LgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZSk6IFVzZSBAKCku
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbCk6IFVzZSBAKCku
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbCk6IFVzZSBAKCkuCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBY3Rp
b25OYW1lc10pOiBVc2UgQFtdLgorICAgICAgICAoY29udmVydFN0cmluZ3NUb05TQXJyYXkpOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgIFVzZSBAKCksIEBbXSwgYW5kIGNyZWF0
ZU5TQXJyYXkuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisgICAgICAgIERpdHRvLgor
CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoK1tX
ZWJTY3JpcHRPYmplY3QgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOm9yaWdpblJvb3RPYmplY3Q6
cm9vdE9iamVjdDpdKToKKyAgICAgICAgVXNlIEAoKS4KKworICAgICAgICAqIGVkaXRpbmcvY29j
b2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAg
ICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKGRlZmF1bHRQYXJhZ3JhcGhTdHlsZSk6IFVzZSBAW10u
CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KTog
VXNlIEAoKS4KKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzTWV0YUVsZW1lbnRXaXRo
TmFtZSk6IFVzZSBAKCkuCisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkVGFibGVGb3JFbGVt
ZW50KTogVXNlIEAoKS4KKworICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KTog
VXNlIEBbXS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNG
b3JNSU1FVHlwZSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFJlY3QuaDogQWRkZWQgbWFrZU5TQXJyYXlFbGVtZW50IG92ZXJsb2Fk
IHNvIHdlIGNhbgorICAgICAgICBjb252ZXJ0IFZlY3RvcjxGbG9hdFJlY3Q+IGludG8gTlNBcnJh
eTxOU1ZhbHVlPi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmg6IFNpbWls
YXJseSBmb3IgSW50UmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKTogVXNlIGNyZWF0ZU5TQXJy
YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6bWVk
aWFEZXNjcmlwdGlvbkZvcktpbmQpOiBVc2UgQFtdLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6IFVzZSBA
KCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjcmVhdGVBVlBsYXllckl0ZW0pOiBVc2UgQCgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tQbGF5YWJpbGl0eSk6IFVzZSBAW10u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
cmVhdGVWaWRlb091dHB1dCk6IFVzZSBAe30gYW5kIEAoKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6dmFsdWVGdW5jdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEZyb21WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlGcm9t
VmFsdWVGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6
c2V0VG9WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OmNvcHlUb1ZhbHVlRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OnNldFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHlWYWx1ZXNGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6c2V0S2V5VGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpjb3B5S2V5VGltZXNGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VGltaW5nRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20pOgor
ICAgICAgICBVc2UgQCgpLCBAW10sIG1vZGVybiBmb3IgbG9vcHMsIGF1dG8sIGFuZCBhbGxvY2F0
ZSB3aXRoIGNhcGFjaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FG
aWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbik6IFVzZSBAKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbTogTW92ZWQgZnJvbSBtYWMv
RmxvYXRSZWN0TWFjLm1tLgorICAgICAgICAoV2ViQ29yZTo6bWFrZU5TQXJyYXlFbGVtZW50KTog
QWRkZWQgc28gd2UgY2FuIGNvbnZlcnQgVmVjdG9yPEZsb2F0UmVjdD4KKyAgICAgICAgaW50byBO
U0FycmF5PE5TVmFsdWU+LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJl
Y3RDb2NvYS5tbTogTW92ZWQgZnJvbSBtYWMvSW50UmVjdE1hYy5tbS4KKyAgICAgICAgKFdlYkNv
cmU6Om1ha2VOU0FycmF5RWxlbWVudCk6IFNpbWlsYXJseSBmb3IgSW50UmVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QpOiBVc2UgY2xhbXBUbyB0byBiZSBjb25zaXN0ZW50
IHdpdGggd2hhdAorICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCkgZG9lcyAod2hp
bGUgZml4aW5nIGNoZWNrLXdlYmtpdC1zdHlsZSBjb21wbGFpbnQpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXll
ciBkaXNwbGF5XSk6IEFkZCBXZWJDb3JlIG5hbWVzcGFjZSBwcmVmaXg7IG5lZWRlZCBkZXBlbmRp
bmcgb24KKyAgICAgICAgaG93IHNvdXJjZXMgZ2V0IHVuaWZpZWQgKGFuZCB3YXMgYWZmZWN0aW5n
IG15IGxvY2FsIGJ1aWxkIHdoZW4gaXQgdGVtcG9yYXJpbHkKKyAgICAgICAgaGFkIGFuIGFkZGl0
aW9uYWwgc291cmNlIGZpbGUpLgorICAgICAgICAoLVtXZWJHTExheWVyIGFsbG9jYXRlSU9TdXJm
YWNlQmFja2luZ1N0b3JlV2l0aFNpemU6dXNpbmdBbHBoYTpdKTogRGl0dG8uCisgICAgICAgICgt
W1dlYkdMTGF5ZXIgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3VyZmFjZV0pOiBEaXR0
by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250TW9kaWZpY2F0aW9uQXR0cmlidXRlcyk6IFVzZSBA
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyk6IFVzZSBtYWtl
VmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdp
c3RyYXRpb25MaXN0KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6IFVzZSBjcmVh
dGVOU0FycmF5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVBy
b3ZpZGVyczpdKTogVXNlIEBbXS4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcu
bW06CisgICAgICAgICgtW1dBS1ZpZXcgc3Vidmlld3NdKTogRGl0dHRvLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+Lgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRQYXRobmFtZXNGb3JUeXBl
IGNvbnN0KTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YWRkVHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyk6IFVzZSBtYWtlVmVjdG9y
PFN0cmluZz4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmg6IFJl
bW92ZWQKKyAgICAgICAgd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5LCByZXBs
YWNlZCBieSBtYWtlVmVjdG9yPFN0cmluZz4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5n
VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21O
U1N0cmluZ0FycmF5KTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
TlNVUkxFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRW
aWRlb0lucHV0KTogVXNlIEAoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6IFVzZSBAKCkuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tp
ZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICogX051bGxhYmxlICBjb25zdCk6IFVzZSBAKCkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29r
aWVzRnJvbURPTSBjb25zdCk6IFVzZSBAe30uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6IFVzZSBAWUVTL0BOTy4KKwogMjAy
MC0wNC0wOCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZWxlYXNlIFdlYkdMTGF5ZXIgZWFybGllciBpbiB+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMGRjYzFkNjJlNmQ0MDI0NzA0MDA3N2JjNmE3ZTA4Njg2YmRiYTBkOC4uNWU0MWUw
NDM0ZWQ5YWVkNTlmNGRiZmQzNmM3MmE3YTY0NTk2YWU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NjAgQEAKKzIwMjAtMDQtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIg
aWRpb21zIHRocm91Z2hvdXQgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW06IFJlbW92ZSB1bmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5tbTogRGl0dG8uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBsYWNlZE5TQ29uY3JldGVU
YXNrX2xhdW5jaCk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJLaXQ6OnJl
cGxhY2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2NvbmZpZ3Vy
YXRpb25fZXJyb3IpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIFNoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp0b1N1cHBvcnRlZE5ldHdvcmtzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QpOiBVc2UgY3Jl
YXRlTlNBcnJheS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJFcnJvcnNDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTlNFcnJvcik6IFVzZSBAe30uCisKKyAgICAgICAgKiBT
aGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2Fy
ZFR5cGVzOjpmb3JFZGl0aW5nKTogVXNlIEBbXS4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2Fy
ZFR5cGVzOjpmb3JVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVz
Ojpmb3JJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpm
b3JJbWFnZXNXaXRoQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJk
VHlwZXM6OmZvclNlbGVjdGlvbik6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRSdWxl
TGlzdFN0b3JlIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOl0pOiBVc2Ug
Y3JlYXRlTlNBcnJheS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0lu
V2ViUHJvY2Vzc0ZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dL
VXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5
OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAg
ICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1h
aW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJM
OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhT
b3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdh
Y3lCbGFja2xpc3Q6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2lu
aXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxp
c3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0ZWRVUkw6Y29udGVudFdvcmxkOl0pOgorICAgICAg
ICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZy
YW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0ZWRVUkw6Y29u
dGVudFdvcmxkOmRlZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uOl0pOgorICAgICAgICBVc2Ug
bWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjpd
KTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX2NvcnNEaXNhYmxpbmdQYXR0ZXJuc10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOl0p
OiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb250ZW50c09mVXNl
ckludGVyZmFjZUl0ZW06XSk6IFVzZSBAKCkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW06CisgICAgICAgICgtW19XS0NvbnRlbnRSdWxl
TGlzdEFjdGlvbiBub3RpZmljYXRpb25zXSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tOgorICAgICAgICAo
LVtfV0tDdXN0b21IZWFkZXJGaWVsZHMgdGhpcmRQYXJ0eURvbWFpbnNdKTogVXNlIGNyZWF0ZU5T
QXJyYXkuCisgICAgICAgICgtW19XS0N1c3RvbUhlYWRlckZpZWxkcyBzZXRUaGlyZFBhcnR5RG9t
YWluczpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzXSk6IFVzZSBj
cmVhdGVOU0FycmF5LgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0
Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisg
ICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBzZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM6XSk6IFVzZSBtYWtl
VmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJD
b250ZW50V29ybGRJbnRlcm5hbC5oOgorICAgICAgICAoQVBJOjp0b1N0cmluZ1ZlY3Rvcik6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0
Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWlu
RnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3Js
ZDpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFp
bkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNv
bnRlbnRXb3JsZDpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6IFVzZSBAW10uCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6IFVzZSBtYWtlVmVj
dG9yPFN0cmluZz4uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKTogVXNlIEBbXS4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmNvbGxlY3RLZXlib2FyZExheW91dENvbW1hbmRzRm9yRXZlbnQpOiBVc2Ug
QFtdLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpsYXVuY2hQcm9j
ZXNzKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgIChXZWJLaXQ6OmlzSmF2YVVwZGF0ZXJV
UkwpOiBVc2UgQFtdLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmxhdW5j
aEFwcGxpY2F0aW9uQXRVUkwpOiBVc2UgQHt9IGFuZCBjcmVhdGVOU0FycmF5LgorICAgICAgICAo
V2ViS2l0Ojppc1NpbHZlcmxpZ2h0UHJlZmVyZW5jZXNVUkwpOiBVc2UgQFtdLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAg
ICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OkhpZFNlcnZpY2UpOiBVc2UgQCgpIGFuZCBmaXhlZCBh
biBvdmVyLXJlbGVhc2UgbWlzdGFrZS4KKyAgICAgICAgVGhpcyBjb2RlIHdhcyBkb2luZyBhZG9w
dE5TIG9uIHRoZSByZXN1bHQgb2YgK1tOU051bWJlcldpdGhJbnQ6XSwgd2hpY2ggaXMgaW5jb3Jy
ZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6
Z2V0QXR0ZXN0YXRpb24gY29uc3QpOiBVc2UgQFtdLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
dGV4dFN0eWxpbmdBdFBvc2l0aW9uOmluRGlyZWN0aW9uOl0pOiBVc2UgQCgpLgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25Db21tYW5kc1dp
dGhDb21wbGV0aW9uSGFuZGxlcjpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nlc3Npb25XaXRoUmVnaXN0
cmF0aW9uTGlzdHM6c3RhZ2VkRHJhZ1NvdXJjZTpdKToKKyAgICAgICAgRml4ZWQgYSB3YXN0ZWZ1
bCBjYWxsIHRvIGF1dG9yZWxlYXNlIHdoZXJlIHdlIGFyZSBhZGRpbmcgYW4gaXRlbSB0byBhIGRp
Y3Rpb25hcnkuIENhbGxpbmcgZ2V0CisgICAgICAgIGlzIG1vcmUgZWZmaWNpZW50IGFuZCBzdGls
bCBjb3JyZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQ
YW5lbC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgaW1hZ2VQaWNrZXJDb250cm9s
bGVyOmRpZEZpbmlzaFBpY2tpbmdNZWRpYVdpdGhJbmZvOl0pOiBVc2UgQFtdLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbToKKyAgICAgICAgKC1b
V0tDb2xvck1hdHJpeFZpZXcgaW5pdFdpdGhGcmFtZTpjb2xvck1hdHJpeDpdKTogUmVtb3ZlZCB1
bmVlZGVkIFJldGFpblB0cgorICAgICAgICBsb2NhbCB2YXJpYWJsZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0
aW9uUGFuZWw6OnNob3cpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjp1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAg
ICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKTogVXNlIG1ha2VW
ZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW06CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hZGp1c3RQcmludGluZ01hcmdpbnNGb3JI
ZWFkZXJBbmRGb290ZXJdKTogVXNlIEAoKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYXJyYXlGcm9tUmVjdHMpOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmluZ01hdGNoZXNXaXRoUmVj
dHM6ZGlkV3JhcEFyb3VuZDpdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbToKKyAgICAgICAg
KC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBub3RpZnlBY2Nlc3NpYmlsaXR5Q2xp
ZW50czpdKTogVXNlIEB7fQorICAgICAgICBhbmQgZml4IGEgYnVnIHdoZXJlIHRoaXMgd2FzIGNy
ZWF0aW5nIGEgYmFja3dhcmRzIGRpY3Rpb25hcnkuIFNvIHRoaXMgbmV2ZXIKKyAgICAgICAgY291
bGQgaGF2ZSBiZWVuIHdvcmtpbmcgYmVmb3JlLCBtYWtpbmcgbWUgd29uZGVyIGhvdyB3ZSB0ZXN0
IGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VhcmNoVGhlV2ViKTogVXNlIEBbXS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5o
OiBSZW1vdmVkIHRvTlNBcnJheS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OnRvTlNBcnJheSk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Ob2RlLm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgdGV4dFJlY3RzXSk6IFVzZSBjcmVh
dGVOU0FycmF5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIHRleHRSZWN0c10pOiBEaXR0by4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1l
dGVyKTogVXNlIEB7fS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9t
YWMvUGx1Z2luUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Om1ha2VSZW5kZXJMYXllcik6
IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKTog
VXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQpOiBVc2UgQCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6IFVzZSBA
e30uCisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1
bWVQYWludGluZyk6IFVzZSBAe30uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgorICAgICAgICBSZW1vdmVkIGFu
IHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tOiBEaXR0by4KKyAgICAgICAgKC1bV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdKTogVXNlIEBb
XS4KKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5dKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpnZXRBY3RpdmVQYWdl
c09yaWdpbnNGb3JUZXN0aW5nKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKwogMjAyMC0wNC0w
OCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVHJhY2sgZWRp
dGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXgg
ODNhMGQ5NWM0ODIwNjcxZjczYjYxYmE3YjY2MDU2MGJkNGIxYTZkZi4uY2VkMzU5ZDE0Y2Q5ZGVl
YzUxNWE0NTUzMGM5ZTE5ZGQ4MzA5NjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5k
IE5TTnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5QYW5lbCk6IFVz
ZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBv
c2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VX
aXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICBVc2UgY3JlYXRlTlNB
cnJheS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbkludGVy
bmFsLmg6CisgICAgICAgIEFkZGVkICNpZiBzbyB0aGF0IHRoaXMgY29ycmVjdGx5IGRvZXNuJ3Qg
Y29tcGlsZSBhbnl0aGluZyBvbiBNYWMuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdJ
T1MubW06CisgICAgICAgICgrW1dlYlBERlZpZXcgc3VwcG9ydGVkTUlNRVR5cGVzXSk6IFVzZSBA
W10uCisKIDIwMjAtMDQtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0b3AgdXNpbmcgbGl2ZSByYW5nZXMgaW4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjA0YjE1OTgzOTI4ZTkxZGY0NDE5NzI2YjFl
ODJiZDE0NzZkNmQwOC4uYzVhYjZlZWYwMDkxZGVjN2YzYWU0ZGM3MWMwZDMyYzU4MzAyYjE2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NyBAQAorMjAyMC0wNC0w
OCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1w
bGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91
dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRE9NL0RPTS5tbToKKyAgICAgICAgKGtpdCk6IERlbGV0ZWQgb3ZlcmxvYWQgdGhhdCB0YWtl
cyBWZWN0b3I8SW50UmVjdD4uCisgICAgICAgICgtW0RPTU5vZGUgdGV4dFJlY3RzXSk6IFVzZSBj
cmVhdGVOU0FycmF5LgorICAgICAgICAoLVtET01SYW5nZSB0ZXh0UmVjdHNdKTogRGl0dG8uCisK
KyAgICAgICAgKiBET00vRXhjZXB0aW9uSGFuZGxlcnMubW06CisgICAgICAgIChyYWlzZURPTUVy
cm9yRXhjZXB0aW9uKTogVXNlIEAoKS4KKworICAgICAgICAqIEhpc3RvcnkvV2ViQmFja0Zvcndh
cmRMaXN0Lm1tOgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeVJlcHJl
c2VudGF0aW9uXSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06
CisgICAgICAgICgrW1dlYkhpc3RvcnlQcml2YXRlIGluaXRpYWxpemVdKTogVXNlIEB7fS4KKyAg
ICAgICAgKC1bV2ViSGlzdG9yeSBfc2VuZE5vdGlmaWNhdGlvbjplbnRyaWVzOl0pOiBVc2UgQHt9
LgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2Vi
SGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6IFVzZSBtYWtl
VmVjdG9yPFN0cmluZz4uCisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVtIGRpY3Rpb25hcnlSZXBy
ZXNlbnRhdGlvbjpdKTogVXNlIGNyZWF0ZU5TQXJyYXkgYW5kIEAoKS4KKworICAgICAgICAqIEhp
c3RvcnkvV2ViVVJMc1dpdGhUaXRsZXMubToKKyAgICAgICAgKCtbV2ViVVJMc1dpdGhUaXRsZXMg
YXJyYXlXaXRoSUZVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVdKTogVXNlIEBbXS4KKyAgICAgICAg
KCtbV2ViVVJMc1dpdGhUaXRsZXMgd3JpdGVVUkxzOmFuZFRpdGxlczp0b1Bhc3RlYm9hcmQ6XSk6
IFVzZSBAW10uCisKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJD
YWNoZSBzdGF0aXN0aWNzXSk6IFVzZSBAW10sIEB7fSwgYW5kIEAoKS4KKyAgICAgICAgKiBNaXNj
L1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBtZW1v
cnlTdGF0aXN0aWNzXSk6IERpdHRvLgorCisgICAgICAgICogTWlzYy9XZWJLaXRFcnJvcnMubToK
KyAgICAgICAgKC1bTlNFcnJvciBfd2Via2l0X2luaXRXaXRoRG9tYWluOmNvZGU6VVJMOl0pOiBV
c2UgQCgpLgorICAgICAgICAoK1tOU0Vycm9yIF9yZWdpc3RlcldlYktpdEVycm9yc10pOiBVc2Ug
QCgpLgorICAgICAgICAoLVtOU0Vycm9yIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpjb250ZW50
VVJMOnBsdWdpblBhZ2VVUkw6cGx1Z2luTmFtZTpNSU1FVHlwZTpdKTogVXNlIEAoKS4KKworICAg
ICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5n
IF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0ZXh0Q29sb3I6XSk6IFVzZSBAe30uCisgICAgICAgICgt
W05TU3RyaW5nIF93ZWJfd2lkdGhXaXRoRm9udDpdKTogVXNlIEB7fS4KKworICAgICAgICAqIE1p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgor
CisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgICgrW05T
UGFzdGVib2FyZCBfd2ViX2RyYWdUeXBlc0ZvclVSTF0pOiBVc2UgQFtdLgorICAgICAgICAoLVtO
U1Bhc3RlYm9hcmQgX3dlYl93cml0ZVVSTDphbmRUaXRsZTp0eXBlczpdKTogVXNlIEBbXS4KKyAg
ICAgICAgKCtbTlNQYXN0ZWJvYXJkIF93ZWJfc2V0RmluZFBhc3RlYm9hcmRTdHJpbmc6d2l0aE93
bmVyOl0pOiBVc2UgQFtdLgorCisgICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5tbTogUmVt
b3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5I
b3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0KTogVXNlIEB7fS4KKworICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoV0tQQ0lkZW50
aWZpZXJJbmZvKTogVXNlIEAoKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjphZGRWYWx1ZVRvQXJyYXkpOiBVc2UgQCgpLgorCisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOiBSZW1vdmVkIHVubmVl
ZGVkIGluY2x1ZGUuCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbTog
RGl0dG8uCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgor
ICAgICAgICAoLVtXZWJQbHVnaW5Db250YWluZXJDaGVjayBfYWN0aW9uSW5mb3JtYXRpb25XaXRo
VVJMOl0pOiBVc2UgQHt9LgorCisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5t
bToKKyAgICAgICAgKCtbV2ViUGx1Z2luRGF0YWJhc2UgX2RlZmF1bHRQbHVnSW5QYXRoc10pOiBV
c2UgQFtdLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW06CisgICAg
ICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkYXRhYmFzZXNXaXRoT3JpZ2luOl0pOiBVc2UgY3Jl
YXRlTlNBcnJheS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5t
bToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6c2hvdyk6IFVzZSBjcmVhdGVOU0FycmF5Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKTogVXNlIEAoKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKGF0dHJpYnV0
ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbik6IFVzZSBAKCkuCisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldEd1ZXNzZXNGb3JXb3JkKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkgY29uc3QpOiBVc2Ug
QCgpLgorICAgICAgICAoa2l0KTogRGVsZXRlZCBvdmVybG9hZCB0aGF0IHRha2VzIFZlY3RvcjxT
dHJpbmc+LgorICAgICAgICAocGx1Z2luVmlldyk6IFVzZSBAe30uCisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKTogVXNlIGNyZWF0ZU5TQXJyYXksIEB7fSwgYW5k
IEAoKS4KKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbToKKyAgICAgICAgKC1bV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWVzOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAg
ICAgICAoLVtXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlbmFtZTpkaXNwbGF5
U3RyaW5nOmljb25JbWFnZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWVzOmRpc3BsYXlTdHJpbmc6aWNvbkltYWdlOl0pOiBV
c2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlcjo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKToKKyAgICAgICAgQ29tbWVu
dCBvdXQgYW4gdW51c2VkIGFyZ3VtZW50LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3JlY3RzRm9yUmFuZ2U6XSk6IFVzZSBjcmVhdGVOU0Fy
cnJheS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTY2Fs
ZUZhY3RvcjpwYWdlU2l6ZTpdKTogVXNlIGNyZWF0ZU5TQXJyYXkgYW5kIEBbXS4KKyAgICAgICAg
KC1bV2ViRnJhbWUgY2hpbGRGcmFtZXNdKTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFZpZXcubW06CisgICAgICAgICgrW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25QYXN0ZWJv
YXJkVHlwZXNdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21p
c2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcga25vd3NQYWdlUmFuZ2U6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY29weUZvbnQ6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYkhUTUxWaWV3
IF9pbnRlcnByZXRLZXlFdmVudDpzYXZpbmdDb21tYW5kczpdKTogVXNlIEBbXS4KKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgc2VsZWN0aW9uVGV4dFJlY3RzXSk6IFVzZSBjcmVhdGVOU0FycmF5Lgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyByZWN0c0ZvclRleHRNYXRjaGVzXSk6IFVzZSBjcmVhdGVO
U0FycmF5IGFuZCBAW10uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9u
Lm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICgrW1dlYlBERlJlcHJlc2Vu
dGF0aW9uIHBvc3RTY3JpcHRNSU1FVHlwZXNdKTogVXNlIEBbXS4KKyAgICAgICAgKCtbV2ViUERG
UmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVzXSk6IFVzZSBAW10uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgZWxlbWVudEF0
UG9pbnQ6XSk6IFVzZSBAe30gYW5kIEAoKS4KKyAgICAgICAgKC1bV2ViUERGVmlldyB2aWV3U3Rh
dGVdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViUERGVmlldyBzZWxlY3Rpb25UZXh0UmVjdHNd
KTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViUERGVmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxl
Y3Rpb25dKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2ViUERGVmlldyBfbWVudUl0ZW1zRnJvbVBE
RktpdEZvckV2ZW50Ol0pOiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJQREZWaWV3IF9vcGVuV2l0
aEZpbmRlcjpdKTogVXNlIEB7fSBhbmQgQCgpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOiBVc2Ug
QCgpLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VW5zaWduZWRJbnRWYWx1ZTpmb3JL
ZXk6XSk6IFVzZSBAKCkuCisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRJbml0aWFsRGVm
YXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2RpbmddKTogVXNlIEAoKS4KKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5Ol0pOiBVc2UgQHt9IGFuZCBA
KCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAo
V2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyIF9wbGFjZVBvcHVwV2luZG93Ol0pOiBVc2UgQHt9LgorCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJl
bmNlc0NoYW5nZWQ6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgtW1dlYlZp
ZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTpdKTogVXNlIEAoKS4KKyAgICAgICAgKHRv
U3RyaW5nVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlw
dFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRp
bWU6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisg
ICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6
dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgIFVzZSBt
YWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgtW1dlYlZpZXcgX2VsZW1lbnRBdFdpbmRvd1Bv
aW50Ol0pOiBVc2UgQHt9LgorICAgICAgICAoLVtXZWJWaWV3IHBhc3RlYm9hcmRUeXBlc0ZvclNl
bGVjdGlvbl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJWaWV3IHBhc3RlYm9hcmRUeXBlc0Zv
ckVsZW1lbnQ6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYlZpZXcgcmVjdHNGb3JUZXh0TWF0
Y2hlc10pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJWaWV3IF9zZWFyY2hXaXRoR29vZ2xlRnJv
bU1lbnU6XSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYlZpZXcgX3NldEZvbnRXaGl0ZWxpc3Q6
XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKIDIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRyYWNrIGVkaXRhYmxlIGVsZW1lbnRzIG9u
IHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGY2MGQxZmIzM2U0
NmM1MzczM2MwOTAzMTIzOWQ4ZjY5YjRhYjEzZDguLmM5MWU2ZWEyNzhhYjE5NmE2MWViZmZhYzRj
OGMwODA0ZGY3MzExNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTQ2
LDcgKzQ2LDYgQEAKICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNl
dC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC03NDIsNyArNzQxLDcgQEAg
c3RhdGljIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29w
eShKU0dsb2JhbENvbnRleHRSZWYgY28KICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgbnVt
YmVyLCBzbyBpdCB3aWxsIHVuaXF1ZSBjb3JyZWN0bHkgaW4gdGhlIGhhc2ggbWFwIC0KICAgICAg
ICAgICAgIC8vIGl0J3MgbmljZXIgbm90IHRvIGxlYWsgdGhpcyBpbnRlcm5hbCBpbXBsZW1lbnRh
dGlvbiBkZXRhaWwhCiAgICAgICAgICAgICB2YWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRl
eHQsIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJp
bWl0aXZlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6SlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIHZhbHVlLCAwKV07CisgICAgICAgICAgICBwcmltaXRpdmUgPSBAKEpTVmFsdWVUb051bWJl
cihjb250ZXh0LCB2YWx1ZSwgMCkpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc1N0cmlu
Zyhjb250ZXh0LCB2YWx1ZSkpIHsKICAgICAgICAgICAgIC8vIFdvdWxkIGJlIG5pY2UgdG8gdW5p
cXVlIHN0cmluZ3MsIHRvby4KICAgICAgICAgICAgIGF1dG8ganNzdHJpbmcgPSBhZG9wdFJlZihK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCAwKSk7CkBAIC04MzcsNyArODM2LDcg
QEAgaWQgdmFsdWVUb051bWJlcihKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXAKICAgICAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xl
YW4oY29udGV4dCwgdmFsdWUpID8gQFlFUyA6IEBOTzsKIAogICAgIGRvdWJsZSByZXN1bHQgPSBK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOipleGNlcHRpb24gPyBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpIDogcmVzdWx0XTsKKyAgICByZXR1cm4gQCgqZXhjZXB0aW9u
ID8gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSA6IHJlc3VsdCk7CiB9
CiAKIGlkIHZhbHVlVG9TdHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCBlZmFmMzBkZDQ0ZTYyYzNmOTE3ZmI2YmVlNmViMWI4
ZjBhYzYxNjU2Li40MjJjYmE1N2Y5NDE1MDc3MzAyNzQ0MjlhMThjNDQxODlkOTczMWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0xMjgsNyArMTI4
LDcgQEAgLSAoTlNTdHJpbmcgKil0ZXN0QXJndW1lbnRUeXBlc1dpdGhJbnQ6KGludClpIGRvdWJs
ZTooZG91YmxlKWQgYm9vbGVhbjooQk9PTCliIHMKIH0KIC0gKHZvaWQpY2FsbGJhY2s6KEpTVmFs
dWUgKilmdW5jdGlvbgogewotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6NDJdXV07CisgICAgW2Z1
bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOkBbQCg0MildXTsKIH0KIC0gKHZvaWQpYm9ndXNDYWxs
YmFjazoodm9pZCheKShpbnQpKWZ1bmN0aW9uCiB7CkBAIC0xOTksNyArMTk5LDcgQEAgLSAodm9p
ZCljbGljawogICAgICAgICByZXR1cm47CiAKICAgICBKU1ZhbHVlICpmdW5jdGlvbiA9IFttX29u
Y2xpY2tIYW5kbGVyIHZhbHVlXTsKLSAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6W05T
QXJyYXkgYXJyYXldXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6QFtdXTsKIH0K
IEBlbmQKIApAQCAtMTE3MSwxMCArMTE3MSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVD
QVBJTWFpbigpCiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKICAgICAgICAgY29udGV4dFtAImhhbmRsZVRoZURpY3Rpb25hcnkiXSA9IF4oTlNE
aWN0aW9uYXJ5ICpkaWN0KSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmV4cGVjdGVkRGlj
dCA9IEB7Ci0gICAgICAgICAgICAgICAgQCJmb28iIDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
MV0sCi0gICAgICAgICAgICAgICAgQCJiYXIiIDogQHsKLSAgICAgICAgICAgICAgICAgICAgQCJi
YXoiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXQotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBAImZvbyI6IEAoMSksCisgICAgICAgICAgICAgICAgQCJiYXIiOiBAeyBAImJh
eiI6IEAoMikgfQogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAicmVj
dXJzaXZlbHkgY29udmVydCBuZXN0ZWQgZGljdGlvbmFyaWVzIiwgW2RpY3QgaXNFcXVhbFRvRGlj
dGlvbmFyeTpleHBlY3RlZERpY3RdKTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhMjVlOTM0YTExNjIxZDM4ODg1YzUwODA3YmNhYTg5
N2MyOWE4OGMuLmU0M2IzYjRjMmE5OGZmNWFhNTNlNjg0ODFjM2EzMTI0NmM2MDZmM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc3LDYgKzQ3Nyw3IEBA
CiAJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzMjQxNjU3MjQzQkMyRTUwMDMyRkFBRSAvKiBWZWN0b3JDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWZWN0b3JDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzNENjMxOTFGQ0I2QUI5MDAzMkVDRDYgLyogU3RyaW5nSGFzaGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5Mzg0QjczRTIwREVBMjg0MDA1QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ0ZYUENCcmlkZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjQsNiArMTUyNSw3IEBACiAJCQkJQTMw
RDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8sCiAJCQkJRUI2MUVEQzYy
NDA5Q0NDMDAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi8sCiAJCQkJNUNDMEVF
ODYyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovLAorCQkJCTkzMjQxNjU3MjQzQkMy
RTUwMDMyRkFBRSAvKiBWZWN0b3JDb2NvYS5oICovLAogCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUz
NkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2ZTg2MzMyY2UyM2ZmMmUzM2ZjMTYzNjY1Mjcz
MmQ4MDU5ZjZkZWRiLi5iNzRhMjc3MjhlYzU1MDA3NTU4N2UwYTQ4MjVjMjE4MWZiOTU5MTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTgsNiArMTgsNyBAQCBsaXN0KEFQUEVORCBX
VEZfUFVCTElDX0hFQURFUlMKICAgICBjb2NvYS9OU1VSTEV4dHJhcy5oCiAgICAgY29jb2EvUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKKyAg
ICBjb2NvYS9WZWN0b3JDb2NvYS5oCiAKICAgICBkYXJ3aW4vV2Vha0xpbmtpbmcuaAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYv
d3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCmluZGV4IDNhNGZjYTk5MWY0NmJmZmJhNzQyZDZiNTkx
M2NkZGQ4NWIxZGU1MDUuLjQ3ZGVlNjI5NTZhMzM0NGY2OTUxMzhmZTY4M2I4NGI2Yzc4MzEzOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1w
b3J0ICJOU1VSTEV4dHJhcy5oIgogCiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQg
PHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1VSTEhlbHBlcnMuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYv
Y29jb2EvVVJMQ29jb2EubW0KaW5kZXggMjNlZTllNmU4ZDBjMTI5Y2U1M2RlYzlhNGY4Mzc0NzY0
NDBlMDY4Yy4uNmJkYWU4MGJkNjc2MTZhMTQ4OTIxYmZmNjM5MGJkMDEzYmExOWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93
dGYvY29jb2EvVVJMQ29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVj
dG9yQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjI5YzJmM2MxODQwZWUwMWNlMDRhOTZlN2JmNzI4OWUz
YjQ2OWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29j
b2EuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKKy8vIFNwZWNpYWxpemUgdGhlIGJlaGF2aW9yIG9mIHRoZXNlIGZ1
bmN0aW9ucyBieSBvdmVybG9hZGluZyB0aGUgbWFrZU5TQXJyYXlFbGVtZW50CisvLyBmdW5jdGlv
bnMgYW5kIG1ha2VWZWN0b3JFbGVtZW50IGZ1bmN0aW9ucy4gVGhlIG1ha2VOU0FycmF5RWxlbWVu
dCBmdW5jdGlvbiB0YWtlcworLy8gYSBjb25zdCYgdG8gYSB2ZWN0b3IgZWxlbWVudCBhbmQgY2Fu
IHJldHVybiBlaXRoZXIgYSBSZXRhaW5QdHI8aWQ+IG9yIGFuIGlkCisvLyBpZiB0aGUgdmFsdWUg
aXMgYXV0b3JlbGVhc2VkLiBUaGUgbWFrZVZlY3RvckVsZW1lbnQgZnVuY3Rpb24gdGFrZXMgYW4g
aWdub3JlZAorLy8gcG9pbnRlciB0byB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZSwgbWFraW5nIGFy
Z3VtZW50LWRlcGVuZGVudCBsb29rdXAgd29yaywgYW5kIGFuCisvLyBpZCBmb3IgdGhlIGFycmF5
IGVsZW1lbnQsIGFuZCByZXR1cm5zIGFuIE9wdGlvbmFsPFQ+IG9mIHRoZSB0aGUgdmVjdG9yIGVs
ZW1lbnQsCisvLyBhbGxvd2luZyB1cyB0byBmaWx0ZXIgb3V0IGFycmF5IGVsZW1lbnRzIHRoYXQg
YXJlIG5vdCBvZiB0aGUgZXhwZWN0ZWQgdHlwZS4KKy8vCisvLyAgICBSZXRhaW5QdHI8aWQ+IG1h
a2VOU0FycmF5RWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlwZSYgdmVjdG9yRWxlbWVudCk7
CisvLyAgICAgICAgLW9yLQorLy8gICAgaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFZlY3Rv
ckVsZW1lbnRUeXBlJiB2ZWN0b3JFbGVtZW50KTsKKy8vCisvLyAgICBPcHRpb25hbDxWZWN0b3JF
bGVtZW50VHlwZT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgVmVjdG9yRWxlbWVudFR5cGUqLCBp
ZCBhcnJheUVsZW1lbnQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiBSZXRhaW5Q
dHI8TlNBcnJheT4gY3JlYXRlTlNBcnJheShjb25zdCBWZWN0b3JUeXBlJik7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBWZWN0b3JFbGVtZW50VHlwZT4gVmVjdG9yPFZlY3RvckVsZW1lbnRUeXBlPiBtYWtl
VmVjdG9yKE5TQXJyYXkgKik7CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGZ1
bmN0aW9uIHRlbXBsYXRlcyBhYm92ZS4KKwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4g
UmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJyYXkoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9y
KQoreworICAgIGF1dG8gc2l6ZSA9IHZlY3Rvci5zaXplKCk7CisgICAgYXV0byBhcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSk7Cisg
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogdmVjdG9yKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OmdldFB0cihtYWtlTlNBcnJheUVsZW1lbnQoZWxlbWVudCkpXTsKKyAgICByZXR1cm4gYXJyYXk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvckVsZW1lbnRUeXBlPiBWZWN0b3I8VmVjdG9y
RWxlbWVudFR5cGU+IG1ha2VWZWN0b3IoTlNBcnJheSAqYXJyYXkpCit7CisgICAgVmVjdG9yPFZl
Y3RvckVsZW1lbnRUeXBlPiB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYXJyYXkuY291bnQpOworICAgIGZvciAoaWQgZWxlbWVudCBpbiBhcnJheSkgeworICAgICAg
ICBjb25zdGV4cHIgY29uc3QgVmVjdG9yRWxlbWVudFR5cGUqIHR5cGVkTnVsbCA9IG51bGxwdHI7
CisgICAgICAgIGlmIChhdXRvIHZlY3RvckVsZW1lbnQgPSBtYWtlVmVjdG9yRWxlbWVudCh0eXBl
ZE51bGwsIGVsZW1lbnQpKQorICAgICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKCp2ZWN0b3JFbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiB2ZWN0b3I7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Om1ha2VWZWN0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCBjMmFkZmJlNjgwMjVhZWFhZmZkNmU2NmQzZjFhMGM3OTRiZDRkYjBjLi5h
MjM3MGM3OWI2OGI0MjMwNjQ2YWU0N2Q0YWZjM2U2ZTU1NDRhNDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTQ1NCw2ICs0NTQsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvblRyYWl0PFN0cmluZz4gewogICAgIHN0YXRpYyBTdHJpbmcgZmx1c2go
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCopIHsgcmV0dXJuIHsgY2hh
cmFjdGVycywgbGVuZ3RoIH07IH0KIH07CiAKKyNpZmRlZiBfX09CSkNfXworCitXVEZfRVhQT1JU
X1BSSVZBVEUgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgU3RyaW5nJik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChj
b25zdCBTdHJpbmcqLCBpZCk7CisKKyNlbmRpZgorCiAvLyBEZWZpbml0aW9ucyBvZiBzdHJpbmcg
b3BlcmF0aW9ucwogCiBpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCYgc3RyaW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbSBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KaW5kZXggMWJmYzUyOGEyMWZh
NTQ0YWI1YzQzNjM0NDYzNTQ2ZWI2OThiODc3Yy4uOTU4YmNmMDdiODY2NDcwNDFiMzM2MjYxMDhj
ODc2ZTNkOTQ2NzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJp
bmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1t
CkBAIC00OCw0ICs0OCwxNiBAQCBTdHJpbmc6OlN0cmluZyhOU1N0cmluZyAqc3RyKQogICAgIH0K
IH0KIAorUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgU3RyaW5nJiB2ZWN0
b3JFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdE5TKChfX2JyaWRnZV90cmFuc2ZlciBpZCl2
ZWN0b3JFbGVtZW50LmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKK30KKworT3B0aW9uYWw8
U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBTdHJpbmcqLCBpZCBhcnJheUVsZW1lbnQp
Cit7CisgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgYXJyYXlFbGVt
ZW50IH0gfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBjMjNlNDk0NzA0
OGY5OGZjZjQ4ZTFhYTNjZGYwYTVhYjkwOTIyYzVmLi42MjJiNDNhZDA5ZmM0Mzc0MmQ0YjVlMWZi
ZDNhODY3MzQyYzA1MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzA3LDE2ICsz
MDcsMTggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9VVElSZWdpc3RyeS5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlUG9vbENvY29hLm1tCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENv
Y29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KQEAgLTMzNSw3ICszMzcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29y
ZVRleHQubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCi0gICAg
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFNpemVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENh
Y2hlTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCkBAIC0zNDMsNyArMzQ0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMu
bW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JbnRTaXplTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9u
dERhdGFDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGZmYzYxYjQ4NjU1
MjBkZmE3N2VkYTRiYTRkMDk3NjJkNjJlZWIzMTYuLjBiYWZkMzZmYTY1ODc3NjAyMzU4ZjdmZWY5
YTdkYjU0MmMxZDZiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzE1LDYgKzMxNSw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQ29sb3JDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDb2NvYS5tbQpAQCAtMzI0LDYgKzMyNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVW
Q1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQorcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQpAQCAtMzY3LDcgKzM2
OSw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0Zsb2F0UG9pbnRNYWMubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q2FjaGVNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcApAQCAtMzc1LDcgKzM3Niw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9H
bHlwaFBhZ2VNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9p
bnRNYWMubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRSZWN0TWFjLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSW50U2l6ZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3Vt
ZW50SW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVU
ZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDNhZDUzY2Y1ZDJkNzc4ZmQ4YzZiZDZhYTI2NmUwZTcxODRiMDE3MDUuLjdh
Y2RjNGRjMmM2MTBkNTkxMTU3MmZkZjM3NjliY2ZhNDc2NDg1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzY5LDExICsx
Mjc2OSwxMSBAQAogCQlCMjc1MzU0ODBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludFNpemVIYXNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvck1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEIwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UG9pbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRmxvYXRQb2ludE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3
NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFJlY3RNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFJlY3RD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEQwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBGbG9hdFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNzUzNTRFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFBvaW50TWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyog
SW50UmVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJ
bnRSZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjc1MzU1MDBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50UmVjdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEludFJlY3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1NTEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50U2l6ZU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0aC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjUxNDcsNyArMjUxNDcsNiBAQAogCQkJCTQ5QUYyRDZCMTQ0MzVE
MjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovLAogCQkJCTJERTcw
MDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLywKIAkJ
CQlCMjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLywKLQkJCQlC
Mjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0TWFjLm1tICovLAogCQkJCUIyNzUz
NTREMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzQw
RDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSAqLywKIAkJCQlCMkFGRkM3NTBEMDBB
NUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgKi8sCkBAIC0yNTE1Niw3
ICsyNTE1NSw2IEBACiAJCQkJQjI3NTM1OEQwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25NYWMubW0g
Ki8sCiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tICovLAogCQkJ
CUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5tbSAqLywKLQkJCQlCMjc1
MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1hYy5tbSAqLywKIAkJCQlCMjc1MzU1MTBC
MDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1hYy5tbSAqLywKIAkJCQkyRDZFNDY4MjE3RDY2MEY1
MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1hYy5tbSAqLywKIAkJCQkxNjNFODhGNTExOEEz
OUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCkBAIC0yNTUxMyw2
ICsyNTUxMSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGNDhEMkFBMzIxNTk3NDBEMDBDNjc1
MkIgLyogQ29sb3JDb2NvYS5oICovLAogCQkJCUY0OEQyQUE0MjE1OTc0MEQwMEM2NzUyQiAvKiBD
b2xvckNvY29hLm1tICovLAorCQkJCUIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RDb2NvYS5tbSAqLywKIAkJCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hl
Q29yZVRleHQuY3BwICovLAogCQkJCUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2Fj
aGVDb3JlVGV4dC5oICovLAogCQkJCUIyQUZGQzc4MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2Fz
Y2FkZUNvY29hLm1tICovLApAQCAtMjU1MjUsNiArMjU1MjQsNyBAQAogCQkJCTQ5RkZCRjFDMTFD
ODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJ
CUNEQTU5NTk2MjE0NkRGNzgwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDREE1OTU5NzIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLAor
CQkJCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q29jb2EubW0gKi8sCiAJCQkJ
MkQwQjRBQTkxOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5oICovLAogCQkJCTJEMEI0QUFB
MThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UubW0gKi8sCiAJCQkJQUQ5RkY2RTAxOTA4Mzkx
RDAwM0I2MUUwIC8qIElPU3VyZmFjZVBvb2xDb2NvYS5tbSAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggMTQ5YTZmMjY5ODcwM2U5M2FjNzExNjFmOTIzYzBl
OWE0ZjFkYThhNi4uYWQ0NzFjYzI4NjhlMjMwYWNjNDYxYjMzNWYzNDQzYjVmM2Y3M2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIxMzYsNyArMjEzNiw3
IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTCiAgICAgaW50IHF1b3RlTGV2ZWwgPSBibG9ja3F1
b3RlTGV2ZWwocmVuZGVyZXIpOwogICAgIAogICAgIGlmIChxdW90ZUxldmVsKQotICAgICAgICBb
YXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2
ZWwgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2Vd
OworICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5C
bG9ja3F1b3RlTGV2ZWwgdmFsdWU6QChxdW90ZUxldmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxz
ZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9r
ZW5CbG9ja3F1b3RlTGV2ZWwgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtMjE1MCw3ICsyMTUwLDcgQEAg
c3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyogYXR0clN0cmkKICAgICBpbnQgcGFyZW50SGVhZGluZ0xldmVsID0gcGFy
ZW50T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKICAgICAKICAgICBpZiAocGFyZW50SGVhZGluZ0xl
dmVsKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9r
ZW5IZWFkaW5nTGV2ZWwgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cGFyZW50SGVhZGlu
Z0xldmVsXSByYW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpV
SUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1ZTpAKHBhcmVudEhlYWRpbmdMZXZl
bCkgcmFuZ2U6cmFuZ2VdOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIHJhbmdlOnJhbmdlXTsKIH0K
QEAgLTI0NDMsNyArMjQ0Myw3IEBAIC0gKE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JTZWxl
Y3Rpb24KICAgICBpZiAoIXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRN
YXJrZXIsIGVuZE1hcmtlciwgbmlsXTsKKyAgICByZXR1cm4gQFtzdGFydE1hcmtlciwgZW5kTWFy
a2VyXTsKIH0KIAogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyRm9y
UG9zaXRpb246KE5TSW50ZWdlcilwb3NpdGlvbgpAQCAtMjQ2OCw3ICsyNDY4LDcgQEAgLSAoaWQp
X3N0cmluZ0Zyb21TdGFydE1hcmtlcjooV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKXN0YXJ0
TWFya2VyIHRvRW5kTWFya2UKICAgICBpZiAoIXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJh
eU9mVGV4dEZvclRleHRNYXJrZXJzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJr
ZXIsIGVuZE1hcmtlciwgbmlsXSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdOworICAgIE5TQXJyYXkq
IGFycmF5ID0gW3NlbGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0TWFya2VyLCBl
bmRNYXJrZXJdIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF07CiAgICAgQ2xhc3MgcmV0dXJuQ2xhc3Mg
PSBhdHRyaWJ1dGVkID8gW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIDogW05TTXV0
YWJsZVN0cmluZyBjbGFzc107CiAgICAgaWQgcmV0dXJuVmFsdWUgPSBbWyhOU1N0cmluZyAqKVty
ZXR1cm5DbGFzcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAgIApAQCAtMjU4Niw3ICsy
NTg2LDcgQEAgLSAoTlNBcnJheSAqKWVsZW1lbnRzRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKICAg
ICBpZiAoIXN0YXJ0TWFya2VyIHx8ICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgCi0gICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRNYXJrZXJz
OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRNYXJrZXIsIGVuZE1hcmtlciwgbmlsXSBh
dHRyaWJ1dGVkOk5PXTsKKyAgICBOU0FycmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9y
VGV4dE1hcmtlcnM6QFtzdGFydE1hcmtlciwgZW5kTWFya2VyXSBhdHRyaWJ1dGVkOk5PXTsKICAg
ICBOU011dGFibGVBcnJheSogZWxlbWVudHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAg
IGZvciAoaWQgZWxlbWVudCBpbiBhcnJheSkgewogICAgICAgICBpZiAoIVtlbGVtZW50IGlzS2lu
ZE9mQ2xhc3M6W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0pCkBAIC0yODUyLDcg
KzI4NTIsNyBAQCAtIChOU0FycmF5ICopdGV4dE1hcmtlcnNGb3JSYW5nZTooUmVmUHRyPFJhbmdl
PilyYW5nZQogICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmQgPSBbV2ViQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTpyYW5nZSBpc1N0
YXJ0Ok5PIGNhY2hlOnNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCldOwogICAg
IGlmICghc3RhcnQgfHwgIWVuZCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydCwgZW5kLCBuaWxdOworICAgIHJldHVybiBAW3N0
YXJ0LCBlbmRdOwogfQogCiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlFeHBhbmRlZFRleHRW
YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KaW5kZXggNjg4NzgyY2ZkZWQ3YWU1MzdkNGE3NGIyNmIyY2E4NDk1MjE0MTMy
Yi4uYjE1Y2QwNTgwNTJlNmJkNmNmMzRkMTUzNGZhZmI4MTFmY2QwYTNjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBA
IC00NDUsNyArNDQ1LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqdGV4dFJlcGxhY2VtZW50Q2hh
bmdlRGljdGlvbmFyeShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhUZXgKICAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpjaGFuZ2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6NF07CiAgICAgW2NoYW5nZSBzZXRPYmplY3Q6QChwbGF0Zm9ybUVkaXRUeXBlRm9y
V2ViQ29yZUVkaXRUeXBlKHR5cGUpKSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRUeXBl
XTsKICAgICBpZiAobGVuZ3RoID4gQVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGgpIHsKLSAg
ICAgICAgW2NoYW5nZSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGVuZ3RoXSBm
b3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlTGVuZ3RoXTsKKyAgICAgICAgW2No
YW5nZSBzZXRPYmplY3Q6QChsZW5ndGgpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdl
VmFsdWVMZW5ndGhdOwogICAgICAgICB0ZXh0ID0gW3RleHQgc3Vic3RyaW5nVG9JbmRleDpBWFZh
bHVlQ2hhbmdlVHJ1bmNhdGlvbkxlbmd0aF07CiAgICAgfQogICAgIFtjaGFuZ2Ugc2V0T2JqZWN0
OnRleHQgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggMWFlNmFhOWM1OGU0ZmU0MWY1YWRk
NThkYjU2NWE1M2E1YzI3OWM4OC4uMWM2YjE1NTlhNmYwOWMwOTZjZjMxY2FiMTMwNDU4YmU3M2Zi
Zjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtNjUs
NiArNjUsNyBAQAogI2ltcG9ydCAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW1wb3J0ICJWaXNp
YmxlVW5pdHMuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oPgpAQCAtNjkxLDYgKzY5MiwxMyBAQCBzdGF0aWMgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHNlYXJjaEtleSkgPyBzZWFy
Y2hLZXkgOiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBlOwogfQogCitzdGF0aWMgT3B0
aW9uYWw8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleSosIGlkIGFycmF5RWxlbWVudCkKK3sKKyAgICBpZiAoIVthcnJh
eUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKGFycmF5RWxlbWVudCkgfSB9OworfQorCiBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEg
YWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpCiB7
CiAgICAgTlNTdHJpbmcgKmRpcmVjdGlvblBhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmli
dXRlIG9iamVjdEZvcktleTpAIkFYRGlyZWN0aW9uIl07CkBAIC03MjksMTYgKzczNyw5IEBAIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JT
ZWFyY2hQcmVkaWNhdGVQYXJhbWV0CiAgICAgCiAgICAgaWYgKFtzZWFyY2hLZXlQYXJhbWV0ZXIg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgY3JpdGVyaWEuc2VhcmNo
S2V5cy5hcHBlbmQoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhzZWFyY2hLZXlQYXJh
bWV0ZXIpKTsKLSAgICBlbHNlIGlmIChbc2VhcmNoS2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6
W05TQXJyYXkgY2xhc3NdXSkgewotICAgICAgICBzaXplX3Qgc2VhcmNoS2V5Q291bnQgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KFtzZWFyY2hLZXlQYXJhbWV0ZXIgY291bnRdKTsKLSAgICAgICAgY3Jp
dGVyaWEuc2VhcmNoS2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlYXJjaEtleUNvdW50KTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWFyY2hLZXlDb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBOU1N0cmluZyAqc2VhcmNoS2V5ID0gW3NlYXJjaEtleVBhcmFtZXRlciBvYmpl
Y3RBdEluZGV4OmldOwotICAgICAgICAgICAgaWYgKFtzZWFyY2hLZXkgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnVu
Y2hlY2tlZEFwcGVuZChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleSkp
OwotICAgICAgICB9Ci0gICAgfQotICAgIAorICAgIGVsc2UgaWYgKFtzZWFyY2hLZXlQYXJhbWV0
ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICBjcml0ZXJpYS5zZWFy
Y2hLZXlzID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PihzZWFyY2hLZXlQYXJh
bWV0ZXIpOworCiAgICAgcmV0dXJuIGNyaXRlcmlhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDM2NDA0MzM4ZDY1NzMzNjBkZTJlYTBlNzI5YWFiNjhk
OWU1OWJkNjUuLmI0MDNkM2Y2YzUxNmZiNmJkNjBmYTljYmNmYWZjNWE0NDQxNTJhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03OCw3ICs3OCw3IEBACiAj
aW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNj
ZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgot
I2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY0NSwxNCArNjQ1LDggQEAgc3RhdGljIHN0ZDo6cGFp
cjxBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhLCBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dGlvbj4gYWMKICAgICBpZiAoW3JlcGxhY2VtZW50U3RyaW5nUGFyYW1ldGVyIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIG9wZXJhdGlvbi5yZXBsYWNlbWVudFRleHQg
PSByZXBsYWNlbWVudFN0cmluZ1BhcmFtZXRlcjsKIAotICAgIGlmIChbc2VhcmNoU3RyaW5nc1Bh
cmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKLSAgICAgICAgc2l6ZV90
IHNlYXJjaFN0cmluZ3NDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oW3NlYXJjaFN0cmluZ3NQ
YXJhbWV0ZXIgY291bnRdKTsKLSAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5ncy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNlYXJjaFN0cmluZ3NDb3VudCk7Ci0gICAgICAgIGZvciAoTlNTdHJp
bmcgKnNlYXJjaFN0cmluZyBpbiBzZWFyY2hTdHJpbmdzUGFyYW1ldGVyKSB7Ci0gICAgICAgICAg
ICBpZiAoW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAg
ICAgICAgICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHNlYXJj
aFN0cmluZyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKFtzZWFyY2hTdHJpbmdzUGFyYW1l
dGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY3JpdGVyaWEuc2Vh
cmNoU3RyaW5ncyA9IG1ha2VWZWN0b3I8U3RyaW5nPihzZWFyY2hTdHJpbmdzUGFyYW1ldGVyKTsK
IAogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihjcml0ZXJpYSwgb3BlcmF0aW9uKTsKIH0KQEAg
LTY2NSwxNCArNjU5LDggQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEg
YWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYUZvclBhcmFtZXQKICAgICBOU1N0cmluZyAq
c3RhcnQgPSBbcGFyYW1zIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3Rh
cnRGcm9tXTsKICAgICBOU1N0cmluZyAqZGlyZWN0aW9uID0gW3BhcmFtcyBvYmplY3RGb3JLZXk6
TlNBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbl07CiAKLSAgICBpZiAoW3NlYXJjaFN0
cmluZ3MgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0gICAgICAgIHNpemVfdCBz
ZWFyY2hTdHJpbmdzQ291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFtzZWFyY2hTdHJpbmdzIGNv
dW50XSk7Ci0gICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzZWFyY2hTdHJpbmdzQ291bnQpOwotICAgICAgICBmb3IgKE5TU3RyaW5nICpzZWFyY2hT
dHJpbmcgaW4gc2VhcmNoU3RyaW5ncykgewotICAgICAgICAgICAgaWYgKFtzZWFyY2hTdHJpbmcg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBjcml0ZXJp
YS5zZWFyY2hTdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChzZWFyY2hTdHJpbmcpOwotICAgICAgICB9
Ci0gICAgfQorICAgIGlmIChbc2VhcmNoU3RyaW5ncyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pCisgICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MgPSBtYWtlVmVjdG9yPFN0cmlu
Zz4oc2VhcmNoU3RyaW5ncyk7CiAKICAgICBpZiAoW3N0YXJ0IGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pIHsKICAgICAgICAgaWYgKFtzdGFydCBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbUJlZ2luXSkKQEAgLTEwMTksOSArMTAwNyw5IEBA
IHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAgICAgLy8gc2V0IHN1cGVyL3N1YiBzY3JpcHRpbmcK
ICAgICBWZXJ0aWNhbEFsaWduIGFsaWdubWVudCA9IHN0eWxlLnZlcnRpY2FsQWxpZ24oKTsKICAg
ICBpZiAoYWxpZ25tZW50ID09IFZlcnRpY2FsQWxpZ246OlN1YikKLSAgICAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRU
ZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDooLTEpXSwgcmFuZ2UpOworICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIEAoLTEpLCByYW5nZSk7CiAgICAgZWxzZSBpZiAo
YWxpZ25tZW50ID09IFZlcnRpY2FsQWxpZ246OlN1cGVyKQotICAgICAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRB
dHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdLCByYW5nZSk7CisgICAgICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVy
c2NyaXB0VGV4dEF0dHJpYnV0ZSwgQCgxKSwgcmFuZ2UpOwogICAgIGVsc2UKICAgICAgICAgW2F0
dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0
dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgCkBAIC0xMDc0LDcgKzEwNjIsNyBAQCBzdGF0aWMg
dm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nKiBhdHRyUwogICAgIGludCBxdW90ZUxldmVsID0gb2JqLT5ibG9ja3F1b3RlTGV2
ZWwoKTsKICAgICAKICAgICBpZiAocXVvdGVMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRk
QXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSB2YWx1ZTpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpxdW90ZUxldmVsXSByYW5nZTpyYW5nZV07CisgICAgICAg
IFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxB
dHRyaWJ1dGUgdmFsdWU6QChxdW90ZUxldmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQogICAg
ICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90
ZUxldmVsQXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KQEAgLTExNTMsNyArMTE0MSw3IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKE5TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcqIGF0dHJTdHJpCiAgICAgfQogICAgIAogICAgIGlmIChwYXJlbnRIZWFkaW5n
TGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpAIkFYSGVhZGluZ0xldmVs
IiB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpwYXJlbnRIZWFkaW5nTGV2ZWxdIHJhbmdl
OnJhbmdlXTsKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2
ZWwiIHZhbHVlOkAocGFyZW50SGVhZGluZ0xldmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQog
ICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgcmFu
Z2U6cmFuZ2VdOwogfQpAQCAtMTMxMiwxNyArMTMwMCwxNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKIAogICAgIC8vIEFsbCBlbGVtZW50cyBzaG91bGQgZ2V0IFNob3dN
ZW51IGFuZCBTY3JvbGxUb1Zpc2libGUuCiAgICAgLy8gQnV0IGNlcnRhaW4gZWFybGllciBWb2lj
ZU92ZXIgdmVyc2lvbnMgZG8gbm90IHN1cHBvcnQgc2Nyb2xsIHRvIHZpc2libGUsIGFuZCBpdCBj
b25mdXNlcyB0aGVtIHRvIHNlZSBpdCBpbiB0aGUgbGlzdC4KLSAgICBzdGF0aWMgTlNBcnJheSAq
ZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlz
aWJsZUFjdGlvbiwgbmlsXTsKKyAgICBzdGF0aWMgTlNBcnJheSAqZGVmYXVsdEVsZW1lbnRBY3Rp
b25zID0gW0BbTlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNj
cm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0YWluXTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBh
bGxvdyBQcmVzcy4KICAgICAvLyBUaGUgb3JkZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwg
d2hpY2ggZXhwZWN0cyB0aGUgJ2RlZmF1bHQnIGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9u
LiBJbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQgYWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBz
dGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5
U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbiwgbmls
XTsKKyAgICBzdGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVudEFjdGlvbnMgPSBbQFtOU0FjY2Vz
c2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNj
ZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0YWluXTsKIAogICAgIC8vIE1lbnUg
ZWxlbWVudHMgYWxsb3cgUHJlc3MgYW5kIENhbmNlbC4KICAgICBzdGF0aWMgTlNBcnJheSAqbWVu
dUVsZW1lbnRBY3Rpb25zID0gW1thY3Rpb25FbGVtZW50QWN0aW9ucyBhcnJheUJ5QWRkaW5nT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl0gcmV0YWluXTsKIAogICAgIC8vIFNsaWRl
ciBlbGVtZW50cyBhbGxvdyBJbmNyZW1lbnQvRGVjcmVtZW50LgotICAgIHN0YXRpYyBOU0FycmF5
ICpzbGlkZXJBY3Rpb25zID0gW1tkZWZhdWx0RWxlbWVudEFjdGlvbnMgYXJyYXlCeUFkZGluZ09i
amVjdHNGcm9tQXJyYXk6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlJ
bmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbiwgbmlsXV0gcmV0
YWluXTsKKyAgICBzdGF0aWMgTlNBcnJheSAqc2xpZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1l
bnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5
SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5d
OwogCiAgICAgTlNBcnJheSAqYWN0aW9uczsKICAgICBpZiAoYmFja2luZ09iamVjdC0+c3VwcG9y
dHNQcmVzc0FjdGlvbigpKQpAQCAtMTg4OCwxNCArMTg3Niw2IEBAIHN0YXRpYyB2b2lkIGNvbnZl
cnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoCiAgICAgfQogfQogCi1zdGF0aWMgTlNNdXRhYmxlQXJyYXkgKmNvbnZlcnRTdHJpbmdz
VG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCi17Ci0gICAgTlNNdXRhYmxl
QXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZlY3Rvci5z
aXplKCldOwotICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5nIDogdmVjdG9yKQotICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OnN0cmluZ107Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiAtIChpZCl0
ZXh0TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb24KIHsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvbiA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zZWxlY3Rpb24oKTsKQEAgLTI0MDIsOSArMjM4
Miw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMb2FkZWQiXSkKICAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNMb2FkZWQo
KV07CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExheW91
dENvdW50Il0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFj
a2luZ09iamVjdC0+bGF5b3V0Q291bnQoKV07CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5n
T2JqZWN0LT5sYXlvdXRDb3VudCgpKTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQotICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmJhY2tpbmdPYmplY3Qt
PmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpXTsKKyAgICAgICAgICAgIHJldHVybiBAKGJhY2tp
bmdPYmplY3QtPmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpKTsKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+cHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaCgpXTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCkBAIC0yNDE4LDcgKzIz
OTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAg
IGludCBsZW5ndGggPSBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCk7CiAgICAgICAgICAgICBp
ZiAobGVuZ3RoIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6bGVuZ3RoXTsKKyAgICAgICAg
ICAgIHJldHVybiBAKGxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRl
XSkgewogICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9IGJhY2tpbmdPYmplY3QtPnNl
bGVjdGVkVGV4dCgpOwpAQCAtMjQ0Nyw3ICsyNDI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAobGluZU51bWJlciA8IDApCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OmxpbmVOdW1iZXJdOworICAgICAgICAgICAgcmV0dXJuIEAobGluZU51bWJlcik7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1MDYsMTYgKzI0ODYsMTYgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpCiAgICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpiYWNraW5nT2JqZWN0LT5wYXJlbnRPYmpl
Y3QoKS0+dmFsdWVGb3JSYW5nZSgpXTsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzSGVh
ZGluZygpKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tp
bmdPYmplY3QtPmhlYWRpbmdMZXZlbCgpXTsKKyAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdP
YmplY3QtPmhlYWRpbmdMZXZlbCgpKTsKIAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXND
aGVja2JveE9yUmFkaW8oKSB8fCBiYWNraW5nT2JqZWN0LT5pc01lbnVJdGVtKCkgfHwgYmFja2lu
Z09iamVjdC0+aXNTd2l0Y2goKSB8fCBiYWNraW5nT2JqZWN0LT5pc1RvZ2dsZUJ1dHRvbigpKSB7
CiAgICAgICAgICAgICBzd2l0Y2ggKGJhY2tpbmdPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVl
KCkpIHsKICAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdOworICAgICAg
ICAgICAgICAgIHJldHVybiBAKDApOwogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGU6Ok9uOgotICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDoxXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQCgxKTsKICAgICAgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpNaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml07CisgICAgICAgICAgICAgICAgcmV0dXJuIEAoMik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjUzNSw3ICsyNTE1LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNUYWJJdGVtKCkpCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpXTsKKyAgICAgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzU2VsZWN0ZWQoKSk7CiAKICAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKICAgICAgICAgICAgIGludCByLCBnLCBiOwpA
QCAtMjY5MSw3ICsyNjcxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNvbHVtbigpKSB7CiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRy
aWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJ
bnQ6YmFja2luZ09iamVjdC0+Y29sdW1uSW5kZXgoKV07CisgICAgICAgICAgICByZXR1cm4gQChi
YWNraW5nT2JqZWN0LT5jb2x1bW5JbmRleCgpKTsKIAogICAgICAgICAvLyByb3dzIGF0dHJpYnV0
ZSBmb3IgYSBjb2x1bW4gaXMgdGhlIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNv
bHVtbiBhdCBlYWNoIHJvdwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdCkBAIC0yNzQyLDcgKzI3MjIsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogICAgICAgICAvLyBUcmVlUm9s
ZXMgZG8gbm90IHN1cHBvcnQgY29sdW1ucywgYnV0IE1hYyBBWCBleHBlY3RzIHRvIGJlIGFibGUg
dG8gYXNrIGFib3V0IGNvbHVtbnMgYXQgdGhlIGxlYXN0LgogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdKQot
ICAgICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgICAgIHJldHVybiBA
W107CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pIHsKQEAgLTI3NjAsMTMgKzI3NDAsMTMgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBzaXplX3QgY291
bnQgPSByb3dzQ29weS5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IGNvdW50OyArK2spCiAgICAgICAgICAgICAgICAgaWYgKHJvd3NDb3B5W2tdLT53cmFwcGVyKCkg
PT0gc2VsZikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6a107CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBAKGspOwogCiAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzVGFibGVSb3coKSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpiYWNraW5nT2JqZWN0LT5yb3dJbmRleCgpXTsKKyAgICAgICAgICAgIHJldHVybiBAKGJh
Y2tpbmdPYmplY3QtPnJvd0luZGV4KCkpOwogICAgIH0KIAogICAgIC8vIFRoZSByb3dzIHRoYXQg
YXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMgcm93LgpAQCAtMjgwMSw3ICsyNzgxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGludCBsZXZlbCA9IGJh
Y2tpbmdPYmplY3QtPmhpZXJhcmNoaWNhbExldmVsKCk7CiAgICAgICAgIGlmIChsZXZlbCA+IDAp
CiAgICAgICAgICAgICBsZXZlbCAtPSAxOwotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6bGV2ZWxdOworICAgICAgICByZXR1cm4gQChsZXZlbCk7CiAgICAgfQogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2lu
Z0F0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFj
a2luZ09iamVjdC0+aXNFeHBhbmRlZCgpXTsKQEAgLTI4MzIsOSArMjgxMiw5IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmli
dXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6YmFj
a2luZ09iamVjdC0+YmxvY2txdW90ZUxldmVsKCldOworICAgICAgICByZXR1cm4gQChiYWNraW5n
T2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKSk7CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYVGFibGVMZXZlbCJdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+dGFibGVMZXZlbCgpXTsKKyAgICAgICAgcmV0dXJu
IEAoYmFja2luZ09iamVjdC0+dGFibGVMZXZlbCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1
dGVdKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOwpAQCAtMjg1MSw3ICsyODMxLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VydmVzQXNUaXRsZUZvclVJRWxlbWVudHNBdHRy
aWJ1dGVdICYmIGJhY2tpbmdPYmplY3QtPmlzTWVudUJ1dHRvbigpKSB7CiAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHVpRWxlbWVudCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q+KCpiYWNraW5nT2JqZWN0KS5tZW51Rm9yTWVudUJ1dHRvbigpOwogICAgICAgICBpZiAo
dWlFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp1
aUVsZW1lbnQtPndyYXBwZXIoKV07CisgICAgICAgICAgICByZXR1cm4gQFt1aUVsZW1lbnQtPndy
YXBwZXIoKV07CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV0pIHsKQEAgLTI5MjEsMTcg
KzI5MDEsMTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQog
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlB
UklBUG9zSW5TZXRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6YmFja2luZ09iamVjdC0+cG9zSW5TZXQoKV07CisgICAgICAgIHJldHVybiBAKGJhY2tp
bmdPYmplY3QtPnBvc0luU2V0KCkpOwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVNldFNpemVBdHRyaWJ1dGVdKQotICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+c2V0U2l6ZSgpXTsKKyAg
ICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+c2V0U2l6ZSgpKTsKIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0
ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVj
dC0+aXNBUklBR3JhYmJlZCgpXTsKIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGRyb3BFZmZlY3RzID0gYmFja2luZ09iamVjdC0+ZGV0ZXJtaW5lQVJJQURy
b3BFZmZlY3RzKCk7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShkcm9w
RWZmZWN0cyk7Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShiYWNraW5nT2JqZWN0LT5kZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKSkuYXV0
b3JlbGVhc2UoKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBi
YWNraW5nT2JqZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CkBAIC0zMDE2LDcgKzI5OTQsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlzdEF0dHJpYnV0ZV0p
IHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xhc3NMaXN0OwogICAgICAgICBiYWNraW5nT2Jq
ZWN0LT5jbGFzc0xpc3QoY2xhc3NMaXN0KTsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdz
VG9OU0FycmF5KGNsYXNzTGlzdCk7CisgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGNsYXNz
TGlzdCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICAvLyBUaGlzIGFsbG93cyB1cyB0byBj
b25uZWN0IHRvIGEgcGx1Z2luIHRoYXQgY3JlYXRlcyBhIHNoYWRvdyBub2RlIGZvciBlZGl0aW5n
IChsaWtlIFBERnMpLgpAQCAtNDEwMSw3ICs0MDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9
IFtwcm90ZWN0ZWRTZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07
CiAgICAgICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+bGluZUZvclBvc2l0aW9uKHZpc2li
bGVQb3MpOwogICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
SW50OnJlc3VsdF07CisgICAgICAgIHJldHVybiBAKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JMaW5lIl0p
IHsKQEAgLTQzMjksNyArNDMwNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICB9KTsKICAgICAgICAgaWYgKGxlbmd0aCA8IDApCiAgICAgICAgICAgICBy
ZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGVuZ3Ro
XTsKKyAgICAgICAgcmV0dXJuIEAobGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBVc2VkIG9ubHkg
YnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCkBAIC00Mzc5LDcgKzQzNTcsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGludCBsaW5lTnVtYmVy
ID0gYmFja2luZ09iamVjdC0+ZG9BWExpbmVGb3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7CiAg
ICAgICAgICAgICBpZiAobGluZU51bWJlciA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Omxp
bmVOdW1iZXJdOworICAgICAgICAgICAgcmV0dXJuIEAobGluZU51bWJlcik7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtB
WFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggZGUzYTQzZGVmMGI5NzhjMDc4
MTNkODAwNDcyZTlmOTlhZWY3ODRjZS4uZTkwNjIyMWNhOThjM2RhZmM3MzMzMGU1ODJhNGQxZjY2
ZGJmODhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbQpAQCAtNTg2LDcgKzU4Niw3IEBAICsgKGlkKV9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZToo
SlNDOjpKU1ZhbHVlKXZhbHVlIG9yaWdpblJvb3RPYmplY3Q6KFJvb3RPYmplY3QqCiAgICAgICAg
IHJldHVybiBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgp
KTsKIAogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6dmFsdWUuYXNOdW1iZXIoKV07CisgICAgICAgIHJldHVybiBAKHZh
bHVlLmFzTnVtYmVyKCkpOwogCiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnZhbHVlLmFzQm9vbGVhbigpXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW0KaW5kZXggNTA3MmQ2YjMyYWM3NWQ3MWNiOGZiZTUzOGNlODdlMTU2Mzk3
MjZhMy4uZTU4ZWFlZGVjMDA3ZTRiOTljNjgyNzE0NzI1ZGUxYTI1ZDUwOTc3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW0KQEAgLTI4LDcgKzI4LDggQEAKIAogI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQogCi0jaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCAiRmxv
YXRSZWN0LmgiCisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFVTRShB
UFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KQEAgLTQ3LDEyICs0OCw3
IEBAIHVpbnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlCiAKIFZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0
KQogewotICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqdGV4dEFsdGVybmF0aXZlcyA9IG1fY29udGV4
dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmluZ3M7Ci0gICAgYWx0ZXJuYXRpdmVTdHJpbmdzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkodGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MuY291
bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnN0cmluZyBpbiB0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVy
bmF0aXZlU3RyaW5ncykKLSAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzLnVuY2hlY2tlZEFwcGVu
ZChzdHJpbmcpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZVN0cmluZ3M7CisgICAgcmV0dXJuIG1h
a2VWZWN0b3I8U3RyaW5nPihtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoY29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCBhNTQzYWMyZDFhZTJhYzM4ZjhjZDI3ZmIyNTdmZTJkMTYy
NDBkY2VmLi40ZjQ2MzUyODBkNjQ1ODE0MzlhZjdjYjUyYWU2MTVjOGUxMzNmNWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC01MzksNyAr
NTM5LDcgQEAgc3RhdGljIE5TUGFyYWdyYXBoU3R5bGUgKmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSgp
CiAgICAgaWYgKCFkZWZhdWx0UGFyYWdyYXBoU3R5bGUpIHsKICAgICAgICAgZGVmYXVsdFBhcmFn
cmFwaFN0eWxlID0gW1tQbGF0Zm9ybU5TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0
eWxlXSBtdXRhYmxlQ29weV07CiAgICAgICAgIFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUgc2V0RGVm
YXVsdFRhYkludGVydmFsOjM2XTsKLSAgICAgICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXRU
YWJTdG9wczpbTlNBcnJheSBhcnJheV1dOworICAgICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxl
IHNldFRhYlN0b3BzOkBbXV07CiAgICAgfQogICAgIHJldHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5
bGU7CiB9CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6
OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICBmbG9h
dCBzdHJva2VXaWR0aCA9IDAuMDsKICAgICBpZiAoX2NhY2hlcy0+ZmxvYXRQcm9wZXJ0eVZhbHVl
Rm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgc3Ryb2tl
V2lkdGgpKSB7CiAgICAgICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aCA9IHN0cm9rZVdpZHRoIC8g
KFtmb250IHBvaW50U2l6ZV0gKiAwLjAxKTsKLSAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0ZXh0U3Ryb2tlV2lkdGhdIGZvcktleTpOU1N0cm9rZVdp
ZHRoQXR0cmlidXRlTmFtZV07CisgICAgICAgIFthdHRycyBzZXRPYmplY3Q6QCh0ZXh0U3Ryb2tl
V2lkdGgpIGZvcktleTpOU1N0cm9rZVdpZHRoQXR0cmlidXRlTmFtZV07CiAgICAgfQogICAgIGlm
IChzdHJva2VDb2xvcikKICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpzdHJva2VDb2xvciBmb3JL
ZXk6TlNTdHJva2VDb2xvckF0dHJpYnV0ZU5hbWVdOwpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgTlNE
aWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAoVUlGbG9hdElzWmVybyhrZXJuVmFsKSkK
ICAgICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAwLjAgZm9yS2V5Ok5TS2VybkF0dHJp
YnV0ZU5hbWVdOyAvLyBhdXRvIGFuZCBub3JtYWwsIHRoZSBvdGhlciBwb3NzaWJsZSB2YWx1ZXMs
IGFyZSBib3RoICJrZXJuaW5nIGVuYWJsZWQiCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTprZXJuVmFs
XSBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07CisgICAgICAgICAgICAgICAgW2F0dHJzIHNl
dE9iamVjdDpAKGtlcm5WYWwpIGZvcktleTpOU0tlcm5BdHRyaWJ1dGVOYW1lXTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTA3NCw3ICsxMDc0LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVy
dGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAg
ICBmbG9hdCBiYXNlbGluZU9mZnNldCA9IDAuMDsKICAgICBpZiAoX2NhY2hlcy0+ZmxvYXRQcm9w
ZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGJhc2Vs
aW5lT2Zmc2V0KSkKLSAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTpiYXNlbGluZU9mZnNldF0gZm9yS2V5Ok5TQmFzZWxpbmVPZmZzZXRBdHRyaWJ1dGVO
YW1lXTsKKyAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAKGJhc2VsaW5lT2Zmc2V0KSBmb3JLZXk6
TlNCYXNlbGluZU9mZnNldEF0dHJpYnV0ZU5hbWVdOwogCiAgICAgU3RyaW5nIHRleHRTaGFkb3cg
PSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVRleHRT
aGFkb3cpOwogICAgIGlmICh0ZXh0U2hhZG93Lmxlbmd0aCgpID4gNCkgewpAQCAtMTU1Niw3ICsx
NTU2LDcgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc01ldGFFbGVtZW50V2l0aE5hbWUo
TlNTdHJpbmcgKm5hbWUsIE5TU3RyaW5nICpjb250ZW4KICAgICAgICAgaWYgKHZlcnNpb25OdW1i
ZXIgPiAwLjApIHsKICAgICAgICAgICAgIC8vID8/PyB0aGlzIHNob3VsZCBiZSBrZXllZCBvZmYg
b2YgdmVyc2lvbiBudW1iZXIgaW4gZnV0dXJlCiAgICAgICAgICAgICBbX2RvY3VtZW50QXR0cnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TQ29udmVydGVkRG9jdW1lbnRBdHRyaWJ1dGVdOwotICAgICAg
ICAgICAgW19kb2N1bWVudEF0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2ZXJzaW9uTnVtYmVyXSBmb3JLZXk6TlNDb2NvYVZlcnNpb25Eb2N1bWVudEF0dHJpYnV0ZV07
CisgICAgICAgICAgICBbX2RvY3VtZW50QXR0cnMgc2V0T2JqZWN0OkAodmVyc2lvbk51bWJlcikg
Zm9yS2V5Ok5TQ29jb2FWZXJzaW9uRG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICB9CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9IGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0gW0Ai
R2VuZXJhdG9yIiBjb21wYXJlOm5hbWUgb3B0aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaF0p
IHsKQEAgLTE2NzIsOCArMTY3Miw4IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZFRhYmxlRm9y
RWxlbWVudChFbGVtZW50ICp0YWJsZUVsZW1lbnQpCiAgICAgfQogICAgIAogICAgIFtfdGV4dFRh
YmxlcyBhZGRPYmplY3Q6dGFibGUuZ2V0KCldOwotICAgIFtfdGV4dFRhYmxlU3BhY2luZ3MgYWRk
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmNlbGxTcGFjaW5nVmFsXV07Ci0gICAg
W190ZXh0VGFibGVQYWRkaW5ncyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
Y2VsbFBhZGRpbmdWYWxdXTsKKyAgICBbX3RleHRUYWJsZVNwYWNpbmdzIGFkZE9iamVjdDpAKGNl
bGxTcGFjaW5nVmFsKV07CisgICAgW190ZXh0VGFibGVQYWRkaW5ncyBhZGRPYmplY3Q6QChjZWxs
UGFkZGluZ1ZhbCldOwogICAgIFtfdGV4dFRhYmxlUm93cyBhZGRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhJbnRlZ2VyOjBdXTsKICAgICBbX3RleHRUYWJsZVJvd0FycmF5cyBhZGRPYmplY3Q6
W05TTXV0YWJsZUFycmF5IGFycmF5XV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
CmluZGV4IGMwZjMxYzJlYmM5ZGRlZTlkYzk5NDhjYWY2ODA0M2U5MWZkOTAzYjQuLmEyMDdjYjA5
YjgwNjFlN2QxOTQ5OTU0NWZjZDE1Y2FmZmQzZDQzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tCkBAIC03MzAsNyArNzMwLDcgQEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0
aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKIAogICAgIC8vIFRoZXJlIGFyZSBubyBwaHJhc2Vz
IHdpdGggYWx0ZXJuYXRpdmVzLCBzbyB0aGVyZSBpcyBqdXN0IG9uZSBpbnRlcnByZXRhdGlvbi4K
ICAgICBpZiAobWFya2Vyc0luUm9vdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6cGxhaW5UZXh0KHJhbmdlT2ZSb290Q29udGVudHMpXTsKKyAgICAg
ICAgcmV0dXJuIEBbcGxhaW5UZXh0KHJhbmdlT2ZSb290Q29udGVudHMpXTsKIAogICAgIC8vIFRo
ZSBudW1iZXIgb2YgaW50ZXJwcmV0YXRpb25zIHdpbGwgYmUgaTEgKiBpMiAqIC4uLiAqIGlOLCB3
aGVyZSBpWCBpcyB0aGUgbnVtYmVyIG9mIGludGVycHJldGF0aW9ucyBmb3IgdGhlIFh0aCBwaHJh
c2Ugd2l0aCBhbHRlcm5hdGl2ZXMuCiAgICAgc2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50ID0g
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbQppbmRleCBhODdjZjVjNGU4Zjg1NmRmN2M3OTAwMTE0M2YzYzc0NGM3ZmY4
MDZhLi4yYjNmZTA1NTg0Zjk2NGUwOTk3Njg0NmFhMTI5ODA3NmVhNGJlMTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29h
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0
LDEwICsyNCwxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKLSNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL05TVVJM
RmlsZVR5cGVNYXBwaW5nc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVU
eXBlTWFwcGluZ3NTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDE2ICszOSw3IEBAIFN0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikK
IAogVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBOU0FycmF5ICpzdHJpbmdzQXJyYXkgPSBb
W05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlOihOU1N0cmluZyAqKXR5cGVdOwotICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ3NWZWN0b3Ig
PSBWZWN0b3I8U3RyaW5nPigpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gW3N0cmluZ3NBcnJheSBj
b3VudF07Ci0gICAgaWYgKGNvdW50ID4gMCkgewotICAgICAgICBOU0VudW1lcmF0b3IqIGVudW1l
cmF0b3IgPSBbc3RyaW5nc0FycmF5IG9iamVjdEVudW1lcmF0b3JdOwotICAgICAgICBOU1N0cmlu
Zyogc3RyaW5nOwotICAgICAgICB3aGlsZSAoKHN0cmluZyA9IFtlbnVtZXJhdG9yIG5leHRPYmpl
Y3RdKSAhPSBuaWwpCi0gICAgICAgICAgICBzdHJpbmdzVmVjdG9yLmFwcGVuZChzdHJpbmcpOwot
ICAgIH0KLSAgICByZXR1cm4gc3RyaW5nc1ZlY3RvcjsKKyAgICByZXR1cm4gbWFrZVZlY3RvcjxT
dHJpbmc+KFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBleHRlbnNpb25z
Rm9yTUlNRVR5cGU6dHlwZV0pOwogfQogCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJl
ZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4IDQ1NWJiMjUxYTI0
ZDRlNjZjNzU1OWYwMjBhOWYzOWY1MDNkN2NmZmYuLjc1YzkyOGRhN2FhMzc0NjZiMTQ2YzFjNzhl
YzEwMGI2NTBjZjMxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvaW50LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVk
IF9fT0JKQ19fCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KLSNlbmRpZgotCiAj
aWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dQb2ludCBDR1BvaW50OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCmluZGV4IDMzMTcwZWJj
NDU2YmU4NDZiMzE3YWMxMzRjMzE1MDQ1ZDc2NWUzZmMuLjFiNmQ0OTNlOTI2YmZlYWFhOTI5ZTI2
NDI4YmNkMDdhYmEyOWU4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UmVjdC5oCkBAIC0yNzksNSArMjc5LDggQEAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBy
b3VuZGVkSW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogCi19CisjaWZkZWYgX19PQkpDX18KK1dFQkNPUkVfRVhQT1JUIGlkIG1ha2VOU0FycmF5RWxl
bWVudChjb25zdCBGbG9hdFJlY3QmKTsKKyNlbmRpZgogCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAppbmRleCBkMzQ4ODBhMmIyNTQ3YTI4MGNiMGQ3ZDJm
OTczMjI1MjNkZmE2ZGUyLi4xNmM5MjM2MTZjZDVkYTZjNDg4MmJjNzNlNjlhN2YyOWNlMTA3YzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKQEAgLTI4
LDE1ICsyOCwxMCBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxjbWF0aD4KIAot
I2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwotI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU0dlb21ldHJ5Lmg+Ci0jZW5kaWYKLQogI2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENH
UG9pbnQgQ0dQb2ludDsKICNlbmRpZgogCi0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
ZiBPUyhEQVJXSU4pCiAjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllf
VFlQRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCAx
MjJkZDUwNTNiMDIxYjVlMWUzOWMwMDgzZGUxZTI0MGI1OThkNWU0Li4wM2M1YWFmNDhiMGZjMzgy
YzFkOTBhMGRhYjI5NmRjYmYwMWQxY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdC5oCkBAIC0yNTAsNSArMjUwLDggQEAgV0VCQ09SRV9FWFBPUlQgSW50UmVj
dCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5TUmVjdCYpOwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW50UmVjdCYp
OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjaWZkZWYgX19PQkpDX18KK1dFQkNPUkVfRVhQ
T1JUIGlkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBJbnRSZWN0Jik7CisjZW5kaWYKIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
U2l6ZS5oCmluZGV4IGVlN2M2YzBhZGZkN2QzZGViZGJkYzVkYjk1ZGRiNTFkMzFiODA5NTUuLjc1
NjgzNDFjNzc2ZDJlMDA2YmFkMGMwYWM0M2Y4NWI2YTc3MDliMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTI5LDEwICsyOSw2IEBACiAjaW5jbHVk
ZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi0jaWYgUExB
VEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TR2Vv
bWV0cnkuaD4KLSNlbmRpZgotCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dTaXplIENH
U2l6ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLm1tCmluZGV4IDgzYjY0MjE3MmUxOWU2N2JlOWVhYmQ5YTZmOTlhYmMzNDkwNDhmMjAu
LjhmODQ3YjgyNzMzMDg2ZTgyYjJmNGVmMDU1YzMwYTI1MmNmZThlYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KQEAgLTMzLDYgKzMzLDcg
QEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0xhbmd1YWdlLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgSEFW
RShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKQEAgLTEzMiwxMCArMTMzLDggQEAgdm9p
ZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21h
dGljYWxseSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBuc0xhbmd1YWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRv
JiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkKLSAgICAgICAgW25zTGFuZ3Vh
Z2VzIGFkZE9iamVjdDooTlNTdHJpbmcqKWxhbmd1YWdlXTsKLSAgICBOU0FycmF5KiBmaWx0ZXJl
ZE9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIG1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVjdGlvbkdyb3VwIG9wdGlvbnNdIGZp
bHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6bnNMYW5ndWFnZXMu
Z2V0KCldOworICAgIE5TQXJyYXkqIGZpbHRlcmVkT3B0aW9ucyA9IFtQQUw6OmdldEFWTWVkaWFT
ZWxlY3Rpb25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OlttX21l
ZGlhU2VsZWN0aW9uR3JvdXAgb3B0aW9uc10KKyAgICAgICAgZmlsdGVyZWRBbmRTb3J0ZWRBY2Nv
cmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpjcmVhdGVOU0FycmF5KHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKSkuZ2V0KCldOwogCiAgICAgaWYgKCFbZmlsdGVyZWRPcHRpb25zIGNvdW50XSAmJiBj
aGFyYWN0ZXJpc3RpY3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTEgKzE0
Myw3IEBAIHZvaWQgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OnVwZGF0ZU9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzCiAgICAgaWYgKCFbZmlsdGVyZWRPcHRpb25z
IGNvdW50XSkKICAgICAgICAgZmlsdGVyZWRPcHRpb25zID0gW21fbWVkaWFTZWxlY3Rpb25Hcm91
cCBvcHRpb25zXTsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNDaGFyYWN0ZXJp
c3RpY3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
Y2hhcmFjdGVyaXN0aWNzLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgY2hhcmFjdGVyaXN0aWMg
OiBjaGFyYWN0ZXJpc3RpY3MpCi0gICAgICAgIFtuc0NoYXJhY3RlcmlzdGljcyBhZGRPYmplY3Q6
KE5TU3RyaW5nICopY2hhcmFjdGVyaXN0aWNdOwotCi0gICAgTlNBcnJheSogb3B0aW9uc1dpdGhD
aGFyYWN0ZXJpc3RpY3MgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIG1l
ZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpmaWx0ZXJlZE9wdGlvbnMgd2l0aE1lZGlhQ2hh
cmFjdGVyaXN0aWNzOm5zQ2hhcmFjdGVyaXN0aWNzLmdldCgpXTsKKyAgICBOU0FycmF5KiBvcHRp
b25zV2l0aENoYXJhY3RlcmlzdGljcyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENs
YXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRlcmVkT3B0aW9ucyB3aXRo
TWVkaWFDaGFyYWN0ZXJpc3RpY3M6Y3JlYXRlTlNBcnJheShjaGFyYWN0ZXJpc3RpY3MpLmdldCgp
XTsKICAgICBpZiAob3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgJiYgW29wdGlvbnNXaXRoQ2hh
cmFjdGVyaXN0aWNzIGNvdW50XSkKICAgICAgICAgZmlsdGVyZWRPcHRpb25zID0gb3B0aW9uc1dp
dGhDaGFyYWN0ZXJpc3RpY3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDVhNjJhMWU0
NjdkODU2NmQyYjZiMzQyMmQ2NGI5NDgyNGQ5YzY4ZDMuLjhhNzcxNjJkNjMwM2VlZmYzMzc2Njgw
ZTM3ZGE5NDBhMTE5NjM3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNjk3LDcgKzY5
Nyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQXZhaWxh
YmxlVmlkZW9GcmFtZSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQotc3Rh
dGljIGNvbnN0IE5TQXJyYXkqIG1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRy
YWNrOjpUcmFja0tpbmQga2luZCkKKworc3RhdGljIGNvbnN0IE5TQXJyYXkgKm1lZGlhRGVzY3Jp
cHRpb25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCkKIHsKICAgICBz
dGF0aWMgYm9vbCBtYW51YWxTZWxlY3Rpb25Nb2RlID0gTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2
aW9yUHRyKCkgJiYgTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyKCkoKTsKICAgICBpZiAo
bWFudWFsU2VsZWN0aW9uTW9kZSkKQEAgLTcwNSwxOCArNzA2LDE4IEBAIHN0YXRpYyBjb25zdCBO
U0FycmF5KiBtZWRpYURlc2NyaXB0aW9uRm9yS2luZChQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tL
aW5kIGtpbmQpCiAKICAgICAvLyBGSVhNRTogTWF0Y2ggdGhlc2UgdG8gY29ycmVjdCB0eXBlczoK
ICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbikKLSAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5z
Y3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKKyAgICAgICAgcmV0dXJu
IEBbIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eSBdOwogCiAgICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OlN1YnRpdGxl
KQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJh
Y3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOwor
ICAgICAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5E
aWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiAKICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRU
cmFjazo6RGVzY3JpcHRpb24pCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vz
c2liaWxpdHksIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JB
Y2Nlc3NpYmlsaXR5LCBuaWxdOworICAgICAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3Rlcmlz
dGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBdOwogCiAgICAg
aWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkZvcmNlZCkKLSAgICAgICAgcmV0dXJuIFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25s
eUZvcmNlZFN1YnRpdGxlcywgbmlsXTsKKyAgICAgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyBdOwogCi0gICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKKyAgICByZXR1cm4gQFsgQVZNZWRpYUNo
YXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiB9
CiAgICAgCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5vdGlmeVRy
YWNrTW9kZUNoYW5nZWQoKQpAQCAtNzU0LDggKzc1NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpCiAgICAgICAg
IH0KICAgICB9CiB9Ci0jZW5kaWYKIAorI2VuZGlmCiAKIHN0YXRpYyBOU1VSTCAqY2Fub25pY2Fs
VVJMKGNvbnN0IFVSTCYgdXJsKQogewpAQCAtNzg1LDcgKzc4Niw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwm
IHVybCkKIAogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBvcHRpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgICAgCiAKLSAgICBbb3B0
aW9ucy5nZXQoKSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6QVZBc3NldFJlZmVy
ZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9Mb2NhbCB8IEFWQXNzZXRSZWZl
cmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9SZW1vdGVdIGZvcktleTpBVlVS
TEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKKyAgICBbb3B0aW9ucy5nZXQoKSBzZXRP
YmplY3Q6QChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRSZW1vdGVSZWZlcmVuY2VU
b0xvY2FsIHwgQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkTG9jYWxSZWZlcmVuY2VU
b1JlbW90ZSkgZm9yS2V5OkFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXldOwogCiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGhlYWRlckZpZWxkcyA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKQEAgLTk4OSw3ICs5OTAsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVy
SXRlbSgpCiAKICAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBhdlBsYXllck91dHB1dEFkdmFuY2VJ
bnRlcnZhbCA9IDI7CiAKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3VidHlwZXMgPSBhZG9wdE5T
KFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5z
aWduZWRJbnQ6a0NNU3VidGl0bGVGb3JtYXRUeXBlX1dlYlZUVF0sIG5pbF0pOworICAgIFJldGFp
blB0cjxOU0FycmF5PiBzdWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6QChrQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2ViVlRUKSwgbmlsXSk7CiAgICAgbV9s
ZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbUxlZ2libGVPdXRw
dXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9u
OnN1YnR5cGVzLmdldCgpXSk7CiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXRTdXBwcmVz
c2VzUGxheWVyUmVuZGVyaW5nOllFU107CiAKQEAgLTEwMjgsNyArMTAyOSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tQbGF5YWJpbGl0eSgpCiAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKTsKIAotICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5
Rm9yS2V5czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAicGxheWFibGUiLCBAInRyYWNrcyIs
IG5pbF0gY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICBbbV9hdkFzc2V0LmdldCgpIGxvYWRWYWx1
ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInBsYXlhYmxlIiwgQCJ0cmFja3MiXSBjb21wbGV0
aW9uSGFuZGxlcjpeewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5zY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpO
b3RpZmljYXRpb246OkFzc2V0UGxheWFiaWxpdHlLbm93bik7CkBAIC0yMTcxLDcgKzIxNzIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0
cHV0KCkKICNpZiBVU0UoVklERU9UT09MQk9YKQogICAgIE5TRGljdGlvbmFyeSogYXR0cmlidXRl
cyA9IG5pbDsKICNlbHNlCi0gICAgTlNEaWN0aW9uYXJ5KiBhdHRyaWJ1dGVzID0gW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoVW5z
aWduZWRJbnQ6a0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQV0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5LCBuaWxdOworICAgIE5TRGljdGlvbmFyeSogYXR0cmlidXRlcyA9IEB7IGtD
VlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJH
UkEpIH07CiAjZW5kaWYKICAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
UGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmli
dXRlczphdHRyaWJ1dGVzXSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCmluZGV4IGQ5N2NjYjNiZGFiYWU1MzM1N2Q1
MjgxOWM3ODgyMTcxOWYxNWViN2YuLjQ4MTZiMDA0ZjE0ODE4MGZiOTAxNTc5MTljZWJlN2I1ZWRk
ZjU1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KQEAgLTM1
LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBXS0V4cGxpY2l0QmVnaW5UaW1lRmxhZyA9IEAiV0tQbGF0Zm9ybUNBQW5pbWF0aW9uRXhw
bGljaXRCZWdpblRpbWVGbGFnIjsKK2NvbnN0ZXhwciBOU1N0cmluZyAqIGNvbnN0IFdLRXhwbGlj
aXRCZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRpb25FeHBsaWNpdEJlZ2luVGlt
ZUZsYWciOwogCiBib29sIGhhc0V4cGxpY2l0QmVnaW5UaW1lKENBQW5pbWF0aW9uICphbmltYXRp
b24pCiB7CkBAIC0zNjIsOCArMzYyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OnNldEFkZGl0aXZlKGJvb2wgdmFsdWUpCiAKIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVu
Y3Rpb25UeXBlIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6dmFsdWVGdW5jdGlvbigpIGNvbnN0
CiB7Ci0gICAgQ0FWYWx1ZUZ1bmN0aW9uKiB2ZiA9IFttX2FuaW1hdGlvbiB2YWx1ZUZ1bmN0aW9u
XTsKLSAgICByZXR1cm4gZnJvbUNBVmFsdWVGdW5jdGlvblR5cGUoW3ZmIG5hbWVdKTsKKyAgICBy
ZXR1cm4gZnJvbUNBVmFsdWVGdW5jdGlvblR5cGUoW1ttX2FuaW1hdGlvbiB2YWx1ZUZ1bmN0aW9u
XSBuYW1lXSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZUZ1
bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlKQpAQCAtMzc1LDE0ICszNzQsMTMgQEAgdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKIHsK
ICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIFtzdGF0
aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1
ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZV1dOworICAgIFtzdGF0aWNfY2FzdDxD
QUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpAKHZhbHVl
KV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1h
dGlvbigpKQogICAgICAgICByZXR1cm47Ci0KICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1h
dGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRo
Q0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQogCkBAIC0zOTAsMzIgKzM4OCwxOSBAQCB2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYg
dmFsdWUpCiB7CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsK
LQotICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueCgpXSwKLSAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueSgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWUueigpXSwKLSAgICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8
Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6YXJyYXld
OworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkp
IHNldEZyb21WYWx1ZTpAWyBAKHZhbHVlLngoKSksIEAodmFsdWUueSgpKSwgQCh2YWx1ZS56KCkp
IF1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZhbHVlKGNv
bnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5yZWQoKV0sCi0g
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmdyZWVuKCldLAotICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ibHVlKCldLAotICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKLSAgICAgICAgbmlsXTsKLSAg
ICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRG
cm9tVmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpAW0AodmFsdWUucmVkKCkpLCBAKHZhbHVlLmdy
ZWVuKCkpLCBAKHZhbHVlLmJsdWUoKSksIEAodmFsdWUuYWxwaGEoKSldXTsKIH0KIAogdm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEZyb21WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIG9wZXJhdGlvbiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkKIHsKLSAgICBS
ZXRhaW5QdHI8aWQ+IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKKyAgICBhdXRv
IHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJh
dGlvbiwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FC
YXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6dmFsdWUuZ2V0
KCldOwogfQogCkBAIC00MjMsOCArNDA4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHUKIHsK
ICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSB8fCAhdmFsdWUuaXNCYXNpY0FuaW1hdGlvbigp
KQogICAgICAgICByZXR1cm47Ci0KLSAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlv
biA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0byBvdGhlckFu
aW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRp
Y19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVl
OltvdGhlckFuaW1hdGlvbiBmcm9tVmFsdWVdXTsKIH0KIApAQCAtNDMyLDE0ICs0MTYsMTMgQEAg
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCiB7
CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBbc3Rh
dGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVl
OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlXV07CisgICAgW3N0YXRpY19jYXN0PENB
QmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpAKHZhbHVlKV07
CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24o
KSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5z
Zm9ybTNEOnZhbHVlXV07CiB9CiAKQEAgLTQ0NywzMiArNDMwLDE5IEBAIHZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiB7
CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIE5T
QXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueCgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWUueSgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6dmFsdWUueigpXSwKLSAgICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFycmF5XTsKKyAgICBbc3Rh
dGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVl
OkBbIEAodmFsdWUueCgpKSwgQCh2YWx1ZS55KCkpLCBAKHZhbHVlLnooKSkgXV07CiB9CiAKIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IENvbG9yJiB2YWx1
ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5yZWQoKV0sCi0gICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmdyZWVuKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp2YWx1ZS5ibHVlKCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKLSAgICAgICAgbmlsXTsKLSAgICBbc3RhdGljX2Nhc3Q8
Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFycmF5XTsK
KyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRUb1ZhbHVlOkBbQCh2YWx1ZS5yZWQoKSksIEAodmFsdWUuZ3JlZW4oKSksIEAodmFsdWUuYmx1
ZSgpKSwgQCh2YWx1ZS5hbHBoYSgpKV1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6c2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiwgaW50IGlu
dGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkKIHsKLSAgICBSZXRhaW5QdHI8aWQ+IHZhbHVlID0g
UGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50
ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKKyAgICBhdXRvIHZhbHVlID0gUGxhdGZvcm1DQUZp
bHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKG9wZXJhdGlvbiwgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5p
bWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOnZhbHVlLmdldCgpXTsKIH0KIApAQCAtNDgxLDcgKzQ1
MSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VG9WYWx1ZUZyb20oY29u
c3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9u
KCkgfHwgIXZhbHVlLmlzQmFzaWNBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q0FCYXNpY0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5p
bWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmlt
YXRpb24uZ2V0KCkpOworICAgIGF1dG8gb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJh
c2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPih2YWx1ZSku
bV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4o
bV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W290aGVyQW5pbWF0aW9uIHRvVmFsdWVdXTsK
IH0KIApAQCAtNDkyLDkgKzQ2Miw5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5
cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkq
IGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlLnNpemUoKTsgKytpKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldXV07CisgICAgYXV0byBhcnJheSA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZS5zaXplKCldOworICAgIGZvciAoYXV0byBu
dW1iZXIgOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKG51bWJlcildOwogICAg
IFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNl
dFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUwMywxMSArNDczLDkgQEAgdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8VHJhbnNmb3JtYXRpb25NYXRy
aXg+JiB2YWwKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKLSAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZh
bHVlW2ldXV07Ci0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBtYXRyaXggOiB2YWx1ZSkKKyAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOm1h
dHJpeF1dOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUxNiwxNiArNDg0LDkgQEAgdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQ
b2ludDNEPiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgTlNBcnJheSogb2JqZWN0ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLngoKV0s
Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXS55KCldLAot
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0ueigpXSwKLSAg
ICAgICAgICAgIG5pbF07Ci0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6b2JqZWN0XTsKLSAgICB9
CisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1
ZS5zaXplKCldOworICAgIGZvciAoYXV0byYgcG9pbnQgOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAW0AocG9pbnQueCgpKSwgQChwb2ludC55KCkpLCBAKHBvaW50LnooKSldXTsK
ICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRWYWx1ZXM6YXJyYXldOwogfQogCkBAIC01MzQsMTcgKzQ5NSw5IEBAIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPENvbG9yPiYgdmFsdWUp
CiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
TlNBcnJheSogb2JqZWN0ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLnJlZCgpXSwKLSAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLmdyZWVuKCldLAotICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0uYmx1ZSgpXSwKLSAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLmFscGhhKCldLAotICAgICAg
ICAgICAgbmlsXTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpvYmplY3RdOwotICAgIH0KKyAg
ICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNp
emUoKV07CisgICAgZm9yIChhdXRvJiBjb2xvciA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OkBbQChjb2xvci5yZWQoKSksIEAoY29sb3IuZ3JlZW4oKSksIEAoY29sb3IuYmx1ZSgp
KSwgQChjb2xvci5hbHBoYSgpKV1dOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0
aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTU1Mywx
MiArNTA2LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JgogICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5KiBh
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBSZXRhaW5QdHI8aWQ+IHZhbHVlID0g
UGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKHZhbHVlc1tpXS5nZXQo
KSwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVj
dDp2YWx1ZS5nZXQoKV07Ci0gICAgfQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWVzLnNpemUoKV07CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6
IHZhbHVlcykKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpQbGF0Zm9ybUNBRmlsdGVyczo6Zmls
dGVyVmFsdWVGb3JPcGVyYXRpb24odmFsdWUuZ2V0KCksIGludGVybmFsRmlsdGVyUHJvcGVydHlJ
bmRleCkuZ2V0KCldOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTU2NywzOSArNTE3LDM1
IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtl
eWZyYW1lIHx8IHZhbHVlLmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNf
Y2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOworICAgIGF1dG8gb3RoZXJBbmltYXRpb24g
PSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2Fz
dDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczpbb3Ro
ZXJBbmltYXRpb24gdmFsdWVzXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKIHsKLSAgICBOU011dGFi
bGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnZhbHVlW2ldXV07Ci0KKyAgICBhdXRvIGFycmF5
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAg
Zm9yIChhdXRvIHRpbWUgOiB2YWx1ZSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAKHRpbWUp
XTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdl
dCgpKSBzZXRLZXlUaW1lczphcnJheV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQog
ewotICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFt
ZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1f
YW5pbWF0aW9uLmdldCgpKTsKKyAgICBhdXRvIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFt
ZUFuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1f
YW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+
KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczpbb3RoZXIga2V5VGltZXNdXTsKIH0KIAog
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBW
ZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYgdmFsdWUsIGJvb2wgcmV2ZXJzZSkKIHsKLSAg
ICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKLSAgICAgICAgW2FycmF5
IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbih2YWx1ZVtpXSwgcmV2ZXJzZSldOwot
CisgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1
ZS5zaXplKCldOworICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiB2YWx1ZSkKKyAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbihmdW5jdGlvbiwgcmV2ZXJzZSld
OwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0
KCkpIHNldFRpbWluZ0Z1bmN0aW9uczphcnJheV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBvdGhlciA9IHN0YXRpY19j
YXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0byBvdGhlciA9IHN0YXRpY19j
YXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJh
bWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGltaW5nRnVuY3Rpb25zOltvdGhl
ciB0aW1pbmdGdW5jdGlvbnNdXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29j
b2EubW0KaW5kZXggZTFhZTVkOWI3NzEyMDQzMjA2ZmNlZmFkNDllNGFiZjA1NjgwNzhlYi4uM2M0
ZGNlMmFiM2IyZTA5MzU0YjhiNzQ0ZTkxM2MzMDZmNjA3NzZmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBRmlsdGVyc0NvY29hLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgUmV0YWluUHRyPE5TVmFs
dWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0
ZXJPcGVyYXQKICAgICAgICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGRv
d25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3Vu
dCgpOwogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTphbW91bnRdOworICAgICAgICB2YWx1ZSA9IEAoYW1vdW50KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogewpAQCAtMzYzLDcgKzM2Myw3
IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JP
cGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlmIChvcGVyYXRpb24pCiAgICAg
ICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCi0gICAgICAgIHZhbHVlID0gW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKKyAgICAgICAgdmFsdWUgPSBAKGFtb3VudCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JP
VEFURTogewpAQCAtMzc0LDcgKzM3NCw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNB
RmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAg
ICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCiAgICAgICAgIGFtb3VudCA9IGRlZzJy
YWQoYW1vdW50KTsKLSAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTph
bW91bnRdOworICAgICAgICB2YWx1ZSA9IEAoYW1vdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKQEAgLTQ1Miw3ICs0NTIsNyBA
QCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3Bl
cmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAob3BlcmF0aW9uKQogICAgICAg
ICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91
bnQpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBS
ZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0
aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAob3BlcmF0aW9uKQogICAgICAgICAg
ICAgYW1vdW50ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0
aW9uPigqb3BlcmF0aW9uKS5zdGREZXZpYXRpb24oKSwgMCk7CiAgICAgICAgIAotICAgICAgICB2
YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVl
ID0gQChhbW91bnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0
Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmYTA3ZjZkOGZmYWI4N2RkODlkOWFiY2YyMDZmMWQzYjBh
OTYzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUgTm9raWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiRmxvYXRSZWN0LmgiCisKKyNpZiAhUExBVEZPUk0oTUFDKQorI2ltcG9ydCA8VUlLaXQvVUlH
ZW9tZXRyeS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaWQgbWFrZU5TQXJy
YXlFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdF07CisjZWxzZQor
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cmVjdF07CisjZW5kaWYKK30KKwor
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NH
R0VPTUVUUllfVFlQRVMpCisKK0Zsb2F0UmVjdDo6RmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYgcmVj
dCkKKyAgICA6IG1fbG9jYXRpb24ocmVjdC5vcmlnaW4pCisgICAgLCBtX3NpemUocmVjdC5zaXpl
KQoreworfQorCitGbG9hdFJlY3Q6Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE5TTWFrZVJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKTsKK30KKworI2VuZGlm
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ludFJlY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ludFJlY3RDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTNjYWZhNTJhOTU2YTM3ZmJiNjUxNGQ1MDA2
NDY5N2FkOGMxNDcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIKKworI2lmICFQTEFURk9STShNQUMpCisjaW1wb3J0
IDxVSUtpdC9VSUdlb21ldHJ5Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitp
ZCBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdF07CisjZWxzZQor
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cmVjdF07CisjZW5kaWYKK30KKwor
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NH
R0VPTUVUUllfVFlQRVMpCisKK0ludFJlY3Q6Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE5TTWFrZVJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKTsKK30KKwor
SW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5TUmVjdCYgcmVjdCkKK3sKKyAgICBpbnQg
bGVmdCA9IGNsYW1wVG88aW50PihzdGQ6OmZsb29yKHJlY3Qub3JpZ2luLngpKTsKKyAgICBpbnQg
dG9wID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Zmxvb3IocmVjdC5vcmlnaW4ueSkpOworICAgIGludCBy
aWdodCA9IGNsYW1wVG88aW50PihzdGQ6OmNlaWwoTlNNYXhYKHJlY3QpKSk7CisgICAgaW50IGJv
dHRvbSA9IGNsYW1wVG88aW50PihzdGQ6OmNlaWwoTlNNYXhZKHJlY3QpKSk7CisgICAgcmV0dXJu
IHsgbGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCB9OworfQorCisjZW5kaWYK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW0KaW5kZXggZjQ2YTcxNjgwZWU4NGI4ZjQzNmVlYjc3ZDE4ZTIwMjIxYjJiMTUw
NS4uNDE4YmQzMzVlYWEzOGMzODdjYjlmOTdkMjMxODg3ZGM1ODQ3ZGY0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCkBA
IC0xNjUsNyArMTY1LDcgQEAgLSAodm9pZClkaXNwbGF5CiAgICAgICAgIGlmIChfbGF0Y2hlZFBi
dWZmZXIpIHsKIAogICAgICAgICAgICAgR0NHTGVudW0gdGV4dHVyZSA9IF9jb250ZXh0LT5wbGF0
Zm9ybVRleHR1cmUoKTsKLSAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbDo6
QmluZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOwogICAgICAgICAgICAgaWYgKCFFR0xfUmVsZWFzZVRleEltYWdlKF9l
Z2xEaXNwbGF5LCBfbGF0Y2hlZFBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUikpIHsKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVycm9yLgogICAgICAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgLSAodm9pZClhbGxvY2F0ZUlPU3VyZmFjZUJh
Y2tpbmdTdG9yZVdpdGhTaXplOihXZWJDb3JlOjpJbnRTaXplKXNpemUgdXNpbmdBbHBoYToKICAg
ICAgICAgRUdMX1dJRFRILCBzaXplLndpZHRoKCksCiAgICAgICAgIEVHTF9IRUlHSFQsIHNpemUu
aGVpZ2h0KCksCiAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsIDAsCi0gICAgICAg
IEVHTF9URVhUVVJFX1RBUkdFVCwgR3JhcGhpY3NDb250ZXh0R0w6OkVHTElPU3VyZmFjZVRleHR1
cmVUYXJnZXQsCisgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQsCiAgICAgICAgIEVHTF9URVhUVVJF
X0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgdXNpbmdBbHBoYSA/IEdMX0JHUkFfRVhUIDogR0xfUkdC
LAogICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAg
IEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC0yNTgsNyArMjU4
LDcgQEAgLSAodm9pZCliaW5kRnJhbWVidWZmZXJUb05leHRBdmFpbGFibGVTdXJmYWNlCiAjZWxp
ZiBVU0UoQU5HTEUpCiAgICAgR0NHTGVudW0gdGV4dHVyZSA9IF9jb250ZXh0LT5wbGF0Zm9ybVRl
eHR1cmUoKTsKIAotICAgIGdsOjpCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJm
YWNlVGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CisgICAgZ2w6OkJpbmRUZXh0dXJlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKIAog
ICAgIGlmIChfbGF0Y2hlZFBidWZmZXIpIHsKICAgICAgICAgaWYgKCFFR0xfUmVsZWFzZVRleElt
YWdlKF9lZ2xEaXNwbGF5LCBfbGF0Y2hlZFBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUikpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9T
Lm1tCmluZGV4IGNlM2Y4ZGIxYzEyYTA5MDlkYmY1NWRjODVkNjQ5MGU5Yzg4OWI2MmUuLjRmMDhj
YTA2ZDI0ZTlkYzNmYTA0MzQxOGMzY2JmYzI4Mjc2ZWUxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQpAQCAtMTE3LDcg
KzExNyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBzeXN0ZW1Gb250TW9kaWZp
Y2F0aW9uQXR0cmlidXRlcyhGb250U2VsZWN0aW9uVmFsCiAgICAgW3RyYWl0c0RpY3Rpb25hcnkg
c2V0T2JqZWN0OkBZRVMgZm9yS2V5OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGtDVEZvbnRVSUZv
bnREZXNpZ25UcmFpdCldOwogCiAgICAgaWYgKGl0YWxpYykKLSAgICAgICAgW3RyYWl0c0RpY3Rp
b25hcnkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OmtDVEZvbnRJdGFsaWNUcmFp
dF0gZm9yS2V5OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGtDVEZvbnRTeW1ib2xpY1RyYWl0KV07
CisgICAgICAgIFt0cmFpdHNEaWN0aW9uYXJ5IHNldE9iamVjdDpAKGtDVEZvbnRJdGFsaWNUcmFp
dCkgZm9yS2V5OnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGtDVEZvbnRTeW1ib2xpY1RyYWl0KV07
CiAKICAgICByZXR1cm4gQHsgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa0NURm9udFRyYWl0c0F0
dHJpYnV0ZSkgOiB0cmFpdHNEaWN0aW9uYXJ5LmdldCgpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRSZWN0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkMzQ4YWNjYmJlNDQxODUxZWFlYWFlY2FjOWVkYjY2ZGZl
MTFmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRSZWN0TWFjLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA1IE5v
a2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNp
Zm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKLQotRmxvYXRS
ZWN0OjpGbG9hdFJlY3QoY29uc3QgTlNSZWN0JiByKSA6IG1fbG9jYXRpb24oci5vcmlnaW4pLCBt
X3NpemUoci5zaXplKQotewotfQotCi1GbG9hdFJlY3Q6Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIE5TTWFrZVJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKTsK
LX0KLQotI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCi0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRSZWN0TWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOTYxZWI4MzcwNDk1NjkxNjNlNjkxZDcwMTMy
M2VjYTA1NjM2MmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SW50UmVjdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
LQotSW50UmVjdDo6b3BlcmF0b3IgTlNSZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gTlNNYWtl
UmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotfQotCi1JbnRSZWN0IGVuY2xvc2lu
Z0ludFJlY3QoY29uc3QgTlNSZWN0JiByZWN0KQotewotICAgIGludCBsID0gc3RhdGljX2Nhc3Q8
aW50PihmbG9vcmYocmVjdC5vcmlnaW4ueCkpOwotICAgIGludCB0ID0gc3RhdGljX2Nhc3Q8aW50
PihmbG9vcmYocmVjdC5vcmlnaW4ueSkpOwotICAgIGludCByID0gc3RhdGljX2Nhc3Q8aW50Pihj
ZWlsZihOU01heFgocmVjdCkpKTsKLSAgICBpbnQgYiA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYo
TlNNYXhZKHJlY3QpKSk7Ci0gICAgcmV0dXJuIEludFJlY3QobCwgdCwgciAtIGwsIGIgLSB0KTsK
LX0KLQotI2VuZGlmCi0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggYzBlMWYyZGE2YjMyOThjNzYw
YWNjNTUxMWU0NmU4OTFiYjJjZTk5ZC4uYmFhMjU1NTA4YzM4MDg2YWM2MGM0ZTEwMjkxYTEzYzcz
NjE1MWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zOSwxMyArMzksMTUgQEAKICNpbXBvcnQgPFVJS2l0L1VJ
Q29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNpbXBvcnQgPFVJS2l0L1VJUGFz
dGVib2FyZC5oPgotI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1w
b3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KKyNpbXBv
cnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KKwogI2RlZmluZSBQQVNU
RUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
KFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKSkKICNkZWZpbmUgUEFTVEVC
T0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQSAoUEFTVEVCT0FS
RF9TVVBQT1JUU19JVEVNX1BST1ZJREVSUyAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQogI2Rl
ZmluZSBOU1VSTF9TVVBQT1JUU19USVRMRSAoIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKQEAgLTc0
LDggKzc2LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJikKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcykKIHsKLSAgICBmb3IgKE5TU3RyaW5nICpwYXN0ZWJvYXJkVHlwZSBpbiBbbV9w
YXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pCi0gICAgICAgIHR5cGVzLmFwcGVuZChwYXN0ZWJv
YXJkVHlwZSk7CisgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBw
YXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTU4NywxMCArNTg4
LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlz
dD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICAgICAgICAgIC8vIGV2ZW50cywgd2Ug
bmVlZCBhbiBhZGRpdGlvbmFsIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzdGVi
b2FyZCB0eXBlcyBhcnJheSB0aGF0IGNvbnRhaW5zCiAgICAgICAgICAgICAvLyBhbGwgb2YgdGhl
IGN1c3RvbSB0eXBlcy4gV2UgdXNlIHRoZSB0ZWFtRGF0YSBwcm9wZXJ0eSwgYXZhaWxhYmxlIG9u
IE5TSXRlbVByb3ZpZGVyIG9uIGlPUywgdG8gc3RvcmUKICAgICAgICAgICAgIC8vIHRoaXMgaW5m
b3JtYXRpb24sIHNpbmNlIHRoZSBjb250ZW50cyBvZiB0ZWFtRGF0YSBhcmUgaW1tZWRpYXRlbHkg
YXZhaWxhYmxlIHByaW9yIHRvIHRoZSBkcm9wLgotICAgICAgICAgICAgTlNNdXRhYmxlQXJyYXk8
TlNTdHJpbmcgKj4gKnR5cGVzQXNOU0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCi0gICAgICAg
ICAgICAgICAgW3R5cGVzQXNOU0FycmF5IGFkZE9iamVjdDp0eXBlXTsKLSAgICAgICAgICAgIE5T
RGljdGlvbmFyeSAqdGVhbURhdGFEaWN0aW9uYXJ5ID0gQHsgQChvcmlnaW5LZXlGb3JUZWFtRGF0
YSkgOiBkYXRhLm9yaWdpbigpLCBAKGN1c3RvbVR5cGVzS2V5Rm9yVGVhbURhdGEpIDogdHlwZXNB
c05TQXJyYXkgfTsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqdGVhbURhdGFEaWN0aW9uYXJ5
ID0gQHsgQChvcmlnaW5LZXlGb3JUZWFtRGF0YSkgOiBkYXRhLm9yaWdpbigpLCBAKGN1c3RvbVR5
cGVzS2V5Rm9yVGVhbURhdGEpIDogY3JlYXRlTlNBcnJheShkYXRhLm9yZGVyZWRUeXBlcygpKS5n
ZXQoKSB9OwogICAgICAgICAgICAgaWYgKE5TRGF0YSAqdGVhbURhdGEgPSBbTlNLZXllZEFyY2hp
dmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OnRlYW1EYXRhRGljdGlvbmFyeSByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKSB7CiAgICAgICAgICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0VGVhbURhdGE6dGVhbURhdGFdOwogICAgICAgICAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6c2VyaWFsaXplZFNoYXJl
ZEJ1ZmZlci5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV07CkBAIC03NTMsMTEgKzc1MSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5CiAgICAgaWYg
KCFbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IodXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzOildKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVB
cnJheSAqdHlwZXNBcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp0eXBl
cy5zaXplKCldOwotICAgIGZvciAoY29uc3QgYXV0byYgdHlwZSA6IHR5cGVzKQotICAgICAgICBb
dHlwZXNBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nICopdHlwZV07Ci0KLSAgICBbbV9wYXN0ZWJv
YXJkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczp0eXBlc0FycmF5XTsKKyAgICBbbV9w
YXN0ZWJvYXJkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczpjcmVhdGVOU0FycmF5KHR5
cGVzKS5nZXQoKV07CiB9CiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggNzE5M2I2
NWJlYmU0OWE1MDQwZGQ4ZDgxMThlYmEwZmVmNWIyYTg2YS4uYjgxNjMwOGI1OTZlYzkzZjNjYzg0
OWExMjlkMGU5MzExMjVmODI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTUxOCw3ICs1MTgsNyBA
QCAtIChOU0FycmF5PF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycwog
CiAtICh2b2lkKXNldEl0ZW1Qcm92aWRlcnM6KE5TQXJyYXk8X19raW5kb2YgTlNJdGVtUHJvdmlk
ZXIgKj4gKilpdGVtUHJvdmlkZXJzCiB7Ci0gICAgaXRlbVByb3ZpZGVycyA9IGl0ZW1Qcm92aWRl
cnMgPzogW05TQXJyYXkgYXJyYXldOworICAgIGl0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJz
ID86IEBbIF07CiAgICAgaWYgKF9pdGVtUHJvdmlkZXJzID09IGl0ZW1Qcm92aWRlcnMgfHwgW19p
dGVtUHJvdmlkZXJzIGlzRXF1YWxUb0FycmF5Oml0ZW1Qcm92aWRlcnNdKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmll
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBl
MzM1ZDc1YmRjYTRmYTc5ZTVmM2RkMDI5YTA2OGMzNGI2N2QzNjFmLi4yNDdmOTJmZTlhZDMzZjMz
Njk0YzM5MmI1YTJiOWI5NjBiNTZhODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtWaWV3Lm1tCkBAIC0yODQsMTUgKzI4NCwxNSBAQCAtIChOU0FycmF5ICopc3Vidmll
d3MKIHsKICAgICBDRkFycmF5UmVmIHN1YnZpZXdzID0gV0tWaWV3R2V0U3Vidmlld3MoW3NlbGYg
X3ZpZXdSZWZdKTsKICAgICBpZiAoIXN1YnZpZXdzKQotICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXldOworICAgICAgICByZXR1cm4gQFsgXTsKICAgICAKICAgICBDRkluZGV4IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KHN1YnZpZXdzKTsKICAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAg
cmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbIF07CiAgICAgCiAgICAg
TlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTpjb3VudF07CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eV07CisgICAgICAgIHJldHVybiBAWyBdOwogICAgIAogICAgIENGQXJyYXlBcHBseUZ1bmN0aW9u
KHN1YnZpZXdzLCBDRlJhbmdlTWFrZSgwLCBjb3VudCksIF9XQUtDb3B5V3JhcHBlciwgKHZvaWQq
KXJlc3VsdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBjOTY0ZjQxZjQxOTFkZGExNDFiYjJkZGMwMjQ2
MTBhY2EwMmY0ZmM0Li4wNzYyN2YxY2I0MjQ3OGJkNjMzMTlkZTZjZmJhMzNmNzM2OWRkYTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbXBv
cnQgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3LDEwICs1OCw3IEBAIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiB7
Ci0gICAgTlNBcnJheSAqcGFzdGVib2FyZFR5cGVzID0gW21fcGFzdGVib2FyZC5nZXQoKSB0eXBl
c107Ci0KLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbcGFzdGVib2FyZFR5cGVzIGNv
dW50XTsgaSsrKQotICAgICAgICB0eXBlcy5hcHBlbmQoW3Bhc3RlYm9hcmRUeXBlcyBvYmplY3RB
dEluZGV4OmldKTsKKyAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJk
LmdldCgpIHR5cGVzXSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQpAQCAtOTUs
MTMgKzkzLDEyIEBAIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25z
dAogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAog
ewotICAgIE5TQXJyYXkqIHBhdGhzID0gW21fcGFzdGVib2FyZC5nZXQoKSBwcm9wZXJ0eUxpc3RG
b3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBpZCBwYXRocyA9IFttX3Bhc3RlYm9hcmQuZ2V0
KCkgcHJvcGVydHlMaXN0Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKFtwYXRocyBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAgICAgIHBhdGhuYW1lcy5hcHBl
bmQoKE5TU3RyaW5nICopcGF0aHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMDsgaSA8IFtwYXRocyBjb3VudF07IGkrKykKLSAgICAgICAgcGF0aG5h
bWVzLmFwcGVuZChbcGF0aHMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgcGF0aG5hbWVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KHBhdGhzKTsKIH0KIAogc3RhdGljIGJvb2wgcGFzdGVib2FyZE1heUNv
bnRhaW5GaWxlUGF0aHMoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkKQpAQCAtMzE3LDI0ICszMTQs
MTYgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9t
UGFzdGVib2FyZCkKIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFzdGVib2FyZFR5cGVzLnNpemUoKTsgKytp
KQotICAgICAgICBbdHlwZXMuZ2V0KCkgYWRkT2JqZWN0OnBhc3RlYm9hcmRUeXBlc1tpXV07Ci0K
LSAgICByZXR1cm4gW21fcGFzdGVib2FyZC5nZXQoKSBhZGRUeXBlczp0eXBlcy5nZXQoKSBvd25l
cjpuaWxdOworICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOmNyZWF0ZU5T
QXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCiBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcykKIHsKLSAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgZm9yIChhdXRvJiBwYXN0ZWJvYXJkVHlwZSA6IHBhc3RlYm9hcmRU
eXBlcykgewotICAgICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5
cGUpKSB7Ci0gICAgICAgICAgICBbdHlwZXMgcmVtb3ZlQWxsT2JqZWN0c107Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBbdHlwZXMgYWRkT2JqZWN0OnBhc3RlYm9hcmRU
eXBlXTsKKyAgICAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBl
KSkKKyAgICAgICAgICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW10gb3du
ZXI6bmlsXTsKICAgICB9Ci0gICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOnR5
cGVzLmdldCgpIG93bmVyOm5pbF07CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQog
CiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAppbmRleCBhYmYyYmYxMzA4YWZkY2Vk
ZWRiNTNhNTExOTFjZWZjNDExY2ViYmE1Li5jYmM2NjZlNWVjN2IwNDY4OWQ3NzAwMmQ3MzExOGVm
NTI0YmNjODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5n
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5oCkBAIC0zMiw4ICszMiw0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV0VCQ09SRV9F
WFBPUlQgYm9vbCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmdUb0JlTWF0Y2hlZCwgY29uc3QgU3RyaW5nJiB3aWxkY2FyZFN0cmluZyk7CiAKLSNpZmRlZiBf
X09CSkNfXwotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3Rv
ckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7Ci0jZW5kaWYgLy8gZGVm
aW5lZChfX09CSkNfXykKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJp
bmdVdGlsaXRpZXMubW0KaW5kZXggZjFmNTZiMzA4N2QwZTA5MTFmMTgwZTU1MzIwNjZmYjBkYTFl
NmE5ZS4uN2NkMWJkODBhZTllMzNlNzU2ZjY1OTEyMjQwZjdlZDZjYzMzYzViNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC01OSwxNSAr
NTksNCBAQCBib29sIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZywgY29uc3QgU3RyaW5nJiB3aWxkY2FyZFN0cgogICAgIHJldHVybiBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uKHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKHdpbGRjYXJkU3RyaW5n
KSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlKS5tYXRjaChzdHJpbmcpICE9IC0xOwog
fQogCi1WZWN0b3I8U3RyaW5nPiB3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXko
TlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheSkKLXsKLSAgICBWZWN0b3I8U3RyaW5n
PiBzdHJpbmdWZWN0b3I7Ci0gICAgc3RyaW5nVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
W25zU3RyaW5nQXJyYXkgY291bnRdKTsKLQotICAgIGZvciAoTlNTdHJpbmcgKm5zU3RyaW5nIGlu
IG5zU3RyaW5nQXJyYXkpCi0gICAgICAgIHN0cmluZ1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQobnNT
dHJpbmcpOwotCi0gICAgcmV0dXJuIHN0cmluZ1ZlY3RvcjsKLX0KLQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5kZXggMzgzNjhl
YzI0N2RkMDA0NGFiOWRhYWU4ZGY2NDA1OTBkZDAyMDI4Yi4uYzc1ZDIwZjBmNzc1NjE3OWQ0Zjlk
ODAyODFlY2E0NDhlZDIwMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbXBvcnQgPHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBv
cnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4
IDIzMzU0ZjQ3ODRkZTA5MmYwNDg3YzE4NTRmYzViMjZhNWUyMjExYWMuLjQ0ZmZkYzBiNzUzZjNm
N2QyOGZjNmZkNDc4Njk5ZDcyZTRlZGQ3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBib29s
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7CiAgICAgCiAgICAgTlNEaWN0aW9u
YXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJp
dFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwK
KyAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogQCh3aWR0aCAqIGhlaWdodCAqIDEy
KSwKICAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCiAg
ICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgxMjApLAogICAgICAgICBB
VlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xl
dmVsCkBAIC0xNzAsOCArMTcwLDggQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICAgICBOU0RpY3Rpb25hcnkg
KnZpZGVvU2V0dGluZ3MgPSBAewogICAgICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2Rl
Y0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpoZWlnaHRdLAorICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IEAod2lkdGgpLAorICAgICAgICBB
VlZpZGVvSGVpZ2h0S2V5OiBAKGhlaWdodCksCiAgICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblBy
b3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcwogICAgIH07CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMTNlZGMzNTVhNTM1ODM2YTY2ODUwMTI3ODgzOWIy
OTBmNDc4MzUyYy4uZjE3N2UwOTY3YWY3NTlkODU5Y2RlYjU4OTQ4NDk2ZDA1ZjI0NjhiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogICAgIFtzZXNzaW9uKCkg
YWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CiAKICAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dEluc3RhbmNlKCkgaW5pdF0pOwotICAg
IGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmF2
VmlkZW9DYXB0dXJlUGl4ZWxCdWZmZXJGb3JtYXQoKV0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5LCBuaWxdKTsKKyAgICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOiBAKGF2
VmlkZW9DYXB0dXJlUGl4ZWxCdWZmZXJGb3JtYXQoKSksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5LCBuaWxdKTsKIAogICAgIFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6
c2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpXTsKICAgICBbbV92aWRlb091dHB1dCBzZXRBbHdheXNE
aXNjYXJkc0xhdGVWaWRlb0ZyYW1lczpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KaW5kZXggZjY3NmEyNDU1OGQ4OTgw
ZmYyMTI1MjEzODQ0NDFhM2Y0ZWJlMzE5MS4uYzk3YWViZDdkZjhmMGJhZDI2OTE0MmFlZTNmNTJk
M2JlMDdkMzE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Db29raWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0Nvb2tpZUNvY29hLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgQ29va2llOjpvcGVyYXRv
ciBOU0hUVFBDb29raWUgKiBfTnVsbGFibGUgKCkgY29uc3QKICAgICB9CiAKICNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6Y3JlYXRlZCAvIDEwMDAuMCAtIE5TVGltZUludGVydmFsU2luY2Ux
OTcwXSBmb3JLZXk6QCJDcmVhdGVkIl07CisgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OkAoY3Jl
YXRlZCAvIDEwMDAuMCAtIE5TVGltZUludGVydmFsU2luY2UxOTcwKSBmb3JLZXk6QCJDcmVhdGVk
Il07CiAjZW5kaWYKIAogICAgIGF1dG8qIHBvcnRTdHJpbmcgPSBwb3J0U3RyaW5nRnJvbVZlY3Rv
cihwb3J0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCBiZDBm
ZDY3NTM4ODI1YmUwODFjNzk1YzQ4N2YyNjEwMWQ4YzM0ZmQ1Li5jNGJkNWVmYmFjYmFkYTBjZWEy
ZTgwZmM4NTcxOGQ2YTE2NzZlMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lUwogICAgIFN0
cmluZyBjb29raWVTdHJpbmcgPSBjb29raWVTdHIuY29udGFpbnMoJz0nKSA/IGNvb2tpZVN0ciA6
IGNvb2tpZVN0ciArICI9IjsKIAogICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgTlNE
aWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0OmNvb2tpZVN0cmluZyBmb3JLZXk6QCJTZXQtQ29va2llIl07CisgICAgTlNEaWN0aW9uYXJ5
ICpoZWFkZXJGaWVsZHMgPSBAeyBAIlNldC1Db29raWUiOiBjb29raWVTdHJpbmcgfTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcyA9IFtOU0hUVFBD
b29raWUgX3BhcnNlZENvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6aGVhZGVyRmllbGRz
IGZvclVSTDpjb29raWVVUkxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggZDZlZWVm
ZGQ4Yzk2ZDM4ODljZmU2ZGU5NGYyNWQ1YmNhY2ZlY2Y3Mi4uNzY2ZWEzYjgyZjU4NWFmMTZhZmRh
YmUxMmFjYTg3Mjg2MjQ0MGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0xOTIs
NyArMTkyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCkKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtuc1JlcXVlc3QgX3Nl
dFByb3BlcnR5OnNpdGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNwb3NpdGlvbiwgbnNSZXF1ZXN0
LlVSTCkgZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVz
Il07Ci0gICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1faXNUb3BTaXRlXSBmb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5SXNUb3BM
ZXZlbE5hdmlnYXRpb24iXTsKKyAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTptX2lzVG9wU2l0
ZSA/IEBZRVMgOiBATk8gZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eUlzVG9w
TGV2ZWxOYXZpZ2F0aW9uIl07CiAjZW5kaWYKIAogICAgIC8vIENhbm5vdCBqdXN0IHVzZSBzZXRB
bGxIVFRQSGVhZGVyRmllbGRzIGhlcmUsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVtb3ZlIGhlYWRl
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNDNkZjUyZGFlNWZhMDM4ODVkMDcwOWE3ZTc0ZDM4
YzgyODI3M2QyZC4uNjI2ZmViNTIyOGMxZGY4MjEyMGM0OWM2OGFmYzFlMDQ0MjdkMjI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQpAQCAtNTIsNyArNTIsNiBAQAogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KICNpbXBvcnQgPHd0Zi9OYWtlZFJlZi5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Q
cm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQg
PHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5tbQppbmRleCBlY2JiNzk3Nzc2YzJiOGY5NzE2NWMzMzllZjA0ZmZiZjQ5NGE2OGQ5Li42ODRm
ZDg4Nzk3NjUzZjQ4Y2IzNmM0NWRiMjA4MTdmNGMyYWU4NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaW1w
b3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL1JlZ3VsYXJFeHByZXNzaW9uLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1
bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggMTNiOWFkYTYxMDJjNjQxZTIyNzcx
YWVlYTQ2NGQxZDBiYWQ2NDc2Mi4uMjcwM2IyOGIxZjM2NGMyY2IxMzFlYzEwMWRiNzAyMWRmMDJj
MmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2lu
UHJvY2Vzc01hYy5tbQpAQCAtNTYsNiArNTYsNyBAQAogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNp
bXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBjb25zdCBDRlN0cmluZ1JlZiBrTFNQ
bHVnSW5CdW5kbGVJZGVudGlmaWVyS2V5ID0gQ0ZTVFIoIkxTUGx1Z0luQnVuZGxlSWRlbnRpZmll
cktleSIpOwogCkBAIC0yNTYsMTIgKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VkTlNDb25j
cmV0ZVRhc2tfbGF1bmNoKE5TVGFzayAqc2VsZiwgU0VMIF9jbWQpCiB7CiAgICAgU3RyaW5nIGxh
dW5jaFBhdGggPSBzZWxmLmxhdW5jaFBhdGg7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVu
dHM7Ci0gICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VsZi5hcmd1bWVudHMu
Y291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKmFyZ3VtZW50IGluIHNlbGYuYXJndW1lbnRzKQot
ICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKGFyZ3VtZW50KTsKLQotICAgIGlmIChQ
bHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hQcm9jZXNzKGxhdW5jaFBhdGgsIGFyZ3Vt
ZW50cykpCisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaFByb2Nlc3Mo
bGF1bmNoUGF0aCwgbWFrZVZlY3RvcjxTdHJpbmc+KHNlbGYuYXJndW1lbnRzKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE5TQ29uY3JldGVUYXNrX2xhdW5jaChzZWxmLCBfY21kKTsKQEAgLTI3
MSwxNiArMjY3LDggQEAgc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICooKk5TV29ya3NwYWNl
X2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc19jb25maWcKIAogc3RhdGljIE5TUnVubmlu
Z0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxf
b3B0aW9uc19jb25maWd1cmF0aW9uX2Vycm9yKE5TV29ya3NwYWNlICpzZWxmLCBTRUwgX2NtZCwg
TlNVUkwgKnVybCwgTlNXb3Jrc3BhY2VMYXVuY2hPcHRpb25zIG9wdGlvbnMsIE5TRGljdGlvbmFy
eSAqY29uZmlndXJhdGlvbiwgTlNFcnJvciAqKmVycm9yKQogewotICAgIFZlY3RvcjxTdHJpbmc+
IGFyZ3VtZW50czsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
IGlmIChOU0FycmF5ICphcmd1bWVudHNBcnJheSA9IFtjb25maWd1cmF0aW9uIG9iamVjdEZvcktl
eTpOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25Bcmd1bWVudHNdKSB7Ci0gICAgICAgIGlm
IChbYXJndW1lbnRzQXJyYXkgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBhcnJheV1dKSB7Ci0gICAg
ICAgICAgICBmb3IgKE5TU3RyaW5nICphcmd1bWVudCBpbiBhcmd1bWVudHNBcnJheSkgewotICAg
ICAgICAgICAgICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAgYXV0byBhcmd1bWVudHMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW2NvbmZpZ3VyYXRpb24gb2JqZWN0Rm9yS2V5Ok5TV29ya3NwYWNlTGF1bmNo
Q29uZmlndXJhdGlvbkFyZ3VtZW50c10pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFwcGxp
Y2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGYyMzM4YjhjYzAxNzVjMmQwNmU2
N2M5OGMzNTQ0NTg3NmI0NDQ5OGQuLjMxMzA4ODY2NTI1ZjYxOGI4ZjYxOGE2ZDU3OWRiODczNjA3
MDBlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAt
MzIsMTAgKzMyLDEyIEBACiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgotI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5o
PgogI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAogI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYUFkZGl0aW9ucy5tbT4KQEAgLTEzMSwxNCArMTMzLDYgQEAgc3RhdGlj
IFBLTWVyY2hhbnRDYXBhYmlsaXR5IHRvUEtNZXJjaGFudENhcGFiaWxpdGllcyhjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IHRvU3VwcG9ydGVkTmV0d29ya3MoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1
cHBvcnRlZE5ldHdvcmtzKQotewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnN1cHBvcnRlZE5ldHdvcmtzLnNpemUoKV0p
OwotICAgIGZvciAoYXV0byYgc3VwcG9ydGVkTmV0d29yayA6IHN1cHBvcnRlZE5ldHdvcmtzKQot
ICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpzdXBwb3J0ZWROZXR3b3JrXTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCiBzdGF0aWMgUEtTaGlwcGluZ1R5cGUgdG9QS1NoaXBwaW5nVHlwZShXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlIHNoaXBwaW5n
VHlwZSkKIHsKICAgICBzd2l0Y2ggKHNoaXBwaW5nVHlwZSkgewpAQCAtMjEyLDcgKzIwNiw3IEBA
IFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1QYXltZW50UmVxdWVzdChjCiAgICAgW3Jlc3VsdCBzZXRSZXF1aXJlZEJpbGxpbmdD
b250YWN0RmllbGRzOnRvUEtDb250YWN0RmllbGRzKHBheW1lbnRSZXF1ZXN0LnJlcXVpcmVkQmls
bGluZ0NvbnRhY3RGaWVsZHMoKSkuZ2V0KCldOwogICAgIFtyZXN1bHQgc2V0UmVxdWlyZWRTaGlw
cGluZ0NvbnRhY3RGaWVsZHM6dG9QS0NvbnRhY3RGaWVsZHMocGF5bWVudFJlcXVlc3QucmVxdWly
ZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMoKSkuZ2V0KCldOwogCi0gICAgW3Jlc3VsdCBzZXRTdXBw
b3J0ZWROZXR3b3Jrczp0b1N1cHBvcnRlZE5ldHdvcmtzKHBheW1lbnRSZXF1ZXN0LnN1cHBvcnRl
ZE5ldHdvcmtzKCkpLmdldCgpXTsKKyAgICBbcmVzdWx0IHNldFN1cHBvcnRlZE5ldHdvcmtzOmNy
ZWF0ZU5TQXJyYXkocGF5bWVudFJlcXVlc3Quc3VwcG9ydGVkTmV0d29ya3MoKSkuZ2V0KCldOwog
ICAgIFtyZXN1bHQgc2V0TWVyY2hhbnRDYXBhYmlsaXRpZXM6dG9QS01lcmNoYW50Q2FwYWJpbGl0
aWVzKHBheW1lbnRSZXF1ZXN0Lm1lcmNoYW50Q2FwYWJpbGl0aWVzKCkpXTsKIAogICAgIFtyZXN1
bHQgc2V0U2hpcHBpbmdUeXBlOnRvUEtTaGlwcGluZ1R5cGUocGF5bWVudFJlcXVlc3Quc2hpcHBp
bmdUeXBlKCkpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkVy
cm9yc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViRXJyb3JzQ29jb2Eu
bW0KaW5kZXggNmY5ZmRiMDBlY2Q0YWFjMzMxNzkyNjg4YjcyMDVjNGEwZDA2NDZiNy4uNzRlYzlh
YzJhZDkxNjI1YWEwZmU3NDFlYzI3N2Q0ZmIyYzVkM2UxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViRXJyb3JzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViRXJyb3JzQ29jb2EubW0KQEAgLTI2LDMzICsyNiwyOCBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJFcnJvcnMuaCIKIAotI2ltcG9ydCAiQVBJRXJyb3Iu
aCIKLSNpbXBvcnQgIldLRXJyb3JSZWYuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3Ry
aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJy
b3IoTlNTdHJpbmcqIGRvbWFpbiwgaW50IGNvZGUsIE5TVVJMICpVUkwpCitzdGF0aWMgUmV0YWlu
UHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3IoTlNTdHJpbmcgKmRvbWFpbiwgaW50IGNvZGUsIE5T
VVJMICpVUkwpCiB7Ci0gICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgVVJMLCBAIk5TRXJyb3JGYWls
aW5nVVJMS2V5IiwKLSAgICAgICAgW1VSTCBhYnNvbHV0ZVN0cmluZ10sIEAiTlNFcnJvckZhaWxp
bmdVUkxTdHJpbmdLZXkiLAotICAgICAgICBuaWxdOwotCisgICAgTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyA9IEB7CisgICAgICAgIEAiTlNFcnJvckZhaWxpbmdVUkxLZXkiOiBVUkwsCisgICAgICAg
IEAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiOiBVUkwuYWJzb2x1dGVTdHJpbmcsCisgICAg
fTsKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmRv
bWFpbiBjb2RlOmNvZGUgdXNlckluZm86dXNlckluZm9dKTsKIH0KIAotUmVzb3VyY2VFcnJvciBj
YW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihjcmVhdGVOU0Vycm9yKE5T
VVJMRXJyb3JEb21haW4sIE5TVVJMRXJyb3JDYW5jZWxsZWQsIHJlcXVlc3QudXJsKCkpLmdldCgp
KTsKKyAgICByZXR1cm4gY3JlYXRlTlNFcnJvcihOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVycm9y
Q2FuY2VsbGVkLCByZXF1ZXN0LnVybCgpKS5nZXQoKTsKIH0KIAotUmVzb3VyY2VFcnJvciBmaWxl
RG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihj
cmVhdGVOU0Vycm9yKE5TVVJMRXJyb3JEb21haW4sIE5TVVJMRXJyb3JGaWxlRG9lc05vdEV4aXN0
LCByZXNwb25zZS51cmwoKSkuZ2V0KCkpOworICAgIHJldHVybiBjcmVhdGVOU0Vycm9yKE5TVVJM
RXJyb3JEb21haW4sIE5TVVJMRXJyb3JGaWxlRG9lc05vdEV4aXN0LCByZXNwb25zZS51cmwoKSku
Z2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNzAxMzI4MWVjMzRiYmY0YTU4ZTAyMzBmNGU4
ZjQ0OWNmNDlkNDQzMS4uZGZkNGI2MGViOWU4ZGYxZWFkYWYwMjQ3ZTliMmQyYjBkNDZjODI4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCkBAIC00Niwz
MiArNDYsMzIgQEAgc3RhdGljIGlubGluZSBOU0FycmF5ICpyZXRhaW4oTlNBcnJheSAqYXJyYXkp
CiAgICAgCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcoKQogewotICAgIHN0
YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldl
YkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2
ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZp
bGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJDb3Jl
OjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJk
VHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HLCBuaWxdKTsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFz
dGVib2FyZFR5cGUoKSwKKyAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJU
RlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVBOR10pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVi
b2FyZFR5cGVzOjpmb3JVUkwoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwg
V2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgIFdl
YlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgp
LCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6
OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBXZWJVUkxOYW1l
UGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJh
eSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0
eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeVRJ
RkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6
OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQ
Ym9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsK
KyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjps
ZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pOwogICAgIHJl
dHVybiB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRo
QXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5
cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkg
KnR5cGVzID0gcmV0YWluKEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5
cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAog
TlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JTZWxlY3Rpb24oKQogewotICAgIHN0YXRpYyBO
U0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkFyY2hp
dmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2Vi
Q29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5pbF0p
OworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRU
eXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKTsKICAgICByZXR1cm4g
dHlwZXM7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCmluZGV4IDFkMDA4M2M1N2NiZWE5
N2RlYjdiOTBlZGNiMTc4ZDAzZmZlNDJkZTMuLjE2NGY2MGVjY2NjNWQ2NzYzZjVhOTNkMDczYzI4
YTI3NTIwZGJiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAj
aW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KIAogc3RhdGljIFdLRXJyb3JDb2RlIHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjpl
cnJvcl9jb2RlJiBlcnJvcikKIHsKQEAgLTkzLDEwICs5NCw3IEBAIC0gKHZvaWQpbG9va1VwQ29u
dGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRp
b25IYW5kCiAtICh2b2lkKWdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOih2
b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+KikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBf
Y29udGVudFJ1bGVMaXN0U3RvcmUtPmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZp
ZXJzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5PE5T
U3RyaW5nICo+ICpuc0lkZW50aWZpZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5OmlkZW50aWZpZXJzLnNpemUoKV07Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgaWRlbnRp
ZmllciA6IGlkZW50aWZpZXJzKQotICAgICAgICAgICAgW25zSWRlbnRpZmllcnMgYWRkT2JqZWN0
OmlkZW50aWZpZXJdOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuc0lkZW50aWZpZXJzKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlTlNBcnJheShpZGVudGlmaWVycykuZ2V0
KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDAzMjU4NDU3MWNiNjNkYmU2YjQ5YTc5NTNmNmU4
ZDZkN2U4M2UzNzUuLmY1ZWFjZWUwZThjZTNiMzE0OTM0NTQxMGY5YTI2MWQ1MjdlMzkxMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC02MTAsMTAg
KzYxMSw3IEBAIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0
YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdl
c09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogewog
ICAgIF9wcm9jZXNzUG9vbC0+YWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGlu
ZyhwaWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChWZWN0b3I8U3RyaW5nPiYmIGFjdGl2ZVBhZ2VzT3JpZ2lucykgewotICAgICAgICBOU011
dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYXJyYXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTphY3RpdmVQYWdlc09yaWdpbnMuc2l6ZSgpXSBhdXRvcmVsZWFzZV07
Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogYWN0aXZlUGFnZXNPcmlnaW5zKQotICAgICAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpvcmlnaW5dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhcnJheSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5TQXJyYXkoYWN0aXZl
UGFnZXNPcmlnaW5zKS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDU4OGE4NmI0MjBjNDAy
ZDE5NGI4MGU5YzY4NjA3M2Y3NzMwMWQ0NzIuLjhlMTBlZmZlYmU3NWFmMmU2ZWFiNWE3MTlhMzZm
ZGNjMTBjOGJmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlclNjcmlwdC5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiV0tVc2VyU2NyaXB0
SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLVXNl
clNjcmlwdAogCkBAIC04NCw3ICs4NSw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2Vi
Q29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6
Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3Qp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVz
ZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRl
VW5pcXVlVVJMKCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVj
dG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6Oldh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpA
QCAtOTQsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmlu
ZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJT
Y3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNl
KSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0
KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KQEAgLTExMCw3ICsxMTEsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6
OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3Jh
cHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0
cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIG1ha2VW
ZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMjAsNyArMTIxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2Ny
aXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFz
c29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6
OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVs
aXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3Jl
VXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTMw
LDcgKzEzMSw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICop
c291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlw
dCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM6OkluamVjdEluQWxsRnJhbWVzLCBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbiA/IFdl
YkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyA6IFdlYkNvcmU6
OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVs
aXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3Jl
VXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbiA/IFdlYkNvcmU6OldhaXRGb3JOb3RpZmlj
YXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyA6IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYzODc3MjM5YjBiNjVjMDc0Yjky
MzVhLi43MDhiNDk2YjdlMTlhMzBjOWIwMmE0ZTBlOWZiZGM1MjEwNzVhMGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEzNiw2ICsx
MzYsNyBAQAogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29h
Lmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTQzOCw3ICs0MzksNyBAQCAtICh2b2lkKV9zZXR1cFBhZ2VD
b25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0
aW9uCiAgICAgICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6
V2ViUGFnZUdyb3VwOjpjcmVhdGUoZ3JvdXBJZGVudGlmaWVyKS5wdHIoKSk7CiAgICAgfQogCi0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKFdl
YkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRp
b24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhtYWtlVmVjdG9yPFN0cmluZz4o
W19jb25maWd1cmF0aW9uIF9hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKIAogICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTdXBwcmVzc2VzSW5jcmVtZW50
YWxSZW5kZXJpbmcoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVy
aW5nXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggN2FhN2QxMWVhMDdjNmU0MjI2NTM3
YjFjZjAxYTM4MzBjOWNlMWRjMC4uOWJhYjhjOGQzNmQ2ZTgxNWYyODExNGNhMGJjZmIxNDQ5YzU2
ZDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTg5NywyMCAr
ODk4LDEyIEBAIC0gKFdLV2Vic2l0ZURhdGFTdG9yZSAqKV93ZWJzaXRlRGF0YVN0b3JlSWZFeGlz
dHMKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIHsK
LSAgICBhdXRvJiB2ZWN0b3IgPSBfcGFnZUNvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0
ZXJucygpOwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGF1dG8mIHBhdHRlcm4gOiB2
ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6cGF0dGVybl07Ci0gICAgcmV0dXJuIGFy
cmF5OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9wYWdlQ29uZmlndXJhdGlvbi0+Y29yc0Rp
c2FibGluZ1BhdHRlcm5zKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpX3NldENPUlNE
aXNhYmxpbmdQYXR0ZXJuczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhdHRlcm5zCiB7Ci0gICAg
VmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHBhdHRlcm5zLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpwYXR0ZXJuIGluIHBhdHRlcm5z
KQotICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHBhdHRlcm4pOwotICAgIF9wYWdlQ29u
ZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdURk1vdmUodmVjdG9yKSk7Cisg
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobWFrZVZlY3Rv
cjxTdHJpbmc+KHBhdHRlcm5zKSk7CiB9CiAKIC0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdvcms6
KEJPT0wpbG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggMTlmYTRmMGUxMDY4YTRjYTg2ZWM4OTg0YzJkYmE5
NTI0ZjUzNDI5OS4uOWFkMDNkNTkyYjgxZTMzM2FkZThlZTdiOTg4MTRjMjUxZTRmYTkzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rl
c3RpbmcubW0KQEAgLTY2LDcgKzY2LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRlbnRzT2ZV
c2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcgKil1c2VySW50ZXJmYWNlSXRlbQogICAgICAgICBh
dXRvKiB2YWxpZGF0aW9uQnViYmxlID0gX3BhZ2UtPnZhbGlkYXRpb25CdWJibGUoKTsKICAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+
bWVzc2FnZSgpIDogZW1wdHlTdHJpbmcoKTsKICAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmFs
aWRhdGlvbkJ1YmJsZSA/IHZhbGlkYXRpb25CdWJibGUtPmZvbnRTaXplKCkgOiAwOwotICAgICAg
ICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAq
KW1lc3NhZ2UsIEAiZm9udFNpemUiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpmb250U2l6
ZV0gfSB9OworICAgICAgICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2Fn
ZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9udFNpemUiOiBAKGZvbnRTaXplKSB9IH07CiAg
ICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLm1t
CmluZGV4IDI0ZDQ2NzhjOWU2ZGUzOGE4YzFjZGNmOWIwOTVjNWQxYTliNDZiZTcuLjI3YTEzNWIy
ZGZjMzFkZDBiMzk4MGY0YTdkNTg4MGMyNjZmNTMzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlv
bi5tbQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogCisjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KKwogQGltcGxlbWVudGF0aW9uIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbgog
CiAtICh2b2lkKWRlYWxsb2MKQEAgLTUyLDE0ICs1NCwxMCBAQCAtIChCT09MKW1hZGVIVFRQUwog
CiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopbm90aWZpY2F0aW9ucwogewotICAgIGNvbnN0IGF1
dG8mIHZlY3RvciA9IF9hY3Rpb24tPm5vdGlmaWNhdGlvbnMoKTsKKyAgICBhdXRvJiB2ZWN0b3Ig
PSBfYWN0aW9uLT5ub3RpZmljYXRpb25zKCk7CiAgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYXJy
YXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6
ZSgpXSBhdXRvcmVsZWFzZV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBub3RpZmljYXRpb24gOiB2
ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6bm90aWZpY2F0aW9uXTsKLSAgICByZXR1
cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkodmVjdG9yKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0KaW5k
ZXggZGRlZjcxZjhlNDQzNTBlMjBiZjFiZDc2NGI4YTlhZTZmZGM2ZDIxYy4uNTBlZTg0NWJiZDU4
ZDFkMGU4MjEzZDRiYTkzZjVjZWU4NzhmOWU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgi
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLQ3VzdG9tSGVhZGVyRmllbGRzCiAKQEAgLTY4LDIw
ICs2OSwxMiBAQCAtICh2b2lkKXNldEZpZWxkczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5T
U3RyaW5nICo+ICopZmllbGRzCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0aGlyZFBhcnR5
RG9tYWlucwogewotICAgIGF1dG8mIGRvbWFpbnMgPSBfZmllbGRzLT50aGlyZFBhcnR5RG9tYWlu
cygpOwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpkb21haW5zLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmRvbWFpbl07Ci0gICAgcmV0dXJuIGFycmF5
OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9maWVsZHMtPnRoaXJkUGFydHlEb21haW5zKCkp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0VGhpcmRQYXJ0eURvbWFpbnM6KE5TQXJy
YXk8TlNTdHJpbmcgKj4gKil0aGlyZFBhcnR5RG9tYWlucwogewotICAgIFZlY3RvcjxTdHJpbmc+
IGRvbWFpbnM7Ci0gICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRoaXJkUGFydHlE
b21haW5zLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gaW4gdGhpcmRQYXJ0eURv
bWFpbnMpCi0gICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFpbik7Ci0gICAgX2Zp
ZWxkcy0+c2V0VGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgX2ZpZWxk
cy0+c2V0VGhpcmRQYXJ0eURvbWFpbnMobWFrZVZlY3RvcjxTdHJpbmc+KHRoaXJkUGFydHlEb21h
aW5zKSk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbQppbmRleCAxOGRhZTFjNTA1YTJkMDY4NzQwZDU1OWNmMGFkMzFlYTE3MmM3
YzA3Li5hZDM2NWJjYjFmNTFhZGIwNmU3NjI2MTYzM2UxODVkOGMxNWNhZWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkxlZ2Fj
eUdsb2JhbFNldHRpbmdzLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1w
bGVtZW50YXRpb24gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uCiAKQEAgLTE3Niw1MSArMTc3
LDIyIEBAIC0gKHZvaWQpc2V0V2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcjooTlNVSW50ZWdlcilp
ZGVudGlmaWVyCiAKIC0gKE5TQXJyYXkgKiljYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcwogewot
ICAgIGF1dG8gc2NoZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmNhY2hlUGFydGl0
aW9uZWRVUkxTY2hlbWVzKCk7Ci0gICAgaWYgKHNjaGVtZXMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gQFtdOwotCi0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IHNjaGVtZSA6IHNjaGVtZXMpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nICop
c2NoZW1lXTsKLQotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShf
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
OihOU0FycmF5ICopY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMKIHsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBzY2hlbWVzOwotICAgIGZvciAoaWQgdXJsU2NoZW1lIGluIGNhY2hlUGFydGl0aW9uZWRV
UkxTY2hlbWVzKSB7Ci0gICAgICAgIGlmIChbdXJsU2NoZW1lIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBzY2hlbWVzLmFwcGVuZChTdHJpbmcoKE5TU3RyaW5n
ICopdXJsU2NoZW1lKSk7Ci0gICAgfQotICAgIAotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOworICAg
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
KG1ha2VWZWN0b3I8U3RyaW5nPihjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykpOwogfQogCiAt
IChOU0FycmF5ICopYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzCiB7Ci0gICAgYXV0byYgc2No
ZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lcygpOwotICAgIGlmIChzY2hlbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEBbXTsK
LQotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhD
YXBhY2l0eTpzY2hlbWVzLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiBzY2hlbWUgOiBzY2hlbWVz
KQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXNjaGVtZV07Ci0KLSAgICBy
ZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi0+YWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKCkpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKHZvaWQpc2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOihOU0FycmF5ICopYWx3
YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2NoZW1lczsK
LSAgICBzY2hlbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLmNvdW50KTsKLSAgICBmb3IgKGlkIHNjaGVtZSBpbiBhbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXMpIHsKLSAgICAgICAgaWYgKFtzY2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKLSAgICAgICAgICAgIHNjaGVtZXMuYXBwZW5kKChOU1N0cmluZyAqKXNjaGVtZSk7
Ci0gICAgfQotCi0gICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0QWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOworICAgIF9wcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24tPnNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyhtYWtlVmVjdG9yPFN0cmlu
Zz4oYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFs
LmgKaW5kZXggNzU5MWJlY2VlMTRmMDM0ODY2YjE3MTc0YjllNzMyNTM2OGYwYjQ0OS4uMjg2ZDJi
MzI0NjFjZGE4MjM1MmU5YmZiYWQyNTQ1YjY0ZTMyYzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxk
SW50ZXJuYWwuaApAQCAtMjcsMjYgKzI3LDYgQEAKIAogQGNsYXNzIFdLQ29udGVudFdvcmxkOwog
Ci1uYW1lc3BhY2UgQVBJIHsKLQotaW5saW5lIFZlY3RvcjxXVEY6OlN0cmluZz4gdG9TdHJpbmdW
ZWN0b3IoTlNBcnJheSAqaW5wdXQpCi17Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiB2ZWN0b3I7
Ci0KLSAgICBOU1VJbnRlZ2VyIHNpemUgPSBpbnB1dC5jb3VudDsKLSAgICBpZiAoIXNpemUpCi0g
ICAgICAgIHJldHVybiB2ZWN0b3I7Ci0KLSAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKTsKLSAgICBmb3IgKGlkIHN0cmluZyA6IGlucHV0KSB7Ci0gICAgICAgIGlmIChbc3Ry
aW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICB2ZWN0b3Iu
dW5jaGVja2VkQXBwZW5kKHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0K
LX0KLQogQGludGVyZmFjZSBfV0tVc2VyQ29udGVudFdvcmxkICgpIDxXS09iamVjdD4gewogQHBh
Y2thZ2UKICAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF9jb250ZW50V29ybGQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0KaW5kZXggNjQyM2JjYjk1Yzc2M2Y0MGY3NTRiMjllMDEzMWVhODRmYzBlMTNiOC4uNDZh
ZjhhZDJiYzQ5MjZmYWU4MTI5NGFlNmJhMjg5MzE3YTg0NzBjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1Vz
ZXJTdHlsZVNoZWV0CiAKQEAgLTcxLDcgKzcyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4K
ICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVl
VVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhp
cy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXpl
V2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5n
KHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdh
Y3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
KyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+
KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJ
OjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgbWFrZVZlY3RvcjxTdHJpbmc+
KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBm
b3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtODQsNyArODUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6
KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbgogICAgIC8v
IEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVs
b3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdo
ZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQy
KCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxl
U2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNl
KSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZT
dHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6
OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSkgfSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCks
IG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA3NmRmZmZlNzNjY2Qw
NzM0YWMwZjkyMzcwMGFhZWY3NzcwNWJlYTk0Li40NmFmNzNiNDM3OWZjNzc2MWYwNGQzMjRiYzZi
YmFkN2RmZjE0ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtMTI2LDYgKzEyNiw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNpZiBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtMzY2OCw3ICszNjY5LDcgQEAgaWQgV2Vi
Vmlld0ltcGw6OmFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRl
LCBpZCBwYXJhbWV0ZXIpCiAKICAgICAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpj
aGlsZF07CisgICAgICAgIHJldHVybiBAW2NoaWxkXTsKICAgICB9CiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdKQogICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlOwpAQCAtNDA0MywxMSArNDA0NCw3IEBA
IGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5m
bz4gZHJhZ2dpbmdJbmZvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzOwotCi0gICAgICAgIGZvciAoTlNTdHJp
bmcgKmZpbGUgaW4gZmlsZXMpCi0gICAgICAgICAgICBmaWxlTmFtZXMuYXBwZW5kKGZpbGUpOwot
ICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoZmlsZU5hbWVz
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAg
ICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKG1ha2VWZWN0b3I8
U3RyaW5nPihmaWxlcyksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25G
b3JVcGxvYWQpOwogICAgIH0KIAogICAgIFN0cmluZyBkcmFnZ2luZ1Bhc3RlYm9hcmROYW1lID0g
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lOwpAQCAtNDMzNSw3ICs0MzMyLDcg
QEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBpZiAoIW1fcHJvbWlzZWRVUkwuaXNFbXB0
eSgpKQogICAgICAgICBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1f
cHJvbWlzZWRVUkwpOwogCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0
aCBsYXN0UGF0aENvbXBvbmVudF1dOworICAgIHJldHVybiBAW1twYXRoIGxhc3RQYXRoQ29tcG9u
ZW50XV07CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiYmIGNv
bXBsZXRpb24pCkBAIC00NzQ5LDcgKzQ3NDYsNyBAQCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiBXZWJWaWV3SW1wbDo6Y29sbGVjdEtleWJvYXJkTGF5b3V0Q29tbWFuZHNGb3JFdgog
ICAgIGlmIChOU1RleHRJbnB1dENvbnRleHQgKmNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKICAg
ICAgICAgW2NvbnRleHQgaGFuZGxlRXZlbnRCeUtleWJvYXJkTGF5b3V0OmV2ZW50XTsKICAgICBl
bHNlCi0gICAgICAgIFttX3ZpZXcgaW50ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpldmVudF1dOworICAgICAgICBbbV92aWV3IGludGVycHJldEtleUV2ZW50czpAW2V2
ZW50XV07CiAKICAgICBtX2NvbGxlY3RlZEtleXByZXNzQ29tbWFuZHMgPSBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9j
ZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggYThhN2I2NWY0NmYwOTBlNzMwZmFjMjlkOWIxYTNk
MTFlMzQzNDdiZi4uNTZmN2VkMjQ4MjZmNDk3NDY3NjM5ZjAxY2YwOTgyMWU1ZWY2MmYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vz
c1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1Bs
dWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGludGVyZmFjZSBXS1BsYWNlaG9sZGVyTW9kYWxXaW5kb3cg
OiBOU1dpbmRvdyAKQEAgLTI1MSwxMSArMjUyLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6
OmxhdW5jaFByb2Nlc3MoY29uc3QgU3RyaW5nJiBsYXVuY2hQYXRoLCBjb25zdCBWZWN0b3I8U3QK
ICAgICBpZiAoIXNob3VsZExhdW5jaFByb2Nlc3MobV9wbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywg
bGF1bmNoUGF0aCwgYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJndW1lbnRzQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YXJndW1l
bnRzLnNpemUoKV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUo
KTsgKytpKQotICAgICAgICBbYXJndW1lbnRzQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKWFy
Z3VtZW50c1tpXV07Ci0KLSAgICBbTlNUYXNrIGxhdW5jaGVkVGFza1dpdGhMYXVuY2hQYXRoOmxh
dW5jaFBhdGggYXJndW1lbnRzOmFyZ3VtZW50c0FycmF5LmdldCgpXTsKKyAgICBbTlNUYXNrIGxh
dW5jaGVkVGFza1dpdGhMYXVuY2hQYXRoOmxhdW5jaFBhdGggYXJndW1lbnRzOmNyZWF0ZU5TQXJy
YXkoYXJndW1lbnRzKS5nZXQoKV07CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAK
QEAgLTI2NSwxMCArMjYyLDEwIEBAIHN0YXRpYyBib29sIGlzSmF2YVVwZGF0ZXJVUkwoY29uc3Qg
UGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblByb2Nlc3NBdHRyaWJ1CiAgICAgaWYgKCFb
dXJsIGlzRmlsZVVSTF0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TQXJyYXkgKmph
dmFVcGRhdGVyQXBwTmFtZXMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAiSmF2YSBVcGRh
dGVyLmFwcCIsIEAiSmF2YVVwZGF0ZXIuYXBwIiwgbmlsXTsKKyAgICBOU0FycmF5ICpqYXZhVXBk
YXRlckFwcE5hbWVzID0gQFtAIkphdmEgVXBkYXRlci5hcHAiLCBAIkphdmFVcGRhdGVyLmFwcCJd
OwogCiAgICAgZm9yIChOU1N0cmluZyAqamF2YVVwZGF0ZXJBcHBOYW1lIGluIGphdmFVcGRhdGVy
QXBwTmFtZXMpIHsKLSAgICAgICAgTlNTdHJpbmcgKmphdmFVcGRhdGVyUGF0aCA9IFtOU1N0cmlu
ZyBwYXRoV2l0aENvbXBvbmVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooTlNTdHJpbmcg
KilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5tb2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVz
b3VyY2VzIiwgamF2YVVwZGF0ZXJBcHBOYW1lLCBuaWxdXTsKKyAgICAgICAgTlNTdHJpbmcgKmph
dmFVcGRhdGVyUGF0aCA9IFtOU1N0cmluZyBwYXRoV2l0aENvbXBvbmVudHM6QFsoTlNTdHJpbmcg
KilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5tb2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVz
b3VyY2VzIiwgamF2YVVwZGF0ZXJBcHBOYW1lXV07CiAgICAgICAgIGlmIChbdXJsLnBhdGggaXNF
cXVhbFRvU3RyaW5nOmphdmFVcGRhdGVyUGF0aF0pCiAgICAgICAgICAgICByZXR1cm4gWUVTOwog
ICAgIH0KQEAgLTI4OSwyMCArMjg2LDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWCiAgICAg
aWYgKCFzaG91bGRMYXVuY2hBcHBsaWNhdGlvbkF0VVJMKG1fcGx1Z2luUHJvY2Vzc0F0dHJpYnV0
ZXMsIHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFyZ3VtZW50c0FycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFyZ3VtZW50cy5zaXpl
KCldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkK
LSAgICAgICAgW2FyZ3VtZW50c0FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKilhcmd1bWVudHNb
aV1dOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBOU0Rp
Y3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0OmFyZ3VtZW50c0FycmF5LmdldCgpIGZvcktleTpOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3Vy
YXRpb25Bcmd1bWVudHNdOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBAeyBOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25B
cmd1bWVudHM6IGNyZWF0ZU5TQXJyYXkoYXJndW1lbnRzKS5nZXQoKSB9OwogICAgIFtbTlNXb3Jr
c3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBsYXVuY2hBcHBsaWNhdGlvbkF0VVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOnVybFN0cmluZ10gb3B0aW9uczpOU1dvcmtzcGFjZUxhdW5jaEFzeW5jIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbiBlcnJvcjpudWxscHRyXTsKLSAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBpc1NpbHZlcmxp
Z2h0UHJlZmVyZW5jZXNVUkwoY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBOU1VSTCAq
c2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGhDb21wb25l
bnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291cmNlcy9TaWx2ZXJsaWdo
dCBQcmVmZXJlbmNlcy5hcHAiLCBuaWxdXTsKKyAgICBOU1VSTCAqc2lsdmVybGlnaHRQcmVmZXJl
bmNlc1VSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGhDb21wb25lbnRzOkBbKE5TU3RyaW5nICop
cGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291
cmNlcy9TaWx2ZXJsaWdodCBQcmVmZXJlbmNlcy5hcHAiXV07CiAKICAgICByZXR1cm4gW1tOU1VS
TCBVUkxXaXRoU3RyaW5nOnVybFN0cmluZ10gaXNFcXVhbDpzaWx2ZXJsaWdodFByZWZlcmVuY2Vz
VVJMXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IGRiMGFiYjgyMTZkNmNlNDE3
ZGI1OGNhNmVhOWQwZWVmNGE1YjMzYzkuLjJiODhjOWZjNzIyZTYwZGZhNTViMTdkOTgxMWZiZjky
YmZjMTk4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtNTMsOCArNTMsOCBAQCBI
aWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX21hbmFn
ZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrSU9I
SURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0RpY3Rpb25hcnkgKm1hdGNoaW5nRGljdGlvbmFy
eSA9IEB7Ci0gICAgICAgIEBrSU9ISURQcmltYXJ5VXNhZ2VQYWdlS2V5OiBhZG9wdE5TKFtOU051
bWJlciBudW1iZXJXaXRoSW50OmtDdGFwSGlkVXNhZ2VQYWdlXSkuZ2V0KCksCi0gICAgICAgIEBr
SU9ISURQcmltYXJ5VXNhZ2VLZXk6IGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6a0N0
YXBIaWRVc2FnZV0pLmdldCgpCisgICAgICAgIEBrSU9ISURQcmltYXJ5VXNhZ2VQYWdlS2V5OiBA
KGtDdGFwSGlkVXNhZ2VQYWdlKSwKKyAgICAgICAgQGtJT0hJRFByaW1hcnlVc2FnZUtleTogQChr
Q3RhcEhpZFVzYWdlKSwKICAgICB9OwogICAgIElPSElETWFuYWdlclNldERldmljZU1hdGNoaW5n
KG1fbWFuYWdlci5nZXQoKSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZiltYXRjaGluZ0RpY3Rp
b25hcnkpOwogICAgIElPSElETWFuYWdlclJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdDYWxsYmFjayht
X21hbmFnZXIuZ2V0KCksIGRldmljZUFkZGVkQ2FsbGJhY2ssIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IGZlNDkzZjk1MWU1YTM4YTcwNTVkODdk
NDg3MzEwOWMxZDg5ODk4YzUuLjU2NzEyNTU0YjZmNjJiODYwMTMwYjY3Mzc3ZTNmNDMzNmFiYzgy
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKFNlY0tl
eVJlZiwgTlNEYXRhICosIE5TRGF0YSAqLCBBdHRlc3RhdAogCiAgICAgICAgIGF1dG8gYXR0ZXN0
YXRpb25DZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShO
VUxMLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
QmFzZTY0RW5jb2RlZFN0cmluZzpjb25maWd1cmF0aW9uLmxvY2FsLT51c2VyQ2VydGlmaWNhdGVC
YXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJz
XSkuZ2V0KCkpKTsKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRl
ID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBD
RkRhdGFSZWYpYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3Ry
aW5nOmNvbmZpZ3VyYXRpb24ubG9jYWwtPmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQg
b3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0
KCkpKTsKLSAgICAgICAgY2FsbGJhY2soW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogKF9fYnJp
ZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3Rh
dGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpLCBuaWxdLCBOVUxMKTsKKyAgICAgICAgY2Fs
bGJhY2soQFsgKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksIChfX2Jy
aWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpXSwgTlVMTCk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDUyOWFjNDM0NjdiMWI2ZThjZmZiMTE0ZWMx
YTA3ODg1MDM3MjZhYjAuLmFmZmFhYzU2MDI2YmIxMjdkYmExZmVkZjZlNTNmY2ZkMGQyNzdmZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTE5LDggKzExOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Zp
c2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlv
blJlY3QuaD4gLy8gRklYTUU6IFdLMiBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0IGhlYWRlcnMh
Ci0jaW1wb3J0IDxwYWwvaW9zL01hbmFnZWRDb25maWd1cmF0aW9uU29mdExpbmsuaD4KKyNpbXBv
cnQgPFdlYktpdC9XZWJTZWxlY3Rpb25SZWN0Lmg+IC8vIEZJWE1FOiBXZWJLaXQgc2hvdWxkIG5v
dCBpbmNsdWRlIFdlYktpdExlZ2FjeSBoZWFkZXJzIQogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVT
UEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KQEAgLTEz
NSw2ICsxMzQsNyBAQAogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYv
V2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTY4LDYgKzE2OCw4IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2VuZGlmCiAKKyNpbXBv
cnQgPHBhbC9pb3MvTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0TGluay5oPgorCiAjaWYgSEFWRShM
SU5LX1BSRVZJRVcpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogc3RhdGljIE5TU3RyaW5nICogY29u
c3Qgd2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVuY2VLZXkgPSBAIldlYktpdFNob3dMaW5r
UHJldmlld3MiOwogI2VuZGlmCkBAIC0zMTg1LDcgKzMxODcsNyBAQCAtIChOU0RpY3Rpb25hcnkg
Kil0ZXh0U3R5bGluZ0F0UG9zaXRpb246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJl
Y3Rpb246KAogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDooaWQpZm9udC5nZXQoKSBmb3JLZXk6
TlNGb250QXR0cmlidXRlTmFtZV07CiAgICAgCiAgICAgaWYgKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
ZWJLaXQ6OkF0dHJpYnV0ZVVuZGVybGluZSkKLSAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5TVW5k
ZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChO
U1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5h
bWVdOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM5ODQsMTAgKzM5ODYsNyBAQCAtICh2
b2lkKXJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25Db21tYW5kc1dpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOUwogICAgICAgICB9CiAKICAgICAgICAgc3Ryb25nU2VsZi0+X3Bh
Z2UtPnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihbY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildIChhdXRvJiByZWN0cykgewotICAgICAgICAgICAgYXV0byByZWN0c0Fz
VmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OnJlY3RzLnNpemUoKV0pOwotICAgICAgICAgICAgZm9yIChhdXRvJiBmbG9hdFJlY3QgOiByZWN0
cykKLSAgICAgICAgICAgICAgICBbcmVjdHNBc1ZhbHVlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFs
dWVXaXRoQ0dSZWN0OmZsb2F0UmVjdF1dOwotICAgICAgICAgICAgY29tcGxldGlvbihyZWN0c0Fz
VmFsdWVzLmdldCgpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0
cykuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTc0MDAsNyArNzM5OSw3IEBA
IC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5nVG9T
ZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpCiAgICAgZm9yIChOU0l0ZW1Qcm92aWRlciAqaXRlbVBy
b3ZpZGVyIGluIGFkanVzdGVkSXRlbVByb3ZpZGVycykgewogICAgICAgICBhdXRvIGl0ZW0gPSBh
ZG9wdE5TKFtbVUlEcmFnSXRlbSBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6aXRlbVByb3Zp
ZGVyXSk7CiAgICAgICAgIFtpdGVtIF9zZXRQcml2YXRlTG9jYWxDb250ZXh0OkAoc3RhZ2VkRHJh
Z1NvdXJjZS5pdGVtSWRlbnRpZmllcildOwotICAgICAgICBbZHJhZ0l0ZW1zIGFkZE9iamVjdDpp
dGVtLmF1dG9yZWxlYXNlKCldOworICAgICAgICBbZHJhZ0l0ZW1zIGFkZE9iamVjdDppdGVtLmdl
dCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gZHJhZ0l0ZW1zOwpAQCAtODQzMCw3ICs4NDI5LDYg
QEAgLSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJp
bmcgKil1c2VySW50ZXJmYWNlSXRlbQogICAgICAgICAgICAgICAgIEAiaXNJbWFnZSI6IFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlXSwKICAgICAg
ICAgICAgICAgICBAImltYWdlVVJMIjogX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkwuaXNW
YWxpZCgpID8gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFn
ZVVSTCkgOiBAIiIKICAgICAgICAgICAgIH0gfTsKLQogICAgICAgICBOU1N0cmluZyAqdXJsID0g
W19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgcHJldmlld0RhdGFdW1VJUHJldmlld0RhdGFMaW5rXTsK
ICAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRlcmZhY2VJdGVtOiBAewogICAgICAgICAgICAgQCJ1
cmwiOiB1cmwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXggMmY5MmJiNmU0YWMwYWU3NjM4MWRjZDkxNjExZDU2
Y2U5ZjI5YTZiMy4uZDhiMzAwNmI1ZDAxOTJiMDA5YzNkYWYxZTFmYjA1ZmU1YWRmODAwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxv
YWRQYW5lbC5tbQpAQCAtNjY2LDEyICs2NjYsMTIgQEAgLSAodm9pZClpbWFnZVBpY2tlckNvbnRy
b2xsZXI6KFVJSW1hZ2VQaWNrZXJDb250cm9sbGVyICopaW1hZ2VQaWNrZXIgZGlkRmluaXNoUGkK
IAogICAgIFtzZWxmIF9kaXNtaXNzRGlzcGxheUFuaW1hdGVkOllFU107CiAKLSAgICBbc2VsZiBf
cHJvY2Vzc01lZGlhSW5mb0RpY3Rpb25hcmllczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6aW5m
b10KKyAgICBbc2VsZiBfcHJvY2Vzc01lZGlhSW5mb0RpY3Rpb25hcmllczpAW2luZm9dCiAgICAg
ICAgIHN1Y2Nlc3NCbG9jazpeKE5TQXJyYXkgKnByb2Nlc3NlZFJlc3VsdHMsIE5TU3RyaW5nICpk
aXNwbGF5U3RyaW5nKSB7CiAgICAgICAgICAgICBBU1NFUlQoW3Byb2Nlc3NlZFJlc3VsdHMgY291
bnRdID09IDEpOwogICAgICAgICAgICAgX1dLRmlsZVVwbG9hZEl0ZW0gKnJlc3VsdCA9IFtwcm9j
ZXNzZWRSZXN1bHRzIG9iamVjdEF0SW5kZXg6MF07CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgIFtzZWxmIF9j
aG9vc2VGaWxlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cmVzdWx0LmZpbGVVUkxdIGRpc3Bs
YXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZV07Cisg
ICAgICAgICAgICAgICAgW3NlbGYgX2Nob29zZUZpbGVzOkBbcmVzdWx0LmZpbGVVUkxdIGRpc3Bs
YXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZV07CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBmYWlsdXJlQmxvY2s6XnsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tl
ci5tbQppbmRleCBmZTM5ZjgzN2JmNDQ0ZWVkM2E5ODBhYjk3ZmFmNDQ2M2I3MDg3MGRkLi5jZTY3
ODQyYzdmZTAzYjUxYzY2MGExODk2NTIyMzcyOWUxNTVmZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yUGlja2VyLm1tCkBAIC0x
MTIsOCArMTEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBjb2xvck1hdHJpeDooTlNBcnJheTxOU0FycmF5PFVJQ29sb3IKICAgICAgICAgICAgIFtidXR0
b25zIGFkZE9iamVjdDpidXR0b25dOwogICAgICAgICAgICAgW3NlbGYgYWRkU3VidmlldzpidXR0
b25dOwogICAgICAgICB9Ci0gICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBjb2xvckJ1dHRvbnNS
b3cgPSBidXR0b25zOwotICAgICAgICBbY29sb3JCdXR0b25zIGFkZE9iamVjdDpjb2xvckJ1dHRv
bnNSb3cuZ2V0KCldOworICAgICAgICBbY29sb3JCdXR0b25zIGFkZE9iamVjdDpidXR0b25zXTsK
ICAgICB9CiAgICAgX2NvbG9yQnV0dG9ucyA9IGNvbG9yQnV0dG9uczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggZmU0ZTg0NjY5ODBi
NzM1OGEwOWNhMTE5ZDJjMjM3MGNmNWQ5MTVmZC4uNzIzYjMyNmY0ZjRmMjg4ZGVmNGIwMzdjNjQ3
MjY1ZDVkOWI5OGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Nv
cnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvQ29ycmVj
dGlvblBhbmVsLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlv
bkluZGljYXRvclR5cGUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRl
eHRUeXBlKQogewpAQCAtNjUsMjggKzY2LDI1IEBAIENvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rp
b25QYW5lbCgpCiB2b2lkIENvcnJlY3Rpb25QYW5lbDo6c2hvdyhOU1ZpZXcgKnZpZXcsIFdlYlZp
ZXdJbXBsJiB3ZWJWaWV3SW1wbCwgQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewogICAgIGRpc21pc3NJbnRl
cm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCwgZmFsc2UpOwot
ICAgIAorCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBOU0ludGVnZXIg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSB3ZWJWaWV3SW1wbC5zcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpOwogCi0gICAgTlNTdHJpbmcqIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxh
Y2VkU3RyaW5nOwotICAgIE5TU3RyaW5nKiByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSBy
ZXBsYWNlbWVudFN0cmluZzsKKyAgICBOU1N0cmluZyAqcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5n
ID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0
cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworCiAgICAgbV92aWV3ID0gdmlldzsKICAgICBtX3Nw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAgICAgTlND
b3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBpbmRpY2F0b3JUeXBlID0gY29ycmVjdGlvbkluZGljYXRv
clR5cGUodHlwZSk7CiAgICAgCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5n
cyA9IDA7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5z
aXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJp
bmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKLSAgICB9CisgICAgUmV0YWlu
UHRyPE5TQXJyYXk+IGFsdGVybmF0aXZlU3RyaW5nczsKKyAgICBpZiAoIWFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0g
Y3JlYXRlTlNBcnJheShhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAKICAgICBOU1Nw
ZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl07Ci0gICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpp
bmRpY2F0b3JUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFs
dGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgIFtzcGVsbENoZWNrZXIgc2hvd0Nv
cnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxh
Y2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJp
bmdzLmdldCgpIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmll
dzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJp
bmcpIHsKICAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudCh3ZWJWaWV3SW1wbCwgYWNj
ZXB0ZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdB
c05TU3RyaW5nLCBpbmRpY2F0b3JUeXBlKTsKICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCBkNzg2ZjExZDM5M2M3ZTRiNzg4
YmNlYzM2N2VhZTA5NmY3Zjc1MmUxLi4wMTYxOWE1ODNhOWU2ODZkMDQ2NmEyNTAyZWI1MmE3Yzlm
NTBlOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFj
Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tl
clNQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogQGludGVyZmFjZSBOU1NwZWxsQ2hlY2tlciAoV2ViTlNT
cGVsbENoZWNrZXJEZXRhaWxzKQpAQCAtNDM1LDEzICs0MzYsMTAgQEAgdm9pZCBUZXh0Q2hlY2tl
cjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBj
b25zdCBTdHIKIAogdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwg
Y29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBhdXRvIGNvcnJlY3Rp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChh
dXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykKLSAgICAgICAgW2NvcnJlY3Rpb25z
IGFkZE9iamVjdDpndWVzc107CiAgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWwgPSBAewogICAgICAg
ICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwu
cmFuZ2VdLAogICAgICAgICBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24gOiBncmFtbWFyRGV0YWls
LnVzZXJEZXNjcmlwdGlvbiwKLSAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0
aW9ucy5nZXQoKSwKKyAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjcmVhdGVOU0FycmF5
KGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykuZ2V0KCksCiAgICAgfTsKICAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3Ry
aW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRldGFpbF07CiB9CkBAIC00NTksMTAgKzQ1Nyw3
IEBAIHZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKFNwZWxsRG9jdW1lbnRUYWcg
c3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyCiAgICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5n
OmNvbnRleHQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNU
ZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkgb3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVu
dFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZyBvcnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29yZENv
dW50OjBdOwogICAgICAgICBsYW5ndWFnZSA9IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJhbmdl
Ok5TTWFrZVJhbmdlKDAsIGNvbnRleHQubGVuZ3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0aG9n
cmFwaHk6b3J0aG9ncmFwaHldOwogICAgIH0KLSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkgPSBb
Y2hlY2tlciBndWVzc2VzRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkp
IGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpz
cGVsbERvY3VtZW50VGFnXTsKLQotICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIHN0cmluZ3NB
cnJheSkKLSAgICAgICAgZ3Vlc3Nlcy5hcHBlbmQoZ3Vlc3MpOworICAgIGd1ZXNzZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgw
LCB3b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZ10pOwogfQogCiB2b2lkIFRleHRDaGVja2Vy
OjpsZWFybldvcmQoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4IDAxZTQzMjE2
MGRmMjljMTNiMjRlMzBhZGFmZTFkM2ZmNWE0OTFjNjEuLjU5MDRjNDI3OWY4MWY5YmMzOWVmZmJk
ZWEwZjY2ODg4NjE2ZGQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQ
cmludGluZ1ZpZXcubW0KQEAgLTE0NSw4ICsxNDUsOCBAQCAtICh2b2lkKV9hZGp1c3RQcmludGlu
Z01hcmdpbnNGb3JIZWFkZXJBbmRGb290ZXIKICAgICAgICAgQVNTRVJUKCFbaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldKTsK
ICAgICAgICAgb3JpZ2luYWxUb3BNYXJnaW4gPSBbaW5mbyB0b3BNYXJnaW5dOwogICAgICAgICBv
cmlnaW5hbEJvdHRvbU1hcmdpbiA9IFtpbmZvIGJvdHRvbU1hcmdpbl07Ci0gICAgICAgIFtpbmZv
RGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6b3JpZ2luYWxU
b3BNYXJnaW5dIGZvcktleTpXZWJLaXRPcmlnaW5hbFRvcFByaW50aW5nTWFyZ2luS2V5XTsKLSAg
ICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTpvcmlnaW5hbEJvdHRvbU1hcmdpbl0gZm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRp
bmdNYXJnaW5LZXldOworICAgICAgICBbaW5mb0RpY3Rpb25hcnkgc2V0T2JqZWN0OkAob3JpZ2lu
YWxUb3BNYXJnaW4pIGZvcktleTpXZWJLaXRPcmlnaW5hbFRvcFByaW50aW5nTWFyZ2luS2V5XTsK
KyAgICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9iamVjdDpAKG9yaWdpbmFsQm90dG9tTWFyZ2lu
KSBmb3JLZXk6V2ViS2l0T3JpZ2luYWxCb3R0b21QcmludGluZ01hcmdpbktleV07CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUKFtvcmlnaW5hbFRvcE1hcmdpbk51bWJlciBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKTsKICAgICAgICAgQVNTRVJUKFtbaW5mb0RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggMzk2OGVkYTYzZGVkZTI5MDVlYzJm
NzBlNTU5YzFiOGRhOTQ0MDI4ZS4uMzZhYmRmZDI0NjVlNGRmZDUxMDI0M2RmN2Y5YTc4YzEwYjkx
YTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRl
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVy
Q2xpZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNp
bXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogLy8gRklYTUU6IEltcGxlbWVudCBzY3JvbGxGaW5k
TWF0Y2hUb1Zpc2libGUuCiAvLyBGSVhNRTogVGhlIE5TVGV4dEZpbmRlciBvdmVybGF5IGRvZXNu
J3QgbW92ZSB3aXRoIHNjcm9sbGluZzsgd2Ugc2hvdWxkIGhhdmUgYSBtb2RlIHdoZXJlIHdlIG1h
bmFnZSB0aGUgb3ZlcmxheS4KQEAgLTI3MCwzMSArMjcxLDIxIEBAIC0gKHZvaWQpc2Nyb2xsRmlu
ZE1hdGNoVG9WaXNpYmxlOihpZCA8TlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5k
TWF0Y2g+CiAKICNwcmFnbWEgbWFyayAtIEZpbmRNYXRjaGVzQ2xpZW50CiAKLXN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gYXJyYXlGcm9tUmVjdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiBtYXRjaFJlY3RzKQotewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNNYXRj
aFJlY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
Om1hdGNoUmVjdHMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiByZWN0IDogbWF0Y2hSZWN0cykK
LSAgICAgICAgW25zTWF0Y2hSZWN0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpy
ZWN0XV07Ci0gICAgcmV0dXJuIG5zTWF0Y2hSZWN0czsKLX0KLQogLSAodm9pZClkaWRGaW5kU3Ry
aW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
Pj4mKXJlY3RzRm9yTWF0Y2hlcyBkaWRXcmFwQXJvdW5kOihCT09MKWRpZFdyYXBBcm91bmQKIHsK
ICAgICBpZiAoX2ZpbmRSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gcmVwbHlDYWxsYmFjayA9IF9maW5kUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0
KCk7Ci0gICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IHJlY3RzRm9yTWF0Y2hlcy5zaXplKCk7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtYXRjaE9iamVjdHMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWF0Y2hDb3VudF0pOworICAgIGF1
dG8gbWF0Y2hDb3VudCA9IHJlY3RzRm9yTWF0Y2hlcy5zaXplKCk7CisgICAgYXV0byBtYXRjaE9i
amVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
bWF0Y2hDb3VudF0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaENvdW50OyBp
KyspIHsKICAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IG5zTWF0Y2hSZWN0czsKLQogICAgICAg
ICBpZiAoX3VzZVBsYXRmb3JtRmluZFVJKQotICAgICAgICAgICAgbnNNYXRjaFJlY3RzID0gYXJy
YXlGcm9tUmVjdHMocmVjdHNGb3JNYXRjaGVzW2ldKTsKKyAgICAgICAgICAgIG5zTWF0Y2hSZWN0
cyA9IGNyZWF0ZU5TQXJyYXkocmVjdHNGb3JNYXRjaGVzW2ldKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbnNNYXRjaFJlY3RzID0gQFtdOwotICAgICAgICBSZXRhaW5QdHI8V0tUZXh0Rmlu
ZGVyTWF0Y2g+IG1hdGNoID0gYWRvcHROUyhbW1dLVGV4dEZpbmRlck1hdGNoIGFsbG9jXSBpbml0
V2l0aENsaWVudDpzZWxmIHZpZXc6X3ZpZXcgaW5kZXg6aSByZWN0czpuc01hdGNoUmVjdHMuZ2V0
KCldKTsKLSAgICAgICAgW21hdGNoT2JqZWN0cyBhZGRPYmplY3Q6bWF0Y2guZ2V0KCldOworICAg
ICAgICBbbWF0Y2hPYmplY3RzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tUZXh0RmluZGVyTWF0Y2gg
YWxsb2NdIGluaXRXaXRoQ2xpZW50OnNlbGYgdmlldzpfdmlldyBpbmRleDppIHJlY3RzOm5zTWF0
Y2hSZWN0cy5nZXQoKV0pLmdldCgpXTsKICAgICB9CiAKICAgICByZXBseUNhbGxiYWNrKG1hdGNo
T2JqZWN0cy5nZXQoKSwgZGlkV3JhcEFyb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1h
Yy5tbQppbmRleCAzYmQ5NDFjNzI4OTcxNzBlY2MxNTdiOWZlYjU3ZGE1MzcyOGU4MTMzLi43ZDIw
MjQ0MzBlNjVmMTJmNzMyOTc3MTY3NzFkNmE2NmIxYTk2ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWMubW0KQEAgLTM3OSwxMCArMzc5LDEwIEBAIC0gKHZvaWQpdXBkYXRlV2l0aElu
Zm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9y
bWF0CiAKIC0gKHZvaWQpbm90aWZ5QWNjZXNzaWJpbGl0eUNsaWVudHM6KE5TU3RyaW5nICopaW5m
bwogewotICAgIE5TRGljdGlvbmFyeTxOU0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Vc2VySW5m
b0tleSwgaWQ+ICp1c2VySW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UHJpb3JpdHlLZXksIEAoTlNBY2Nlc3Np
YmlsaXR5UHJpb3JpdHlIaWdoKSwKLSAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QW5ub3VuY2VtZW50
S2V5LCBpbmZvLCBuaWxdOwotICAgIE5TQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb25XaXRo
VXNlckluZm8oTlNBcHAsIE5TQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudFJlcXVlc3RlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8pOworICAgIE5TQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb25X
aXRoVXNlckluZm8oTlNBcHAsIE5TQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudFJlcXVlc3RlZE5v
dGlmaWNhdGlvbiwgQHsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UHJpb3JpdHlLZXk6IEAoTlNB
Y2Nlc3NpYmlsaXR5UHJpb3JpdHlIaWdoKSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QW5ub3Vu
Y2VtZW50S2V5OiBpbmZvLAorICAgIH0pOwogfQogCiAtICh2b2lkKW1vdmVTZWxlY3Rpb25CeURp
cmVjdGlvbjooY29uc3QgU3RyaW5nJilkaXJlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGQyZDkwZTMzZjIyMWNkZjY0MDYxMWU2
NDlhNWFhMTRmYzE4MTJkYTkuLjgzNDMwN2M2OTVlODViYmUzMjUwNWY4NTQ5YmE2MThlN2YyMjNk
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWFyY2hXaXRoU3BvdGxp
Z2h0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJQYWdlUHJveHk6OnNlYXJjaFRoZVdl
Yihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQg
PSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpA
W2xlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9h
cmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBlOmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
OwogICAgIAogICAgIE5TUGVyZm9ybVNlcnZpY2UoQCJTZWFyY2ggV2l0aCAlV2ViU2VhcmNoUHJv
dmlkZXJAIiwgcGFzdGVib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaAppbmRl
eCAxNTFiOWJjZTA4NjU4NzdhYjNiNjhiN2ExMWEwYWNjMGVlMDJlMWQ1Li43YTNkZTgzYjJiYWIy
ZmI0NjkxMDc3MWE0NmRlOTJiZjY0NjM2ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJu
YWxzLmgKQEAgLTEwOSw4ICsxMDksNCBAQCBXS0RPTVRleHQgKnRvV0tET01UZXh0KFdlYkNvcmU6
OlRleHQqKTsKIFdlYkNvcmU6OlJhbmdlKiB0b1dlYkNvcmVSYW5nZShXS0RPTVJhbmdlICopOwog
V0tET01SYW5nZSAqdG9XS0RPTVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7CiAKLS8vIC0tIEhlbHBl
cnMgLS0KLQotTlNBcnJheSAqdG9OU0FycmF5KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5h
bHMubW0KaW5kZXggZjQxZTk0YzJkYTVmZmRhYzk2OWUxMjY1NjY4YTJhM2I4N2EzMDA2My4uNjNj
ZGQyYmMyYmM0Yjc5OGI1ODc3MGI0MzFmM2ExNjRkOWMwZGFjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01JbnRlcm5hbHMubW0KQEAgLTE2MSwxMyArMTYxLDQgQEAgc3RhdGljIFdLRE9NVHlwZSB0
b1dLRE9NVHlwZShXZWJDb3JlVHlwZSBpbXBsLCBET01DYWNoZTxXZWJDb3JlVHlwZSwgV0tET01U
eXBlPiYKICAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwogfQogCi1OU0FycmF5ICp0
b05TQXJyYXkoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cykKLXsKLSAgICBz
aXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUg
dmFsdWVXaXRoUmVjdDpyZWN0c1tpXV1dOwotICAgIHJldHVybiBhcnJheTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0KaW5kZXggZjljNTcxZGVlYjkz
NWNlODhiNDM3YWZhNjVkN2ZmZTc2NTNiYjE5Mi4uY2Q4MDYxZWMxYjIwM2YwMzM0NjdmNTQwYjkz
N2QwYzFiNzFiODQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQpAQCAtMzAsNiArMzAsNyBA
QAogI2ltcG9ydCAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0RPTUludGVybmFscy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0RPTU5vZGUKIApAQCAtMTEyLDcgKzExMyw3
IEBAIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgX2ltcGwtPnRleHRSZWN0cyhyZWN0cyk7
Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9OU0FycmF5KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRl
TlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApAQCAtMTIxLDggKzEyMiw3
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTU5vZGUgKFdLUHJpdmF0ZSkKIAogLSAoV0tCdW5kbGVO
b2RlSGFuZGxlUmVmKV9jb3B5QnVuZGxlTm9kZUhhbmRsZVJlZgogewotICAgIGF1dG8gbm9kZUhh
bmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1w
bC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVha1JlZigpKTsKKyAgICBy
ZXR1cm4gdG9BUEkoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRl
KF9pbXBsLmdldCgpKS5sZWFrUmVmKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5n
ZS5tbQppbmRleCAyMmJlNDYyNmRhMzJjNjM1NTlkMTBhMDI4ZmFlYWYyZDJhNjVjNzZmLi5hYzZm
ZmIxZTk3OGM4Mzg4MTJhOGIxMWIzNzIyNDkxOGVlZTI4ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
UmFuZ2UubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldLRE9NSW50ZXJuYWxzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0
cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlv
biBXS0RPTVJhbmdlCiAKQEAgLTEzMCw3ICsxMzEsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3Rz
CiAgICAgX2ltcGwtPm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgX2lt
cGwtPmFic29sdXRlVGV4dFJlY3RzKHJlY3RzKTsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b05TQXJy
YXkocmVjdHMpOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChXS0RPTVJhbmdlICopcmFuZ2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlD
aGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJhY3RlcnMgaW5EaXJlY3Rpb246KFdLRE9NUmFuZ2VE
aXJlY3Rpb24pZGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQppbmRleCAw
ZTg5NGZjNDczMWM0Nzg5OGRkZDQ2YTAxMjk1NzdlZGE4NTc0NGVkLi5hNmRhOTE5YTIyZjc1ZDk3
M2E1OTdhYzk4MTEzNzhhYzIyY2RmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMu
bW0KQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJh
bWV0ZXIoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZQogICAgIH0KIAog
ICAgIGlmICghbV9idW5kbGVQYXJhbWV0ZXJzICYmIHBhcmFtZXRlcikKLSAgICAgICAgbV9idW5k
bGVQYXJhbWV0ZXJzID0gYWRvcHROUyhbW1dLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMgYWxs
b2NdIGluaXRXaXRoRGljdGlvbmFyeTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnldXSk7CisgICAg
ICAgIG1fYnVuZGxlUGFyYW1ldGVycyA9IGFkb3B0TlMoW1tXS1dlYlByb2Nlc3NCdW5kbGVQYXJh
bWV0ZXJzIGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6QHsgfV0pOwogCiAgICAgW21fYnVuZGxl
UGFyYW1ldGVycyBzZXRQYXJhbWV0ZXI6cGFyYW1ldGVyIGZvcktleTprZXldOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdp
blByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL1BsdWdpblByb3h5TWFjLm1tCmluZGV4IDU2NjFlZjk2ZmExZmU0NDhlZDI1YTY1ZjNmNGVh
YWUwMTU2M2JkOTIuLjM1MTNiMDM4NDRlYzAwMDAxY2Q4ZjQ3NWM2NDZiMDZlOTAwNGUzNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9Q
bHVnaW5Qcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZv
aWQgbWFrZVJlbmRlckxheWVyKENBTGF5ZXIgKnBsdWdpbkxheWVyLCB1aW50MzJfdCBsYXllckhv
c3RpbmdDb250ZXh0SUQKICAgICBDQUxheWVyICpyZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJf
cmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmxheWVySG9zdGluZ0NvbnRleHRJRF07CiAgICAgW3Jl
bmRlckxheWVyIHNldEZyYW1lOltwbHVnaW5MYXllciBib3VuZHNdXTsKICAgICBbcmVuZGVyTGF5
ZXIgc2V0QXV0b3Jlc2l6aW5nTWFzazprQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVp
Z2h0U2l6YWJsZV07Ci0gICAgW3BsdWdpbkxheWVyIHNldFN1YmxheWVyczpbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6cmVuZGVyTGF5ZXJdXTsKKyAgICBbcGx1Z2luTGF5ZXIgc2V0U3VibGF5ZXJz
OkBbcmVuZGVyTGF5ZXJdXTsKIH0KIAogUGxhdGZvcm1MYXllciogUGx1Z2luUHJveHk6OnBsdWdp
bkxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCmluZGV4IGJiNzcwYTM3ZDc5Mzg4YmJhNTZlMDM4NGQ0MDM5YjQ0ZDUzNDc0YjMu
LjJlMDI2MDA1YjNlNWRiNGVjMzdmZGEyMTg0M2M4Nzg1OWQxYTI1MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiAr
OTQsNyBAQAogI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUu
aD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JD
b2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgSEFWRShJTkNS
RU1FTlRBTF9QREZfQVBJUykKQEAgLTI0MDAsMTAgKzI0MDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6
b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpCiAKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5T
QXJyYXkgKnR5cGVzKQogewotICAgIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlczsKLQot
ICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gdHlwZXMpCi0gICAgICAgIHBhc3RlYm9hcmRUeXBl
cy5hcHBlbmQodHlwZSk7CisgICAgYXV0byBwYXN0ZWJvYXJkVHlwZXMgPSBtYWtlVmVjdG9yPFN0
cmluZz4odHlwZXMpOwogCiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKICAgICBhdXRvJiB3
ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcwZTUyODU2NDZm
ZjhkZjU2YTlkMjUyMTc0OGJmZDVhZjhjYzRjNTEuLjQyN2Q0NDJhNjMyOTViYmZhOTRkMjk1OWZm
YjQ3ZjRkZWU4MjgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lkIFdlYlBhZ2U6
OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiAKIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKIHsKLSAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
OldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5p
bCB1c2VySW5mbzpAe0AiaXNTdXNwZW5kZWRVbmRlckxvY2siOiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6aXNTdXNwZW5kZWRVbmRlckxvY2tdfV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3Vz
cGVuZGVkVW5kZXJMb2NrIjogQChpc1N1c3BlbmRlZFVuZGVyTG9jayl9XTsKIAogICAgIG1faXNT
dXNwZW5kZWRVbmRlckxvY2sgPSBpc1N1c3BlbmRlZFVuZGVyTG9jazsKICAgICBmcmVlemVMYXll
clRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpCYWNrZ3JvdW5kQXBwbGljYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDljMDg4N2U2OTNlMjg4
ZWM0ZTdhM2UwMzA3ZDZkYzcxOTk5MmQ4ZDQuLjAyOGE4OGMxNjc0OTA3OTBmNGFhZjY0ZTY1YWM3
YTA1MDZiNjNlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
QEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpz
dXNwZW5kUGFpbnRpbmcoKQogCiAgICAgLy8gVGhpcyBpcyBhIHNpZ25hbCB0byBtZWRpYSBmcmFt
ZXdvcmtzOyBpdCBkb2VzIG5vdCBhY3RpdmVseSBwYXVzZSBhbnl0aGluZy4KICAgICBbbV9ob3N0
aW5nTGF5ZXIgc2V0VmFsdWU6QFlFUyBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOwot
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVz
ZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIu
Z2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUGF1c2VO
b3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86QHsgQCJsYXllciI6IG1faG9zdGluZ0xh
eWVyLmdldCgpIH1dOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpy
ZXN1bWVQYWludGluZygpCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQogICAgIG1faXNQYWludGluZ1N1c3BlbmRl
ZCA9IGZhbHNlOwogCiAgICAgW21faG9zdGluZ0xheWVyIHNldFZhbHVlOkBOTyBmb3JLZXk6QCJO
U0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5v
dGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOworICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6
QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5m
bzpAeyBAImxheWVyIjogbV9ob3N0aW5nTGF5ZXIuZ2V0KCkgfV07CiB9CiAKIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9h
dFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbQppbmRleCAwOGZlN2ZkMTRhZjIxNDIzNjIzNjc4OTk0Mjk2NmVkOWM0ZWFj
YTg2Li5hMWQ2ZTMwZjQ1MTM1NDNhNWEzODZlODY1NmJmNThkZDA1Y2RkYzc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC00MSw3ICs0MSw2IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRpb24gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQppbmRl
eCBmMGNlY2EyMDY4MGM5YmFjODQxNzIzNWY3NTRhNDRlZWMyOWM2Y2FmLi5hMDlmZjYxMzdhOThi
NDAzYTUwNjY5OTUzODY2ZDczYzBmNjYyMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdE1hYy5tbQpAQCAtNDcsNyArNDcsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KIAogbmFtZXNwYWNlIGF4ID0gV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eTsKIApAQCAtMTQyLDE2ICsxNDEsMTYgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QWN0aW9u
TmFtZXMKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKWFj
Y2Vzc2liaWxpdHlDaGlsZHJlbgogewogICAgIGlkIHdyYXBwZXIgPSBbc2VsZiBhY2Nlc3NpYmls
aXR5Um9vdE9iamVjdFdyYXBwZXJdOwogICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICAKLSAgICByZXR1cm4g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OndyYXBwZXJdOworICAgIHJldHVybiBAW3dyYXBwZXJd
OwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMjA0
ZDQ1YWIzNGY4ZWI0ZmY2NmUxNTlmZmMyYzEwMWM4ODkzMWIzNy4uNGI0NTg0NzA4ODIwZWQ1NTFj
MzVlODk1NzcyNjhiZjNlMjc1YTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC04OCw2ICs4OCw3IEBACiAjaW1wb3J0IDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CkBAIC02
NjQsMTIgKzY2NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoY29uc3Qg
U3RyaW5nJiBvdmVycmlkZURpc3BsYXlOYW1lKQogdm9pZCBXZWJQcm9jZXNzOjpnZXRBY3RpdmVQ
YWdlc09yaWdpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8gYWN0aXZlT3JpZ2luc0FzTlNTdHJpbmdzID0gYWN0aXZlUGFnZXNPcmlnaW5zKG1fcGFnZU1h
cCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWN0aXZlT3JpZ2luczsKLSAgICBhY3RpdmVPcmlnaW5z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW2FjdGl2ZU9yaWdpbnNBc05TU3RyaW5ncyBjb3VudF0p
OwotICAgIGZvciAoTlNTdHJpbmcqIGFjdGl2ZU9yaWdpbiBpbiBhY3RpdmVPcmlnaW5zQXNOU1N0
cmluZ3MuZ2V0KCkpCi0gICAgICAgIGFjdGl2ZU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKGFjdGl2
ZU9yaWdpbik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhY3RpdmVPcmlnaW5zKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVZlY3RvcjxTdHJpbmc+KGFjdGl2ZVBhZ2VzT3Jp
Z2lucyhtX3BhZ2VNYXApLmdldCgpKSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQppbmRleCAzM2U1ZWY1MWNhMjM0MGFl
MTY0MDRkY2M0YWYyZjQwOTU3OGJiMWU4Li44NzU0M2IwMDQ0NDdlM2Q4YzU0OWFkMTg3OGRjNGIz
ODRhYjQ2NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC02Myw2ICs2Myw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1wb3J0IDx3dGYvSGFz
aE1hcC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKIE5TU3RyaW5nICogY29uc3QgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFs
bG93TXVsdGlwbGVGaWxlc0tleSA9IEAiV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFsbG93TXVs
dGlwbGVGaWxlc0tleSI7CiBOU1N0cmluZyAqIGNvbnN0IFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRp
b25NZWRpYUNhcHR1cmVUeXBlS2V5ID0gQCJXZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVkaWFD
YXB0dXJlVHlwZUtleSI7CkBAIC0xMzQsMTcgKzEzNSwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dElPUzo6cnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGNob29zZXIpCiAgICAgQk9P
TCBhbGxvd011bHRpcGxlRmlsZXMgPSBzZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOwogICAg
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2hvb3NlcjpjaG9vc2VyXTsKIAotICAgIE5TTXV0
YWJsZUFycmF5ICptaW1lVHlwZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
c2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiB0eXBlIDog
c2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzKQotICAgICAgICBbbWltZVR5cGVzIGFkZE9iamVjdDp0
eXBlXTsKLQogICAgIFdlYk1lZGlhQ2FwdHVyZVR5cGUgY2FwdHVyZVR5cGUgPSBXZWJNZWRpYUNh
cHR1cmVUeXBlTm9uZTsKICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKICAgICBjYXB0dXJlVHlw
ZSA9IHdlYk1lZGlhQ2FwdHVyZVR5cGUoc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZSk7CiAjZW5k
aWYKICAgICBOU0RpY3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24gPSBAewogICAgICAgICBXZWJPcGVu
UGFuZWxDb25maWd1cmF0aW9uQWxsb3dNdWx0aXBsZUZpbGVzS2V5OiBAKGFsbG93TXVsdGlwbGVG
aWxlcyksCi0gICAgICAgIFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25NaW1lVHlwZXNLZXk6IG1p
bWVUeXBlcywKKyAgICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbk1pbWVUeXBlc0tleTog
Y3JlYXRlTlNBcnJheShzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpLmdldCgpLAogICAgICAgICBX
ZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVkaWFDYXB0dXJlVHlwZUtleTogQChjYXB0dXJlVHlw
ZSkKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNjkxZjg1MTkzOGY4MzU3
ZDc3MGQ4YzRmODRlNWQyZTZjM2VmOThlZC4uNTQzMjVhZDgwYzNhM2E0ODdmOTBjMmYxOTE2Nzg2
YWY4ZGI5ZjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtMjMsMTEgKzIzLDEyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0KLSNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAi
V2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaCIKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5o
PgpAQCAtNDEsMTIgKzQyLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEZsYWdzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRl
cmF0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Zpc2libGVVbml0cy5oPgotCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgot
I2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00MTgsMTEgKzQxNSw3IEBA
IC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRp
dmVzOihOU0FycmF5ICoqKWFsdGVybmF0CiAgICAgYXV0byYgZG9jdW1lbnQgPSBub2RlLT5kb2N1
bWVudCgpOwogICAgIGZvciAoYXV0byBtYXJrZXIgOiBkb2N1bWVudC5tYXJrZXJzKCkubWFya2Vy
c0Zvcigqbm9kZSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXMpKSB7CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1h
cmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0gICAgICAgICAgICBhdXRvJiBtYXJrZXJB
bHRlcm5hdGl2ZXMgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpOwot
ICAgICAgICAgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTptYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpXTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgYWx0
ZXJuYXRpdmUgOiBtYXJrZXJBbHRlcm5hdGl2ZXMpCi0gICAgICAgICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDphbHRlcm5hdGl2ZV07Ci0gICAgICAgICAgICAqYWx0ZXJuYXRpdmVzID0gYXJyYXk7
CisgICAgICAgICAgICAqYWx0ZXJuYXRpdmVzID0gY3JlYXRlTlNBcnJheShXVEY6OmdldDxWZWN0
b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICAgICAg
cmV0dXJuIGtpdChSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpLnB0cigpKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2libGVQb3NpdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oCmluZGV4IGQyOWYxNDEzNDI4
NDkzYTVmMzZiNGIwMDEyODdiNDhjZmQyNjk3NjQuLjc2NWM1OWQ0MzRmOGE1Zjc0Y2YwMTI5MGUw
M2U4MWYyZDIyYmI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaApA
QCAtMjMsOCArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5oIgorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKKyNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9W
aXNpYmxlUG9zaXRpb24uaD4KIAogQGludGVyZmFjZSBXZWJWaXNpYmxlUG9zaXRpb24gKEludGVy
bmFsKQpAQCAtMzMsMyArMzQsNSBAQAogLSAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uKV92aXNp
YmxlUG9zaXRpb247CiAKIEBlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggZjk4MmJkMTBhYzhlNWJkOGVmYTk1
MjQ1NDE2YmYxYTFhODVlMjkyNi4uYmU1ZDY0N2ZkZGJiMGJjY2VjNTMxN2MyNzc5MTU4NjcxMjYz
OGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d0lPUy5tbQpAQCAtNzUsMTAgKzc1LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJQREZWaWV3IHsK
IAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogewotICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJldHVybiBAWwogICAgICAgICBAInRleHQvcGRmIiwK
ICAgICAgICAgQCJhcHBsaWNhdGlvbi9wZGYiLAotICAgICAgICBuaWxdOworICAgIF07CiB9CiAK
ICsgKENHQ29sb3JSZWYpc2hhZG93Q29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmlu
ZGV4IDhiN2JhNWNhYmM4MWQ3OGI2OGFhMjRiZDVlZmYyNWFkMjc4YjJiYTUuLjllMTI4OTZkNzdm
ZTA4YmU3ZjBiNjA2ZGMxMWE3ZmExNmU0NzZmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TS5tbQpAQCAtNTgsMTAgKzU4LDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0
Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RvdWNoLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
TWFwLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dBS0FwcEtpdFN0dWJzLmg+CkBAIC0xNzks
MTUgKzE4MSw2IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnLCBDbGFzcyBkZWZhdWx0Q2xhc3MpCiAgICAgcmV0dXJuIG9iamNDbGFzczsKIH0KIAot
c3RhdGljIE5TQXJyYXkgKmtpdChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzKQotewotICAg
IHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OnJlY3RzW2ldXV07Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIFdLUXVhZCB3a1F1YWRGcm9tRmxvYXRRdWFk
KGNvbnN0IEZsb2F0UXVhZCYgaW5RdWFkKQpAQCAtNTE0LDcgKzUwNyw3IEBAIC0gKE5TQXJyYXkg
Kil0ZXh0UmVjdHMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gcmVjdHM7CiAgICAgbm9kZS50ZXh0UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBraXQo
cmVjdHMpOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwog
fQogCiBAZW5kCkBAIC02MzEsMTIgKzYyNCwxMSBAQCAtIChDR0ltYWdlUmVmKXJlbmRlcmVkSW1h
Z2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0CiAKIC0gKE5TQXJyYXkgKil0
ZXh0UmVjdHMKIHsKLSAgICAvLyBGSVhNRTogVGhlIGNhbGwgdG8gdXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmU6OlJhbmdlLgog
ICAgIGF1dG8mIHJhbmdlID0gKmNvcmUoc2VsZik7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IHJlY3RzOwogICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICByYW5nZS5hYnNvbHV0ZVRleHRSZWN0cyhyZWN0cyk7
Ci0gICAgcmV0dXJuIGtpdChyZWN0cyk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQppbmRleCBiNTAz
MGQwZWU0Njk2MjVkOTMwMWY1MTcxYTA0ZDdiZWUxYzZmN2M2Li5jOGJlNTUxYjg1MGJjZTE3MjNh
MmYxMTRlMmRlZTZjZTZkZDI5NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBOT19SRVRV
Uk4gdm9pZCByYWlzZURPTUVycm9yRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMp
CiAgICAgZWxzZQogICAgICAgICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZv
cm1hdDpAIioqKiAlQCAlZCIsIERPTUV4Y2VwdGlvbiwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZV07
CiAKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6ZGVzY3JpcHRpb24u
bGVnYWN5Q29kZV0sIERPTUV4Y2VwdGlvbiwgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6QChkZXNj
cmlwdGlvbi5sZWdhY3lDb2RlKSwgRE9NRXhjZXB0aW9uLCBuaWxdOwogCiAgICAgTlNFeGNlcHRp
b24gKmV4Y2VwdGlvbiA9IFtOU0V4Y2VwdGlvbiBleGNlcHRpb25XaXRoTmFtZTpET01FeGNlcHRp
b24gcmVhc29uOnJlYXNvbiB1c2VySW5mbzp1c2VySW5mb107CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggMThm
MDEzYTBhODc1YmQzNmU4OTU1ODY2MzRhYjdkOGIwYThiMDJiNy4uOGI5OTRlZDJkMDA3MDZkZDhl
NGVkNmIyMmI2YjNiN2U5ODQ1ZjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTE1OCwyMSArMTU4LDIxIEBA
IC0gKHZvaWQpcmVtb3ZlSXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCiAtIChOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KIHsKICAgICBCYWNrRm9yd2FyZExpc3QgKmNv
cmVCRkxpc3QgPSBjb3JlKHNlbGYpOwotICAgIAorCiAgICAgYXV0byYgaGlzdG9yeUl0ZW1zID0g
Y29yZUJGTGlzdC0+ZW50cmllcygpOwogICAgIHVuc2lnbmVkIHNpemUgPSBoaXN0b3J5SXRlbXMu
c2l6ZSgpOwogICAgIE5TTXV0YWJsZUFycmF5ICplbnRyaWVzQXJyYXkgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIFtlbnRyaWVzQXJyYXkgYWRkT2JqZWN0OltraXQo
Y29uc3RfY2FzdDxXZWJDb3JlOjpIaXN0b3J5SXRlbSo+KGhpc3RvcnlJdGVtc1tpXS5wdHIoKSkp
IGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxkcmVuOk5PXV07Ci0gICAgCi0g
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBlbnRyaWVzQXJyYXksIFdlYkJhY2tGb3J3YXJkTGlz
dERpY3Rpb25hcnlFbnRyaWVzS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2ln
bmVkSW50OmNvcmVCRkxpc3QtPmN1cnJlbnQoKV0sIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25h
cnlDdXJyZW50S2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpjb3JlQkZMaXN0
LT5jYXBhY2l0eSgpXSwgV2ViQmFja0ZvcndhcmRMaXN0RGljdGlvbmFyeUNhcGFjaXR5S2V5LAot
ICAgICAgICBuaWxdOwotICAgICAgICAKKworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9
IEB7CisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5OiBlbnRy
aWVzQXJyYXksCisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlDdXJyZW50S2V5
OiBAKGNvcmVCRkxpc3QtPmN1cnJlbnQoKSksCisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERp
Y3Rpb25hcnlDYXBhY2l0eUtleTogQChjb3JlQkZMaXN0LT5jYXBhY2l0eSgpKSwKKyAgICB9Owor
CiAgICAgW2VudHJpZXNBcnJheSByZWxlYXNlXTsKLSAgICAKKwogICAgIHJldHVybiBkaWN0aW9u
YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rvcnku
bW0KaW5kZXggYjhiYzE0NzlhMThhODQ1NDJiMGYzNjQzYWZiOGExMjJhNTE0M2NlYS4uZjI3NDcw
ZGJjMzAwY2FhMGU1Y2MwMjlhMjdiMmRhMTM5ZmFmMjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTE5LDExICsxMTksMTAgQEAgQGlt
cGxlbWVudGF0aW9uIFdlYkhpc3RvcnlQcml2YXRlCiAKICsgKHZvaWQpaW5pdGlhbGl6ZQogewot
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoK
LSAgICAgICAgICAgIEAiMTAwMCIsIEAiV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdCIsCi0gICAgICAg
ICAgICBAIjciLCBAIldlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdCIsCi0gICAgICAgICAgICBu
aWxdXTsgICAgCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVn
aXN0ZXJEZWZhdWx0czpAeworICAgICAgICBAIldlYktpdEhpc3RvcnlJdGVtTGltaXQiOiBAIjEw
MDAiLAorICAgICAgICBAIldlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdCI6IEAiNyIsCisgICAg
fV07CiB9CiAKIC0gKGlkKWluaXQKQEAgLTcyNywxMiArNzI2LDExIEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAtICh2b2lkKV9zZW5kTm90aWZpY2F0aW9uOihOU1N0cmluZyAqKW5hbWUgZW50cmllczoo
TlNBcnJheSAqKWVudHJpZXMKIHsKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOmVudHJpZXMsIFdlYkhpc3RvcnlJ
dGVtc0tleSwgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsgV2ViSGlzdG9y
eUl0ZW1zS2V5OiBlbnRyaWVzIH07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJU
aHJlYWRQb3N0Tm90aWZpY2F0aW9uKG5hbWUsIHNlbGYsIHVzZXJJbmZvKTsKICNlbHNlICAgIAot
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0KLSAgICAgICAgcG9zdE5v
dGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6c2VsZiB1c2VySW5mbzp1c2VySW5mb107CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpuYW1lIG9iamVjdDpzZWxmIHVzZXJJbmZvOnVzZXJJbmZvXTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRl
eCBhOGQzYmMyMDY4ZjJjNzYzZjk1NTdkODFjN2Y1ZGRmMGY1YjdlMDQ5Li5kZmFjYjM3ZDEwOTM4
NWNkYTYyNTcxYjNkMDNmMzViOWI5NGU2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBv
cnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM0
NiwxOSArMzQ3LDggQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5T
RGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAoW2RpY3QgX3dlYmtpdF9ib29sRm9yS2V5Omxhc3RW
aXNpdFdhc0ZhaWx1cmVLZXldKQogICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0
V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKLSAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0g
W2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1
dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKLSAg
ICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRpcmVj
dFVSTHMgY291bnRdKTsKLQotICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0
VVJMcykgewotICAgICAgICAgICAgaWYgKCFbcmVkaXJlY3RVUkwgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
cmVkaXJlY3RVUkxzVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKE5TU3RyaW5nICopcmVkaXJlY3RV
UkwpOwotICAgICAgICB9Ci0KLSAgICAgICAgX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBXVEZN
b3ZlKHJlZGlyZWN0VVJMc1ZlY3Rvcik7Ci0gICAgfQorICAgIGlmIChOU0FycmF5ICpyZWRpcmVj
dFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tleV0pCisgICAg
ICAgIF9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
bWFrZVZlY3RvcjxTdHJpbmc+KHJlZGlyZWN0VVJMcykpOwogCiAgICAgTlNBcnJheSAqY2hpbGRE
aWN0cyA9IFtkaWN0IG9iamVjdEZvcktleTpjaGlsZHJlbktleV07CiAgICAgaWYgKGNoaWxkRGlj
dHMpIHsKQEAgLTQzNiwxNiArNDI2LDkgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uCiAgICAgfQogICAgIGlmIChjb3JlSXRlbS0+bGFzdFZpc2l0V2FzRmFpbHVy
ZSgpKQogICAgICAgICBbZGljdCBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6bGFzdFZpc2l0V2FzRmFp
bHVyZUtleV07Ci0gICAgaWYgKFZlY3RvcjxTdHJpbmc+KiByZWRpcmVjdFVSTHMgPSBfcHJpdmF0
ZS0+X3JlZGlyZWN0VVJMcy5nZXQoKSkgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlZGlyZWN0
VVJMcy0+c2l6ZSgpOwotICAgICAgICBBU1NFUlQoc2l6ZSk7Ci0gICAgICAgIE5TTXV0YWJsZUFy
cmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNp
emVdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
ICAgIFtyZXN1bHQgYWRkT2JqZWN0OihOU1N0cmluZyAqKXJlZGlyZWN0VVJMcy0+YXQoaSldOwot
ICAgICAgICBbZGljdCBzZXRPYmplY3Q6cmVzdWx0IGZvcktleTpyZWRpcmVjdFVSTHNLZXldOwot
ICAgICAgICBbcmVzdWx0IHJlbGVhc2VdOwotICAgIH0KLSAgICAKKyAgICBpZiAoYXV0byByZWRp
cmVjdFVSTHMgPSBfcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcy5nZXQoKSkKKyAgICAgICAgW2RpY3Qg
c2V0T2JqZWN0OmNyZWF0ZU5TQXJyYXkoKnJlZGlyZWN0VVJMcykuZ2V0KCkgZm9yS2V5OnJlZGly
ZWN0VVJMc0tleV07CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpbmNsdWRl
c0NoaWxkcmVuICYmIGNvcmVJdGVtLT5jaGlsZHJlbigpLnNpemUoKSkgewogI2Vsc2UKQEAgLTQ2
OCw4ICs0NTEsOCBAQCAtIChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24K
ICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OnZpZXdwb3J0QXJndW1lbnRzIGZvcktleTpAIldlYlZp
ZXdwb3J0QXJndW1lbnRzIl07CiAKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGNvcmUo
X3ByaXZhdGUpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFtkaWN0IHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpzY3JvbGxQb3NpdGlvbi54KCldIGZvcktleTpzY3JvbGxQb2ludFhL
ZXldOwotICAgIFtkaWN0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzY3JvbGxQ
b3NpdGlvbi55KCldIGZvcktleTpzY3JvbGxQb2ludFlLZXldOworICAgIFtkaWN0IHNldE9iamVj
dDpAKHNjcm9sbFBvc2l0aW9uLngoKSkgZm9yS2V5OnNjcm9sbFBvaW50WEtleV07CisgICAgW2Rp
Y3Qgc2V0T2JqZWN0OkAoc2Nyb2xsUG9zaXRpb24ueSgpKSBmb3JLZXk6c2Nyb2xsUG9pbnRZS2V5
XTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGRpY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0KaW5kZXggMTdiOThiODc0ODg0YTY4
M2NmNmY3MDkwY2QxOTQwNzQ2OWE2MTc0Yi4uYzFmYmQzZWM2OTYyODM2ZTE2ZDZkMDcyZDE3ZDk3
ZGJjNTlmMzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJVUkxzV2l0aFRpdGxlcy5tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViVVJMc1dpdGhUaXRsZXMubQpAQCAtNDEsNyArNDEsNyBAQCArIChOU0FycmF5ICopYXJyYXlX
aXRoSUZVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUKICAgICBzdGF0aWMgTlNBcnJheSAqY2FubmVk
QXJyYXkgPSBuaWw7CiAKICAgICBpZiAoY2FubmVkQXJyYXkgPT0gbmlsKSB7Ci0gICAgICAgIGNh
bm5lZEFycmF5ID0gW1tOU0FycmF5IGFycmF5V2l0aE9iamVjdDpXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGVdIHJldGFpbl07CisgICAgICAgIGNhbm5lZEFycmF5ID0gW0BbV2ViVVJMc1dpdGhU
aXRsZXNQYm9hcmRUeXBlXSByZXRhaW5dOwogICAgIH0KIAogICAgIHJldHVybiBjYW5uZWRBcnJh
eTsKQEAgLTczLDcgKzczLDcgQEAgKyh2b2lkKXdyaXRlVVJMczooTlNBcnJheSAqKVVSTHMgYW5k
VGl0bGVzOihOU0FycmF5ICopdGl0bGVzIHRvUGFzdGVib2FyZDooTlNQYXMKICAgICAgICAgW3Rp
dGxlc09yRW1wdHlTdHJpbmdzIGFkZE9iamVjdDoodGl0bGVzID09IG5pbCkgPyBAIiIgOiBbW3Rp
dGxlcyBvYmplY3RBdEluZGV4OmluZGV4XSBfd2Via2l0X3N0cmluZ0J5VHJpbW1pbmdXaGl0ZXNw
YWNlXV07CiAgICAgfQogCi0gICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OltOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6VVJMU3RyaW5ncywgdGl0bGVzT3JFbXB0eVN0cmluZ3MsIG5pbF0K
KyAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6QFtVUkxTdHJpbmdzLCB0aXRsZXNPckVt
cHR5U3RyaW5nc10KICAgICAgICAgICAgICAgICAgICAgICAgIGZvclR5cGU6V2ViVVJMc1dpdGhU
aXRsZXNQYm9hcmRUeXBlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KaW5kZXggNTEzN2U0MWMyNDJmY2E1NWM0YTA5NGI2NDMzNzNlOWUwYTZmZWMyYi4uMTUx
M2Y0ZTc5YjBjNDU3YzE5N2I3ZjY4MTJjYTU4YzRkODY5MDA3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC03MSw1MCArNzEsNDkgQEAgKyAodm9pZClpbml0
aWFsaXplCiAKICsgKE5TQXJyYXkgKilzdGF0aXN0aWNzCiB7Ci0gICAgV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OlN0YXRpc3RpY3MgcyA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5n
ZXRTdGF0aXN0aWNzKCk7Ci0KLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoK
LSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuY291bnRdLCBAIkltYWdl
cyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRz
LmNvdW50XSwgQCJDU1MiLAorICAgIGF1dG8gcyA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5n
bGV0b24oKS5nZXRTdGF0aXN0aWNzKCk7CisgICAgcmV0dXJuIEBbCisgICAgICAgIEB7CisgICAg
ICAgICAgICBAIkltYWdlcyI6IEAocy5pbWFnZXMuY291bnQpLAorICAgICAgICAgICAgQCJDU1Mi
OiBAKHMuY3NzU3R5bGVTaGVldHMuY291bnQpLAogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5jb3VudF0sIEAiWFNM
IiwKKyAgICAgICAgICAgIEAiWFNMIjogQChzLnhzbFN0eWxlU2hlZXRzLmNvdW50KSwKICNlbHNl
Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAorICAgICAg
ICAgICAgQCJYU0wiOiBAKDApLAogI2VuZGlmCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpzLnNjcmlwdHMuY291bnRdLCBAIkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmls
XSwKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgot
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuc2l6ZV0sIEAiSW1h
Z2VzIiwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuY3NzU3R5bGVTaGVl
dHMuc2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAgICAgIEAiSmF2YVNjcmlwdCI6IEAocy5zY3JpcHRz
LmNvdW50KSwKKyAgICAgICAgfSwKKyAgICAgICAgQHsKKyAgICAgICAgICAgIEAiSW1hZ2VzIjog
QChzLmltYWdlcy5zaXplKSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRz
LnNpemUpLAogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5zaXplXSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wi
OiBAKHMueHNsU3R5bGVTaGVldHMuc2l6ZSksCiAjZWxzZQotICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNl
bmRpZgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLnNpemVd
LCBAIkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cy5pbWFnZXMubGl2ZVNpemVdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRzLmxpdmVTaXplXSAsQCJDU1Mi
LAorICAgICAgICAgICAgQCJKYXZhU2NyaXB0IjogQChzLnNjcmlwdHMuc2l6ZSksCisgICAgICAg
IH0sCisgICAgICAgIEB7CisgICAgICAgICAgICBAIkltYWdlcyI6IEAocy5pbWFnZXMubGl2ZVNp
emUpLAorICAgICAgICAgICAgQCJDU1MiOiBAKHMuY3NzU3R5bGVTaGVldHMubGl2ZVNpemUpLAog
I2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54
c2xTdHlsZVNoZWV0cy5saXZlU2l6ZV0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQChz
LnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplKSwKICNlbHNlCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKDApLAogI2Vu
ZGlmCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnNjcmlwdHMubGl2ZVNp
emVdLCBAIkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuZGVjb2RlZFNpemVdLCBAIkltYWdlcyIsCi0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXpl
XSAsQCJDU1MiLAorICAgICAgICAgICAgQCJKYXZhU2NyaXB0IjogQChzLnNjcmlwdHMubGl2ZVNp
emUpLAorICAgICAgICB9LAorICAgICAgICBAeworICAgICAgICAgICAgQCJJbWFnZXMiOiBAKHMu
aW1hZ2VzLmRlY29kZWRTaXplKSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hl
ZXRzLmRlY29kZWRTaXplKSwKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMuZGVjb2RlZFNpemVdLCBAIlhTTCIsCisg
ICAgICAgICAgICBAIlhTTCI6IEAocy54c2xTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSksCiAjZWxz
ZQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAg
ICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRpZgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6cy5zY3JpcHRzLmRlY29kZWRTaXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAg
ICAgIG5pbF0sCi0gICAgICAgIG5pbF07CisgICAgICAgICAgICBAIkphdmFTY3JpcHQiOiBAKHMu
c2NyaXB0cy5kZWNvZGVkU2l6ZSksCisgICAgICAgIH0sCisgICAgXTsKIH0KIAogKyAodm9pZCll
bXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3Rh
dGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0KaW5kZXggNDY2NjY1MzQyYTFlYTM5Zjc3MGI3NjA4NGI0YmIyY2MzOGU1M2JlMC4uNGM0
ZmVjNzhmM2FiOTVhMWRjMDc0YWU3YTQ4Zjk5MGYyYzE1Mzc2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0xOTksMjIgKzE5
OSwyMCBAQCArICh2b2lkKXN0b3BJZ25vcmluZ1dlYkNvcmVOb2RlTGVha3MKIAogKyAoTlNEaWN0
aW9uYXJ5ICopbWVtb3J5U3RhdGlzdGljcwogewotICAgIFdURjo6RmFzdE1hbGxvY1N0YXRpc3Rp
Y3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7Ci0g
ICAgCisgICAgYXV0byBmYXN0TWFsbG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRp
c3RpY3MoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKICAgICBzaXplX3Qg
aGVhcFNpemUgPSBjb21tb25WTSgpLmhlYXAuc2l6ZSgpOwogICAgIHNpemVfdCBoZWFwRnJlZSA9
IGNvbW1vblZNKCkuaGVhcC5jYXBhY2l0eSgpIC0gaGVhcFNpemU7Ci0gICAgR2xvYmFsTWVtb3J5
U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsK
LSAgICAKLSAgICByZXR1cm4gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgotICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmZhc3RNYWxsb2NT
dGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlc10sIEAiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyIs
Ci0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6ZmFzdE1hbGxvY1N0YXRp
c3RpY3MuY29tbWl0dGVkVk1CeXRlc10sIEAiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiLAot
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmZhc3RNYWxsb2NTdGF0aXN0
aWNzLmZyZWVMaXN0Qnl0ZXNdLCBAIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwKLSAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWFwU2l6ZV0sIEAiSmF2YVNjcmlwdEhl
YXBTaXplIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWFwRnJl
ZV0sIEAiSmF2YVNjcmlwdEZyZWVTaXplIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkSW50Oih1bnNpZ25lZCBpbnQpZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tC
eXRlc10sIEAiSmF2YVNjcmlwdFN0YWNrU2l6ZSIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhVbnNpZ25lZEludDoodW5zaWduZWQgaW50KWdsb2JhbE1lbW9yeVN0YXRzLkpJ
VEJ5dGVzXSwgQCJKYXZhU2NyaXB0SklUU2l6ZSIsCi0gICAgICAgICAgICBuaWxdOworICAgIGF1
dG8gZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAgcmV0
dXJuIEB7CisgICAgICAgIEAiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyI6IEAoZmFzdE1hbGxv
Y1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSwKKyAgICAgICAgQCJGYXN0TWFsbG9jQ29tbWl0
dGVkVk1CeXRlcyI6IEAoZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyksCisg
ICAgICAgIEAiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiOiBAKGZhc3RNYWxsb2NTdGF0aXN0aWNz
LmZyZWVMaXN0Qnl0ZXMpLAorICAgICAgICBAIkphdmFTY3JpcHRIZWFwU2l6ZSI6IEAoaGVhcFNp
emUpLAorICAgICAgICBAIkphdmFTY3JpcHRGcmVlU2l6ZSI6IEAoaGVhcEZyZWUpLAorICAgICAg
ICBAIkphdmFTY3JpcHRTdGFja1NpemUiOiBAKGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMp
LAorICAgICAgICBAIkphdmFTY3JpcHRKSVRTaXplIjogQChnbG9iYWxNZW1vcnlTdGF0cy5KSVRC
eXRlcyksCisgICAgfTsKIH0KIAogKyAodm9pZClyZXR1cm5GcmVlTWVtb3J5VG9TeXN0ZW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tCmluZGV4IGM1Mjc4Mzc0
ZTk0ZTIwMTZjOTYwODhhMDFmNWQ4NWE1ZGMzOGU2YTMuLjZhYzc1MzNlMjU1OTk4ZThkZDM3Y2Y3
MmQxMmIwNzg4ODJjNzY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViS2l0RXJyb3JzLm0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJL
aXRFcnJvcnMubQpAQCAtNzAsMTQgKzcwLDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBOU0Vycm9yIChX
ZWJLaXRJbnRlcm5hbCkKIC0gKGluc3RhbmNldHlwZSlfd2Via2l0X2luaXRXaXRoRG9tYWluOihO
U1N0cmluZyAqKWRvbWFpbiBjb2RlOihpbnQpY29kZSBVUkw6KE5TVVJMICopVVJMCiB7CiAgICAg
Ly8gSW5zZXJ0IGEgbG9jYWxpemVkIHN0cmluZyBoZXJlIGZvciB0aG9zZSBmb2xrcyBub3Qgc2F2
dnkgdG8gb3VyIGNhdGVnb3J5IG1ldGhvZHMuCi0gICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlv
bnNEaWN0ID0gW2Rlc2NyaXB0aW9ucyBvYmplY3RGb3JLZXk6ZG9tYWluXTsKLSAgICBOU1N0cmlu
ZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbnNEaWN0ID8gW2Rlc2NyaXB0aW9u
c0RpY3Qgb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1iZXJXaXRoSW50OmNvZGVdXSA6IG5pbDsK
LSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CisgICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9uID0gW1tkZXNj
cmlwdGlvbnMgb2JqZWN0Rm9yS2V5OmRvbWFpbl0gb2JqZWN0Rm9yS2V5OkAoY29kZSldOworICAg
IE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CiAgICAgICAgIFVSTCwgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCiAgICAg
ICAgIFtVUkwgYWJzb2x1dGVTdHJpbmddLCBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9y
S2V5LAogICAgICAgICBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgTlNMb2NhbGl6ZWREZXNjcmlwdGlv
bktleSwKICAgICAgICAgbmlsXTsKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhEb21haW46ZG9t
YWluIGNvZGU6Y29kZSB1c2VySW5mbzpkaWN0XTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhE
b21haW46ZG9tYWluIGNvZGU6Y29kZSB1c2VySW5mbzp1c2VySW5mb107CiB9CiAKIEBlbmQKQEAg
LTkxLDIxICs5MCwyMSBAQCArICh2b2lkKV9yZWdpc3RlcldlYktpdEVycm9ycwogICAgICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAv
LyBQb2xpY3kgZXJyb3JzCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNh
bm5vdFNob3dNSU1FVHlwZSwgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6IFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlXSwKLSAgICAgICAgICAgICAgICBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VSTCwgICAgICAgICAgICAgICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMXSwKLSAgICAg
ICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSwgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydF0sCi0g
ICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEJsb2NrZWRCeUNv
bnRlbnRGaWx0ZXIsICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yRnJh
bWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlcl0sCisgICAgICAgICAgICAgICAgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkNhbm5vdFNob3dNSU1FVHlwZSwgICAgICAgICAgICAgICAgICAgQChXZWJL
aXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSksCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JE
ZXNjcmlwdGlvbkNhbm5vdFNob3dVUkwsICAgICAgICAgICAgICAgICAgICAgICAgQChXZWJLaXRF
cnJvckNhbm5vdFNob3dVUkwpLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRp
b25GcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCAgIEAoV2ViS2l0RXJyb3JGcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRF
cnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsICAgICAgICAgICAgICBAKFdl
YktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQpLAorICAgICAgICAgICAgICAgIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyLCAgICAgIEAo
V2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyKSwKIAogICAgICAgICAg
ICAgICAgIC8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3JzCi0gICAgICAgICAgICAgICAgV2ViS2l0
RXJyb3JEZXNjcmlwdGlvbkNhbm5vdEZpbmRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbl0sCi0gICAg
ICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAgICAg
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90
TG9hZFBsdWdJbl0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkphdmFV
bmF2YWlsYWJsZSwgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
IFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbiwgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uXSwK
LSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxv
YWQsICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQ
bHVnSW5XaWxsSGFuZGxlTG9hZF0sCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlw
dGlvbkNhbm5vdEZpbmRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvckNh
bm5vdEZpbmRQbHVnSW4pLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25D
YW5ub3RMb2FkUGx1Z2luLCAgICAgICAgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RM
b2FkUGx1Z0luKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uSmF2YVVu
YXZhaWxhYmxlLCAgICAgICAgICAgICAgICAgICAgICBAKFdlYktpdEVycm9ySmF2YVVuYXZhaWxh
YmxlKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2Vs
bGVkQ29ubmVjdGlvbiwgICAgICAgICAgICBAKFdlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29u
bmVjdGlvbiksCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbldp
bGxIYW5kbGVMb2FkLCAgICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5k
bGVMb2FkKSwKIAogICAgICAgICAgICAgICAgIC8vIEdlb2xvY2F0aW9uIGVycm9ycwotICAgICAg
ICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93
biwgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckdlb2xvY2F0
aW9uTG9jYXRpb25Vbmtub3duXSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0
aW9uR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd24sICAgICAgICAgICBAKFdlYktpdEVycm9yR2Vv
bG9jYXRpb25Mb2NhdGlvblVua25vd24pLAogICAgICAgICAgICAgICAgIG5pbF07CiAKICAgICAg
ICAgICAgIFtOU0Vycm9yIF93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5kRGVzY3JpcHRpb25z
OmRpY3QgaW5Eb21haW46V2ViS2l0RXJyb3JEb21haW5dOwpAQCAtMTM5LDcgKzEzOCw3IEBAIC0g
KGlkKV9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTooaW50KWNvZGUKICAgICAKICAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF07CiAgICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnNGb3JXZWJLaXRFcnJvckRvbWFpbiA9
IFtkZXNjcmlwdGlvbnMgb2JqZWN0Rm9yS2V5OldlYktpdEVycm9yRG9tYWluXTsKLSAgICBOU1N0
cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVzY3JpcHRpb25zRm9yV2ViS2l0RXJyb3JE
b21haW4gb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1iZXJXaXRoSW50OmNvZGVdXTsKKyAgICBO
U1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVzY3JpcHRpb25zRm9yV2ViS2l0RXJy
b3JEb21haW4gb2JqZWN0Rm9yS2V5OkAoY29kZSldOwogICAgIGlmIChsb2NhbGl6ZWREZXNjcmlw
dGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbiBm
b3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CiAgICAgaWYgKGNvbnRlbnRVUkwpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdF
eHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0
cmFzLm1tCmluZGV4IDZiMGU4OTY3NWEwZDEyMDhkOWNhOTU4MjlhNTYwNTFhNjdiYWMyMTUuLjcz
OTJmMTA1OWJjYjQ1ZTk1MjBhZjhiOTYyY2Y0MDM1YmFiODJmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtOTks
NyArOTksNyBAQCAtICh2b2lkKV93ZWJfZHJhd0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgZm9udDoo
TlNGb250ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29sb3IgKgogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb2ludC55ICs9IFtmb250IGRlc2NlbmRlcl07CiAKLSAgICAgICAgW3NlbGYgZHJhd0F0
UG9pbnQ6cG9pbnQgd2l0aEF0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOmZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsIHRleHRDb2xvciwgTlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBuaWxdXTsKKyAgICAgICAgW3NlbGYgZHJhd0F0UG9p
bnQ6cG9pbnQgd2l0aEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTogZm9udCwgTlNG
b3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiB0ZXh0Q29sb3IgfV07CiAgICAgfQogfQogCkBA
IC0xMTUsNyArMTE1LDcgQEAgLSAoZmxvYXQpX3dlYl93aWR0aFdpdGhGb250OihOU0ZvbnQgKilm
b250CiAgICAgICAgIHJldHVybiB3ZWJDb3JlRm9udC53aWR0aChydW4pOwogICAgIH0KIAotICAg
IHJldHVybiBbc2VsZiBzaXplV2l0aEF0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOmZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsIG5pbF1dLndpZHRo
OworICAgIHJldHVybiBbc2VsZiBzaXplV2l0aEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRl
TmFtZTogZm9udCB9XS53aWR0aDsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJh
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJh
cy5tbQppbmRleCBjNTQxM2U4MWM2YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIyYTA1ZGYxLi5iYmZm
YWRlNjViZDE3OGUyYTNmNmEyYzQwZGM2MDZlMGE0ODBhY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0z
NCw3ICszNCw2IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRp
bWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFnZXIgKFdlYk5TRmlsZU1h
bmFnZXJFeHRyYXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggYmJiNjJjYmFmZGJiZTA5ODc1YTJjZTQ1NTg4
Yzg4YTE3OGFmZmNlZC4uZTFjNWVlYjMyODNmMDY2ZDgxMmNjYjA1NmM0NzA3ZjM1MmIwODc3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCArIChOU0FycmF5ICopX3dlYl93cml0YWJs
ZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihCT09MKWhhc0FyY2hpdmUKIAogKyAoTlNB
cnJheSAqKV93ZWJfZHJhZ1R5cGVzRm9yVVJMCiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6CisgICAgcmV0dXJuIEBbCiAgICAgICAgIFdlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZSwKICAgICAgICAgbGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwKICAgICAgICAgV2Vi
VVJMUGJvYXJkVHlwZSwKQEAgLTExNCw3ICsxMTQsNyBAQCArIChOU0FycmF5ICopX3dlYl9kcmFn
VHlwZXNGb3JVUkwKICAgICAgICAgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwKICAgICAg
ICAgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwKICAgICAgICAgbGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKSwKLSAgICAgICAgbmlsXTsKKyAgICBdOwogfQogCiAtIChO
U1VSTCAqKV93ZWJfYmVzdFVSTApAQCAtMTc3LDcgKzE3Nyw3IEBAIC0gKHZvaWQpX3dlYl93cml0
ZVVSTDooTlNVUkwgKilVUkwgYW5kVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgdHlwZXM6KE5TQXJy
YXkgKil0CiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXSkKICAgICAgICAgW3NlbGYgc2V0U3RyaW5nOltVUkwgX3dlYl91c2VyVmlzaWJs
ZVN0cmluZ10gZm9yVHlwZTpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICBpZiAo
W3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV0pCi0gICAg
ICAgIFtXZWJVUkxzV2l0aFRpdGxlcyB3cml0ZVVSTHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
OlVSTF0gYW5kVGl0bGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDp0aXRsZV0gdG9QYXN0ZWJv
YXJkOnNlbGZdOworICAgICAgICBbV2ViVVJMc1dpdGhUaXRsZXMgd3JpdGVVUkxzOkBbVVJMXSBh
bmRUaXRsZXM6QFt0aXRsZV0gdG9QYXN0ZWJvYXJkOnNlbGZdOwogfQogCiArIChpbnQpX3dlYl9z
ZXRGaW5kUGFzdGVib2FyZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aE93bmVyOihpZClv
d25lcgpAQCAtMTg1LDcgKzE4NSw3IEBAICsgKGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJkU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoT3duZXI6KGlkKW93bmVyCiAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBOU1Bhc3RlYm9hcmQgKmZpbmRQYXN0ZWJv
YXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6TlNGaW5kUGJvYXJkXTsKICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbZmluZFBhc3RlYm9hcmQg
ZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXSBvd25lcjpvd25lcl07CisgICAgW2ZpbmRQYXN0ZWJvYXJkIGRlY2xhcmVUeXBl
czpAW2xlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm93bmVyXTsKICAgICBbZmlu
ZFBhc3RlYm9hcmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBlOmxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCldOwogICAgIHJldHVybiBbZmluZFBhc3RlYm9hcmQgY2hhbmdlQ291bnRdOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KaW5kZXgg
YzBlN2ZhOTMxYTRmNGFjNTM1NzI0NjRmYTA2YjBiMDAxMzdhNWM3My4uN2U5ODkyZmMzZDIyZGI1
MjkxYmU0YTY2MTI5NDQ1ZGZhYWY4M2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0zOSw3ICszOSw2IEBACiAjaW1wb3J0IDx1bmlj
b2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBhMDRiYzU1N2JmZGRjOTc2ZmQxODA1
YWZlYjc4NjViNGQxMjdhZTZkLi45NTYxZDIyZWJiZmI5ZWE0OWQ0Zjg4MzZiMmYwZmQ1OTVjYTY4
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTE0MSwxNyAr
MTQxLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5CiAgICAgTlNTdHJpbmcgKnBsdWdpbkhv
c3RBcHBQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlIGNsYXNzXV0gcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6cGx1Z2luSG9zdEFwcE5h
bWVdOwogICAgIE5TU3RyaW5nICpwbHVnaW5Ib3N0QXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVu
ZGxlIGJ1bmRsZVdpdGhQYXRoOnBsdWdpbkhvc3RBcHBQYXRoXSBleGVjdXRhYmxlUGF0aF07CiAK
LSAgICBOU0RpY3Rpb25hcnkgKmxhdW5jaFByb3BlcnRpZXMgPSBbW05TRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGx1Z2luSG9zdEFwcEV4ZWN1dGFibGVQYXRoLCBAInBsdWdpbkhvc3RQYXRoIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6cGx1Z2luQXJjaGl0ZWN0dXJlXSwgQCJjcHVUeXBlIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpLCBA
ImxvY2FsaXphdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5p
bF07Ci0KKyAgICBOU0RpY3Rpb25hcnkgKmxhdW5jaFByb3BlcnRpZXMgPSBAeworICAgICAgICBA
InBsdWdpbkhvc3RQYXRoIjogcGx1Z2luSG9zdEFwcEV4ZWN1dGFibGVQYXRoLAorICAgICAgICBA
ImNwdVR5cGUiOiBAKHBsdWdpbkFyY2hpdGVjdHVyZSksCisgICAgICAgIEAibG9jYWxpemF0aW9u
IjogcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpLAorICAgIH07CiAgICAgTlNEYXRh
ICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlz
dDpsYXVuY2hQcm9wZXJ0aWVzIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8w
IG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAgICBBU1NFUlQoZGF0YSk7CiAKLSAgICBbbGF1
bmNoUHJvcGVydGllcyByZWxlYXNlXTsKLQogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBfV0tQQVNw
YXduUGx1Z2luSG9zdChtX3BsdWdpblZlbmRvclBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRhIGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCAmcGx1
Z2luSG9zdFBvcnQpOwogCiAgICAgaWYgKGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RFU1QpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggM2IyOTY2NmY3ZGY2YTdkY2Nh
NzlkMTAzOTMzODBiNjM4YjQ4MTQ0YS4uYzY0Nzc0ZGM0N2UzZWU1OTUzZDJkNDllZGViN2UwYmM3
OGRjYjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTk0Nyw3ICs5
NDcsNyBAQCBrZXJuX3JldHVybl90IFdLUENJZGVudGlmaWVySW5mbyhtYWNoX3BvcnRfdCBjbGll
bnRQb3J0LCB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaQogICAgICAgICBjb25zdCBjaGFyKiBzdHIg
PSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKICAgICAgICAgaW5mbyA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlc05vQ29weToodm9pZCopc3RyIGxlbmd0aDpzdHJsZW4oc3RyKSBmcmVlV2hlbkRvbmU6Tk9d
OwogICAgIH0gZWxzZSAKLSAgICAgICAgaW5mbyA9IFtOU051bWJlciBudW1iZXJXaXRoSW50Omlk
ZW50aWZpZXItPm51bWJlcigpXTsKKyAgICAgICAgaW5mbyA9IEAoaWRlbnRpZmllci0+bnVtYmVy
KCkpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBk
YXRhV2l0aFByb3BlcnR5TGlzdDppbmZvIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1h
dF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZGM2MmQ1NTQxNDJhMzFj
OGE4MDU2NmJkNmRkM2FlN2VlOTRiMzUyNS4uYTYxNDVlMDJkM2Q2MzVmM2FkNDE0MjlkNTczOWQw
MzM5ZGM0MjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpA
QCAtMTMyMiwyOCArMTMyMiwyOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICphcnJheSwgSlNHbG9iYQogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
IFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBl
XV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChTdHJpbmdWYWx1ZVR5cGUpXTsKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDphc1N0cmluZyh2YWx1ZSktPnZhbHVlKGxleGljYWxHbG9iYWxP
YmplY3QpXTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpEb3VibGVWYWx1ZVR5cGVdXTsK
LSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZS50b051bWJlcihsZXhpY2FsR2xvYmFsT2JqZWN0KV1dOworICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OkAoRG91YmxlVmFsdWVUeXBlKV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCh2YWx1
ZS50b051bWJlcihsZXhpY2FsR2xvYmFsT2JqZWN0KSldOwogICAgIH0gZWxzZSBpZiAodmFsdWUu
aXNCb29sZWFuKCkpIHsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpCb29sVmFsdWVUeXBlXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChCb29s
VmFsdWVUeXBlKV07CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhCb29sOnZhbHVlLnRvQm9vbGVhbihsZXhpY2FsR2xvYmFsT2JqZWN0KV1dOwogICAgIH0gZWxz
ZSBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6TnVsbFZhbHVlVHlwZV1dOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAoTnVsbFZhbHVlVHlwZSldOwogICAgIGVsc2UgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKICAgICAgICAgdWludDY0
X3Qgb2JqZWN0SUQ7CiAgICAgICAgIGlmIChnZXRPYmplY3RJRCh0aGlzLCBvYmplY3QsIG9iamVj
dElEKSkgewotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpOUE9iamVjdFZhbHVlVHlwZV1dOwotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpvYmplY3RJRF1dOworICAgICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpAKE5QT2JqZWN0VmFsdWVUeXBlKV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OkAob2JqZWN0SUQpXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6SlNPYmplY3RWYWx1ZVR5cGVdXTsKLSAg
ICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9sb2Nh
bE9iamVjdHMuaWRGb3JPYmplY3Qodm0sIG9iamVjdCldXTsKKyAgICAgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6QChKU09iamVjdFZhbHVlVHlwZSldOworICAgICAgICAgICAgW2FycmF5IGFkZE9i
amVjdDpAKG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KHZtLCBvYmplY3QpKV07CiAgICAgICAg
IH0KICAgICB9IGVsc2UKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpWb2lkVmFsdWVUeXBlXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChWb2lk
VmFsdWVUeXBlKV07CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjptYXJz
aGFsVmFsdWUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIGRhdGFfdCYgcmVzdWx0RGF0YSwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCYgcmVzdWx0TGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDYzODAx
ZTFjYWJhY2JhYWYxMDFhMDM4YWNlNTA1MjZmMDNmMWFmYzkuLjBhYzE3NmNlYTFjZDRmYmM2NmMx
YWEzNjE3NTJlNmYwNzdmMmVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KaW5k
ZXggNzFlNDM2NTQ2YTljZDQ4MmE5NTVhMGE4MGI1MGM5OWVlZGFmMTk1OS4uZjZhNzQ3N2NkMWRm
YzJiNDVlY2EwMmNkMmRkODFmZjU3NjYzYzAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCkBAIC00MCw3ICs0
MCw2IEBACiAjaW1wb3J0IDxtYWNoLW8vbG9hZGVyLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCmluZGV4
IDI5MTM5M2JmY2MwNjI4ZWZkMjFlYTUxYjU3NTk2YTc4ZWVjNzNmNzYuLjc0MDg4OGZkOTY4MjFh
MzQyOWM0Nzk0MTE3NWEzNzAwZDUwNzc4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQpAQCAtMTA3
LDExICsxMDcsMTEgQEAgLSAoQk9PTClfaXNGb3JiaWRkZW5GaWxlTG9hZAogCiAtIChOU0RpY3Rp
b25hcnkgKilfYWN0aW9uSW5mb3JtYXRpb25XaXRoVVJMOihOU1VSTCAqKVVSTAogewotICAgIHJl
dHVybiBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJOYXZpZ2F0aW9uVHlwZVBsdWdJblJl
cXVlc3RdLCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKLSAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OjBdLCBXZWJBY3Rpb25Nb2RpZmllckZsYWdzS2V5LAotICAgICAg
ICAgICAgICAgVVJMLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKLSAgICAgICAgICAgICAgIG5p
bF07CisgICAgcmV0dXJuIEB7CisgICAgICAgIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5OiBA
KFdlYk5hdmlnYXRpb25UeXBlUGx1Z0luUmVxdWVzdCksCisgICAgICAgIFdlYkFjdGlvbk1vZGlm
aWVyRmxhZ3NLZXk6IEAoMCksCisgICAgICAgIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5OiBVUkws
CisgICAgfTsKIH0KIAogLSAodm9pZClfYXNrUG9saWN5RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCmluZGV4IDQ5
ZGU0NWQ0YmYyNjdjMTAyN2VjNzMyMzc2ZDhhYzg1N2Q5NzdlMTEuLjA5M2U2OTc1ZDQxZWM4Mjhh
YjUyY2YzOGQ0Yjk2NmQ4ZjNmOTVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQpAQCAtMzkwLDExICszOTAsMTEgQEAg
KyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0aHMKICAgICAvLyBGb3IgZXhhbXBsZSwgaWYg
dGhlcmUgaXMgYSBRdWlja1RpbWUucGx1Z2luIGluIHRoZSB1c2VycydzIGhvbWUgZGlyZWN0b3J5
CiAgICAgLy8gdGhhdCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIC9MaWJyYXJ5L0ludGVybmV0IFBs
dWctaW5zIHZlcnNpb24uCiAgICAgLy8gVGhlIHB1cnBvc2UgaXMgdG8gYWxsb3cgbm9uLWFkbWlu
IHVzZXJzIHRvIHVwZGF0ZSB0aGVpciBwbHVnLWlucy4KLSAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAgW05TSG9tZURpcmVjdG9yeSgp
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvSW50ZXJuZXQgUGx1Zy1J
bnMiXSwKICAgICAgICAgQCIvTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucyIsCiAgICAgICAgIFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVpbHRJblBsdWdJbnNQYXRoXSwKLSAgICAgICAgbmlsXTsK
KyAgICBdOwogI2Vsc2UKICAgICAvLyBpT1MgcGx1Zy1pbnMgYXJlIGFsbCBsb2NhdGVkIGluIC9T
eXN0ZW0vTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikKQEAgLTQwNiw3ICs0MDYsNyBAQCArIChOU0FycmF5ICopX2RlZmF1bHRQbHVn
SW5QYXRocwogICAgIE5TU3RyaW5nKiBwbGF0Zm9ybVJvb3REaXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aFVURjhTdHJpbmc6V2ViS2l0UGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5KCldOwogICAg
IE5TU3RyaW5nICpzeXN0ZW1EaXIgPSBbcGxhdGZvcm1Sb290RGlyIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIlN5c3RlbS9MaWJyYXJ5Il07CiAjZW5kaWYKLSAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OltzeXN0ZW1EaXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiSW50ZXJuZXQgUGx1Zy1JbnMiXV07CisgICAgcmV0dXJuIEBbW3N5c3RlbURpciBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbnRlcm5ldCBQbHVnLUlucyJdXTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDczZTIzMzFlYmI2Y2ZhZWRlZWE0YzFkMmYxMmFkMGJh
ZDUyMjY1M2MuLmU3Mjc1Yzc0ZGRkNzY3MWI0NTJjYjdkN2RkZDMxYTNlYjM0NDNiZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5h
Z2VyLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5oIgogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJT
ZWN1cml0eU9yaWdpbkludGVybmFsLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5h
Z2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICNpbXBvcnQgIldlYkRhdGFiYXNlUHJv
dmlkZXIuaCIKQEAgLTEwNiwxMSArMTA2LDcgQEAgLSAoTlNBcnJheSAqKWRhdGFiYXNlc1dpdGhP
cmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7CiAgICAgaWYgKCFvcmlnaW4pCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvciA9IERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhbb3JpZ2luIF9jb3JlXS0+ZGF0
YSgpKTsKLSAgICBOU011dGFibGVBcnJheSAqbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGF1dG8mIG5h
bWUgOiBuYW1lVmVjdG9yKQotICAgICAgICBbbmFtZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKW5h
bWVdOwotICAgIHJldHVybiBbbmFtZXMgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhbb3JpZ2lu
IF9jb3JlXS0+ZGF0YSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5ICop
ZGV0YWlsc0ZvckRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciB3aXRoT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IDg5
NWM0YjJkNDlkYzFjOGZiMzA4YmIzODAwYjBiOTE5NDY1NWJmZDMuLjA4ZDY0YTI5MjU5ZTRlYzIx
NjI3ZDI5ZGY0NzRmYTdhNjE3NzkxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTIyLDExICsy
MiwxNCBAQAogICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCisKICNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogCiAjaW1wb3J0ICJXZWJW
aWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYg
VVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
c3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlIGNvcnJlY3Rpb25JbmRpY2F0
b3JUeXBlKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSkKQEAgLTY5LDE1
ICs3MiwxMSBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6c2hvdyhXZWJWaWV3KiB2aWV3LCBBbHRl
cm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UgogICAgIG1fdmlldyA9IHZpZXc7CiAg
ICAgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBpbmRpY2F0b3JUeXBlID0gY29ycmVjdGlvbklu
ZGljYXRvclR5cGUodHlwZSk7CiAgICAgCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZl
U3RyaW5ncyA9IDA7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncy5zaXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDoo
TlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKLSAgICB9CisgICAg
UmV0YWluUHRyPE5TQXJyYXk+IGFsdGVybmF0aXZlU3RyaW5nczsKKyAgICBpZiAoIWFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJp
bmdzID0gY3JlYXRlTlNBcnJheShhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAKLSAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25JbmRp
Y2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5n
QXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmlu
Z0luUmVjdDpbdmlldyBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nXSB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5n
KiBhY2NlcHRlZFN0cmluZykgeworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVj
a2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTppbmRpY2F0b3JUeXBlIHByaW1hcnlT
dHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRl
cm5hdGl2ZVN0cmluZ3MuZ2V0KCkgZm9yU3RyaW5nSW5SZWN0Olt2aWV3IF9jb252ZXJ0UmVjdEZy
b21Sb290Vmlldzpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmddIHZpZXc6bV92aWV3LmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CiAgICAgICAg
IGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0ZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5n
QXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nLCBpbmRpY2F0b3JUeXBlKTsK
ICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA2NmYxYjQxMmMyZWM2NmIzMmU0NGFl
OGFlMjFkMDkwYzc1NzJmYTFlLi42ZDY4ZGY3YzcyN2U3MTFhZTZmMjY4NTNkZGRlOTJiMzVlNGQ4
NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC00NjAsOCArNDYwLDggQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXYKICAgICBOU1N0cmluZyAqbWVzc2FnZVNvdXJjZSA9IHN0cmluZ0Zvck1lc3Nh
Z2VTb3VyY2Uoc291cmNlKTsKICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgKE5TU3RyaW5n
ICopbWVzc2FnZSwgQCJtZXNzYWdlIiwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZEludDpsaW5lTnVtYmVyXSwgQCJsaW5lTnVtYmVyIiwKLSAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDpjb2x1bW5OdW1iZXJdLCBAImNvbHVtbk51bWJlciIsCisgICAg
ICAgIEAobGluZU51bWJlciksIEAibGluZU51bWJlciIsCisgICAgICAgIEAoY29sdW1uTnVtYmVy
KSwgQCJjb2x1bW5OdW1iZXIiLAogICAgICAgICAoTlNTdHJpbmcgKilzb3VyY2VVUkwsIEAic291
cmNlVVJMIiwKICAgICAgICAgbWVzc2FnZVNvdXJjZSwgQCJNZXNzYWdlU291cmNlIiwKICAgICAg
ICAgc3RyaW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwgQCJNZXNzYWdlTGV2ZWwiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCmluZGV4IDlhZDQ2YzYwNDcwMTJlYjNlNDIzODA0ZDQwNzIwNzAyNTdkYzVlNDYu
LjhhNzUzYzU5MDE3MjJhY2FjYjRjMzA1MGEzMWUxYmY3MDhjYjU0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KQEAgLTgzLDYgKzgzLDcgQEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NTcsNyArNDU4LDcgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKICAgICBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0
ZSA9IEAiRXhjbHVkZWRFbGVtZW50cyI7CiAjZW5kaWYKIAotICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZXhjbHVkZWRFbGVt
ZW50cyBmb3JLZXk6TlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGVdOworICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0
cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzIH07CiAKICAgICBbZXhjbHVkZWRFbGVtZW50cyByZWxl
YXNlXTsKIApAQCAtMTA3OSwxNSArMTA4MCw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4CiAg
ICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5nOmNvbnRleHQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
Y29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkgb3B0
aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKSBvcnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29yZENvdW50OjBdOwogICAgICAgICBsYW5n
dWFnZSA9IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRl
eHQubGVuZ3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0aG9ncmFwaHk6b3J0aG9ncmFwaHldOwog
ICAgIH0KLSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkgPSBbY2hlY2tlciBndWVzc2VzRm9yV29y
ZFJhbmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQgbGFuZ3Vh
Z2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpXTsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFtzdHJpbmdzQXJyYXkgY291bnRdOwotCi0gICAg
aWYgKGNvdW50ID4gMCkgewotICAgICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbc3Ry
aW5nc0FycmF5IG9iamVjdEVudW1lcmF0b3JdOwotICAgICAgICBOU1N0cmluZyAqc3RyaW5nOwot
ICAgICAgICB3aGlsZSAoKHN0cmluZyA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwp
Ci0gICAgICAgICAgICBndWVzc2VzLmFwcGVuZChzdHJpbmcpOwotICAgIH0KKyAgICBOU0FycmF5
ICpzdHJpbmdzQXJyYXkgPSBbY2hlY2tlciBndWVzc2VzRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdl
KDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVs
bERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKKyAgICBpZiAoc3Ry
aW5nc0FycmF5LmNvdW50KQorICAgICAgICBndWVzc2VzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHN0
cmluZ3NBcnJheSk7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjA1YzNmOWY0ZTRkNDVlNmRlODYxZDJlNWUyYWUx
N2RlODkwNjFlNS4uYjZhMDI2Mzc5Y2UzZTQ5MDBhYmIyOTk1YmZmZThkZWY5MDVlZTc4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEzMSw2ICsxMzEsNyBAQAogI2ltcG9ydCA8
d3RmL05ha2VkUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCkBAIC0xNTcyLDgg
KzE1NzMsOCBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0
aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BYwogICAgIE5TVVJMICpvcmlnaW5hbFVS
TCA9IGFjdGlvbi51cmwoKTsKIAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3VsdCA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19jYXN0PGludD4oYWN0aW9uLnR5cGUoKSld
LCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6bW9kaWZpZXJGbGFnc10sIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCisgICAgICAg
IEAoc3RhdGljX2Nhc3Q8aW50PihhY3Rpb24udHlwZSgpKSksIFdlYkFjdGlvbk5hdmlnYXRpb25U
eXBlS2V5LAorICAgICAgICBAKG1vZGlmaWVyRmxhZ3MpLCBXZWJBY3Rpb25Nb2RpZmllckZsYWdz
S2V5LAogICAgICAgICBvcmlnaW5hbFVSTCwgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAg
ICAgIG5pbF07CiAKQEAgLTE1ODUsOSArMTU4Niw5IEBAIE5TRGljdGlvbmFyeSAqV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
CiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCiAgICAgICAgIGlmIChtb3VzZUV2ZW50RGF0
YS0+aXNUcnVzdGVkKQotICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6bW91c2VFdmVudERhdGEtPmJ1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRv
bktleV07CisgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKG1vdXNlRXZlbnREYXRhLT5i
dXR0b24pIGZvcktleTpXZWJBY3Rpb25CdXR0b25LZXldOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJDb3JlOjpO
b0J1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CisgICAgICAgICAgICBbcmVzdWx0
IHNldE9iamVjdDpAKFdlYkNvcmU6Ok5vQnV0dG9uKSBmb3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5
XTsKICAgICB9CiAKICAgICBpZiAoZm9ybVN0YXRlKQpAQCAtMTY5NCwxNSArMTY5NSw2IEBAIFdl
YkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBVUkwmIHVyCiAgICAgcmV0dXJuIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRU
eXBlOjpOb25lOwogfQogCi1zdGF0aWMgTlNNdXRhYmxlQXJyYXkqIGtpdChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmVjdG9yKQotewotICAgIHVuc2lnbmVkIGxlbiA9IHZlY3Rvci5zaXplKCk7Ci0g
ICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5Omxlbl07Ci0gICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IGxlbjsgeCsrKQotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OnZlY3Rvclt4XV07Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiBz
dGF0aWMgU3RyaW5nIHBhcmFtZXRlclZhbHVlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IGNoYXIqIG5hbWUp
CiB7CiAgICAgc2l6ZV90IHNpemUgPSBwYXJhbU5hbWVzLnNpemUoKTsKQEAgLTE3MjAsMzcgKzE3
MTIsMzkgQEAgc3RhdGljIE5TVmlldyAqcGx1Z2luVmlldyhXZWJGcmFtZSAqZnJhbWUsIFdlYlBs
dWdpblBhY2thZ2UgKnBsdWdpblBhY2thZ2UsCiB7CiAgICAgV2ViSFRNTFZpZXcgKmRvY1ZpZXcg
PSAoV2ViSFRNTFZpZXcgKilbW2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBB
U1NFUlQoW2RvY1ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSk7Ci0gICAg
ICAgIAorCiAgICAgV2ViUGx1Z2luQ29udHJvbGxlciAqcGx1Z2luQ29udHJvbGxlciA9IFtkb2NW
aWV3IF9wbHVnaW5Db250cm9sbGVyXTsKLSAgICAKKwogICAgIC8vIFN0b3JlIGF0dHJpYnV0ZXMg
aW4gYSBkaWN0aW9uYXJ5IHNvIHRoZXkgY2FuIGJlIHBhc3NlZCB0byBXZWJQbHVnaW5zLgogICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1dGVWYWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVO
YW1lc107Ci0gICAgCisKICAgICBbcGx1Z2luUGFja2FnZSBsb2FkXTsKICAgICBDbGFzcyB2aWV3
RmFjdG9yeSA9IFtwbHVnaW5QYWNrYWdlIHZpZXdGYWN0b3J5XTsKICAgICAKICAgICBOU1ZpZXcg
KnZpZXcgPSBuaWw7CiAgICAgTlNEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBuaWw7Ci0gICAgCi0g
ICAgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdJblZp
ZXdXaXRoQXJndW1lbnRzOildKSB7Ci0gICAgICAgIGFyZ3VtZW50cyA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgIGJhc2VVUkwsIFdlYlBs
dWdJbkJhc2VVUkxLZXksCi0gICAgICAgICAgICBhdHRyaWJ1dGVzLCBXZWJQbHVnSW5BdHRyaWJ1
dGVzS2V5LAotICAgICAgICAgICAgcGx1Z2luQ29udHJvbGxlciwgV2ViUGx1Z0luQ29udGFpbmVy
S2V5LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bG9hZE1hbnVhbGx5ID8g
V2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWRdLCBXZWJQbHVnSW5Nb2RlS2V5
LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLCBX
ZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5LAotICAgICAgICAgICAgZWxlbWVudCwg
V2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCi0gICAgICAgICAgICBuaWxdOwotICAgICAg
ICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVAIiwgYXJndW1lbnRzKTsKKwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKLSAgICB9IGVsc2UgaWYgKFt2aWV3
RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdpblZpZXdXaXRoQXJndW1l
bnRzOildKSB7CisgICAgYXV0byBvbGRTZWxlY3RvciA9IEBzZWxlY3RvcihwbHVnaW5WaWV3V2l0
aEFyZ3VtZW50czopOwogSUdOT1JFX1dBUk5JTkdTX0VORAotICAgICAgICBhcmd1bWVudHMgPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICBi
YXNlVVJMLCBXZWJQbHVnaW5CYXNlVVJMS2V5LAotICAgICAgICAgICAgYXR0cmlidXRlcywgV2Vi
UGx1Z2luQXR0cmlidXRlc0tleSwKLSAgICAgICAgICAgIHBsdWdpbkNvbnRyb2xsZXIsIFdlYlBs
dWdpbkNvbnRhaW5lcktleSwKLSAgICAgICAgICAgIGVsZW1lbnQsIFdlYlBsdWdJbkNvbnRhaW5p
bmdFbGVtZW50S2V5LAotICAgICAgICAgICAgbmlsXTsKKworICAgIGlmIChbdmlld0ZhY3Rvcnkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopXSkg
eworICAgICAgICBhcmd1bWVudHMgPSBAeworICAgICAgICAgICAgV2ViUGx1Z0luQmFzZVVSTEtl
eTogYmFzZVVSTCwKKyAgICAgICAgICAgIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0
ZXMsCisgICAgICAgICAgICBXZWJQbHVnSW5Db250YWluZXJLZXk6IHBsdWdpbkNvbnRyb2xsZXIs
CisgICAgICAgICAgICBXZWJQbHVnSW5Nb2RlS2V5OiBAKGxvYWRNYW51YWxseSA/IFdlYlBsdWdJ
bk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkKSwKKyAgICAgICAgICAgIFdlYlBsdWdJblNo
b3VsZExvYWRNYWluUmVzb3VyY2VLZXk6IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDohbG9hZE1h
bnVhbGx5XSwKKyAgICAgICAgICAgIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5OiBlbGVt
ZW50LAorICAgICAgICB9OworICAgICAgICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVAIiwg
YXJndW1lbnRzKTsKKyAgICB9IGVsc2UgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0
b3I6b2xkU2VsZWN0b3JdKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEB7CisgICAgICAgICAgICBX
ZWJQbHVnaW5CYXNlVVJMS2V5OiBiYXNlVVJMLAorICAgICAgICAgICAgV2ViUGx1Z2luQXR0cmli
dXRlc0tleTogYXR0cmlidXRlcywKKyAgICAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lcktleTog
cGx1Z2luQ29udHJvbGxlciwKKyAgICAgICAgICAgIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50
S2V5OiBlbGVtZW50LAorICAgICAgICB9OwogICAgICAgICBMT0coUGx1Z2lucywgImFyZ3VtZW50
czpcbiVAIiwgYXJndW1lbnRzKTsKICAgICB9CiAKQEAgLTE5MTksMTUgKzE5MTMsMTUgQEAgUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihj
b25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBhdXRvKiBkb2N1bWVudCA9IGNvcmUobV93ZWJGcmFt
ZS5nZXQoKSktPmRvY3VtZW50KCk7CiAgICAgTlNVUkwgKmJhc2VVUkwgPSBkb2N1bWVudC0+YmFz
ZVVSTCgpOwogICAgIE5TVVJMICpwbHVnaW5VUkwgPSB1cmw7Ci0gICAgTlNNdXRhYmxlQXJyYXkg
KmF0dHJpYnV0ZUtleXMgPSBraXQocGFyYW1OYW1lcyk7CisgICAgYXV0byBhdHRyaWJ1dGVLZXlz
ID0gY3JlYXRlTlNBcnJheShwYXJhbU5hbWVzKTsKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmll
dzpwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopOwogICAgIGlmIChbW3dlYlZpZXcgVUlEZWxlZ2F0
ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6a2l0KHBhcmFtVmFsdWVzKSBmb3JLZXlzOmF0dHJpYnV0ZUtleXNdOworICAgICAg
ICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAeyBhdHRyaWJ1dGVLZXlzLmdldCgpOiBjcmVh
dGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKSB9OwogICAgICAgICBOU0RpY3Rpb25hcnkgKmFy
Z3VtZW50cyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgog
ICAgICAgICAgICAgYXR0cmlidXRlcywgV2ViUGx1Z0luQXR0cmlidXRlc0tleSwKLSAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxvYWRNYW51YWxseSA/IFdlYlBsdWdJbk1vZGVG
dWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkXSwgV2ViUGx1Z0luTW9kZUtleSwKKyAgICAgICAgICAg
IEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWQp
LCBXZWJQbHVnSW5Nb2RlS2V5LAogICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OiFsb2FkTWFudWFsbHldLCBXZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5LAogICAg
ICAgICAgICAga2l0KCZlbGVtZW50KSwgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCiAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHBhc3NpbmcgYmFzZSBVUkwsIHNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjE1Pi4KQEAgLTE5MzYs
MTEgKzE5MzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXoKIAogICAgICAgICBOU1ZpZXcg
KnZpZXcgPSBDYWxsVUlEZWxlZ2F0ZSh3ZWJWaWV3LCBzZWxlY3RvciwgYXJndW1lbnRzKTsKIAot
ICAgICAgICBbYXR0cmlidXRlcyByZWxlYXNlXTsKICAgICAgICAgW2FyZ3VtZW50cyByZWxlYXNl
XTsKIAogICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGx1Z2luV2lkZ2V0KHZpZXcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
dWdpbldpZGdldCh2aWV3KSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTE5NTMsNyArMTk0Niw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgIE1JTUVUeXBlID0gbWltZVR5cGU7CiAg
ICAgICAgIHBsdWdpblBhY2thZ2UgPSBbd2ViVmlldyBfcGx1Z2luRm9yTUlNRVR5cGU6bWltZVR5
cGVdOwogICAgIH0KLSAgICAKKwogICAgIE5TU3RyaW5nICpleHRlbnNpb24gPSBbW3BsdWdpblVS
TCBwYXRoXSBwYXRoRXh0ZW5zaW9uXTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
OTc5LDcgKzE5NzIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgICAgICAgICAgICAg
IGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0PigqZWxlbWVudC5yZW5kZXJl
cigpKS5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihXZWJDb3JlOjpSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6SW5zZWN1cmVQbHVnaW5WZXJzaW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNsYXNzOltXZWJQbHVnaW5QYWNrYWdl
IGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgdmlldyA9IHBsdWdpblZpZXcobV93ZWJGcmFtZS5n
ZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5QYWNrYWdlLCBhdHRyaWJ1dGVLZXlzLCBr
aXQocGFyYW1WYWx1ZXMpLCBiYXNlVVJMLCBraXQoJmVsZW1lbnQpLCBsb2FkTWFudWFsbHkpOwor
ICAgICAgICAgICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3KG1fd2ViRnJhbWUuZ2V0KCksIChXZWJQ
bHVnaW5QYWNrYWdlICopcGx1Z2luUGFja2FnZSwgYXR0cmlidXRlS2V5cy5nZXQoKSwgY3JlYXRl
TlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCksIGJhc2VVUkwsIGtpdCgmZWxlbWVudCksIGxvYWRN
YW51YWxseSk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgICAgICBl
bHNlIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNsYXNzOltXZWJOZXRzY2FwZVBsdWdpblBh
Y2thZ2UgY2xhc3NdXSkgewogICAgICAgICAgICAgICAgIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcgKnBsdWdpblZpZXcgPSBbW1tORVRTQ0FQRV9QTFVHSU5fVklFVyBhbGxvY10KQEAgLTE5ODgs
OCArMTk4MSw4IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgICAgICAgICAgICAg
IFVSTDpwbHVnaW5VUkwKICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNlVVJMCiAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOk1JTUVUeXBlCi0gICAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZUtleXM6YXR0cmlidXRlS2V5cwotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVW
YWx1ZXM6a2l0KHBhcmFtVmFsdWVzKQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlz
OmF0dHJpYnV0ZUtleXMuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVz
OmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgpCiAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYW51YWxseTpsb2FkTWFudWFsbHkKICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDomZWxl
bWVudF0gYXV0b3JlbGVhc2VdOwogCkBAIC0yMDgzLDggKzIwNzYsOCBAQCBSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBXZWJDbwogICAgICAgICAgICAgICAgICAgICBVUkw6bmlsCiAgICAgICAgICAgICAgICAg
ICAgIGJhc2VVUkw6YmFzZVVSTAogICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpNSU1FVHlw
ZQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmtpdChwYXJhbU5hbWVzKQotICAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6a2l0KHBhcmFtVmFsdWVzKQorICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmNyZWF0ZU5TQXJyYXkocGFyYW1OYW1lcykuZ2V0
KCkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmNyZWF0ZU5TQXJyYXkocGFy
YW1WYWx1ZXMpLmdldCgpCiAgICAgICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTpOTwogICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50OiZlbGVtZW50XSBhdXRvcmVsZWFzZV07CiAgICAgICAg
ICAgICAgICAgaWYgKHZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1t
CmluZGV4IDU1ZmIyYmRmYWQxYTVmNzc0YzgyMTIyM2NhNzg2MjgxOWZjMTRkZjAuLmFhYTRhZmI1
ZmNjNmFlYzhjZjRiM2IxZjIxYzgzMjEwYzI3ZDQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgPFdlYkNvcmUv
RmlsZUNob29zZXIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdl
YkNvcmUvSWNvbi5oPgpAQCAtNjQsMTEgKzY1LDcgQEAgLSAodm9pZCljaG9vc2VGaWxlbmFtZXM6
KE5TQXJyYXkgKilmaWxlbmFtZXMKICAgICBBU1NFUlQoX2Nob29zZXIpOwogICAgIGlmICghX2No
b29zZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2ZpbGVuYW1l
cyBjb3VudF07Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXMoY291bnQpOwotICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIG5hbWVzW2ldID0gW2ZpbGVu
YW1lcyBvYmplY3RBdEluZGV4OmldOwotICAgIF9jaG9vc2VyLT5jaG9vc2VGaWxlcyhuYW1lcyk7
CisgICAgX2Nob29zZXItPmNob29zZUZpbGVzKG1ha2VWZWN0b3I8U3RyaW5nPihmaWxlbmFtZXMp
KTsKICAgICBfY2hvb3NlciA9IG51bGxwdHI7CiB9CiAKQEAgLTc2LDcgKzczLDcgQEAgLSAodm9p
ZCljaG9vc2VGaWxlbmFtZXM6KE5TQXJyYXkgKilmaWxlbmFtZXMKIAogLSAodm9pZCljaG9vc2VG
aWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBkaXNwbGF5U3RyaW5nOihOU1N0cmluZyAqKWRp
c3BsYXlTdHJpbmcgaWNvbkltYWdlOihDR0ltYWdlUmVmKWltYWdlUmVmCiB7Ci0gICAgW3NlbGYg
Y2hvb3NlRmlsZW5hbWVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpmaWxlbmFtZV0gZGlzcGxh
eVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTppbWFnZVJlZl07CisgICAgW3NlbGYgY2hv
b3NlRmlsZW5hbWVzOkBbZmlsZW5hbWVdIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29u
SW1hZ2U6aW1hZ2VSZWZdOwogfQogCiAtICh2b2lkKWNob29zZUZpbGVuYW1lczooTlNBcnJheSAq
KWZpbGVuYW1lcyBkaXNwbGF5U3RyaW5nOihOU1N0cmluZyAqKWRpc3BsYXlTdHJpbmcgaWNvbklt
YWdlOihDR0ltYWdlUmVmKWltYWdlUmVmCkBAIC04NSwxMSArODIsNyBAQCAtICh2b2lkKWNob29z
ZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1lcyBkaXNwbGF5U3RyaW5nOihOU1N0cmluZyAq
KWRpc3BsYXlTdAogICAgIGlmICghX2Nob29zZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZl
Y3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIG5hbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW2Zp
bGVuYW1lcyBjb3VudF0pOwotICAgIGZvciAoTlNTdHJpbmcgKmZpbGVuYW1lIGluIGZpbGVuYW1l
cykKLSAgICAgICAgbmFtZXMudW5jaGVja2VkQXBwZW5kKGZpbGVuYW1lKTsKLSAgICBfY2hvb3Nl
ci0+Y2hvb3NlTWVkaWFGaWxlcyhuYW1lcywgZGlzcGxheVN0cmluZywgSWNvbjo6Y3JlYXRlSWNv
bkZvckltYWdlKGltYWdlUmVmKS5nZXQoKSk7CisgICAgX2Nob29zZXItPmNob29zZU1lZGlhRmls
ZXMobWFrZVZlY3RvcjxTdHJpbmc+KGZpbGVuYW1lcyksIGRpc3BsYXlTdHJpbmcsIEljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZShpbWFnZVJlZikuZ2V0KCkpOwogICAgIF9jaG9vc2VyID0gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQppbmRl
eCA5MzQzNzU3YWE1ZGNjMGNiMjFmODExMDIxZjQ0NGMyMjNkMGU1MGU3Li45M2JlZDY5YTE0NzM4
ZjgzNjFiMWY4Njc2MDNmZjgxMWRiMDU5ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlci5tbQpAQCAtNDAsNyArNDAsNyBAQCBXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlcjo6V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyAqd2ViVmll
dykKIHsKIH0KIAotdm9pZCBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFuZGxlU2Vs
ZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQpCit2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVT
ZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIC8qdGVsZXBob25lTnVtYmVycyovLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07
CiAgICAgaWYgKCFwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggYmQ5YTY3ODFiYmVhMDYxMWUyZTRkNzA0OTYwODZjZWZkNThiMTE0Yi4uMmFi
YmQ5MjRiN2VhMDBkYTMwMzk4MmUxMGQ0NjBjNTFhYmM4MjMxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMDgsNiArMTA4LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldl
Yk1haWxEZWxlZ2F0ZS5oIgpAQCAtMTA5MSw2ICsxMDkyLDcgQEAgLSAoV2ViRnJhbWVMb2FkVHlw
ZSlfbG9hZFR5cGUKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKIC0gKEJPT0wpbmVl
ZHNMYXlvdXQKIHsKICAgICAvLyBOZWVkZWQgZm9yIE1haWwgPHJkYXI6Ly9wcm9ibGVtLzYyMjgw
Mzg+CkBAIC0xMTA3LDM5ICsxMTA5LDI2IEBAIC0gKEJPT0wpX2xvYWRzU3luY2hyb25vdXNseQog
ICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5sb2Fkc1N5bmNocm9ub3Vz
bHkoKTsKIH0KIAotLy8gRklYTUU6IHNlbGVjdGlvbgotCiAtIChOU0FycmF5ICopX3JlY3RzRm9y
UmFuZ2U6KERPTVJhbmdlICopZG9tUmFuZ2UKIHsKICAgICBhdXRvKiByYW5nZSA9IGNvcmUoZG9t
UmFuZ2UpOwotICAgIAorICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBAW107CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGludFJlY3RzOwogICAgIHJhbmdlLT5hYnNvbHV0ZVRl
eHRSZWN0cyhpbnRSZWN0cywgTk8pOwotICAgIHVuc2lnbmVkIHNpemUgPSBpbnRSZWN0cy5zaXpl
KCk7Ci0gICAgCi0gICAgTlNNdXRhYmxlQXJyYXkgKnJlY3RBcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7Ci0gICAgICAgIFtyZWN0QXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVl
V2l0aFJlY3Q6KENHUmVjdCApaW50UmVjdHNbaV1dXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHJlY3RBcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShpbnRSZWN0cykuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilfc2VsZWN0aW9uUmFuZ2VGb3JGaXJzdFBvaW50OihD
R1BvaW50KWZpcnN0IHNlY29uZFBvaW50OihDR1BvaW50KXNlY29uZAogewotICAgIFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbiBmaXJzdFBvcyA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dDpmaXJzdF07Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHNlY29uZFBvcyA9IFtzZWxm
IF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpzZWNvbmRdOwotICAgIFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uKGZpcnN0UG9zLCBzZWNvbmRQb3MpOwotICAgIERPTVJhbmdlICpy
YW5nZSA9IGtpdChzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJhbmdlOyAgICAKKyAgICBhdXRvIGZpcnN0UG9zaXRpb24gPSBbc2VsZiBfdmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQ6Zmlyc3RdOworICAgIGF1dG8gc2Vjb25kUG9zaXRpb24gPSBbc2VsZiBf
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6c2Vjb25kXTsKKyAgICByZXR1cm4ga2l0KFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbiwgc2Vjb25kUG9zaXRpb24pLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAtIChET01SYW5nZSAqKV9zZWxlY3Rpb25SYW5nZUZv
clBvaW50OihDR1BvaW50KXBvaW50CiB7Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHBv
cyA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpwb2ludF07Ci0gICAgV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ocG9zKTsKLSAgICBET01SYW5nZSAqcmFuZ2UgPSBr
aXQoc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwotICAgIHJldHVybiByYW5n
ZTsKKyAgICByZXR1cm4ga2l0KFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24oW3NlbGYgX3Zpc2li
bGVQb3NpdGlvbkZvclBvaW50OnBvaW50XSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjI3MSwyMSArMjI2MCwyMSBA
QCAtIChOU0FycmF5ICopX2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjooZmxv
YXQpcHJpbnRTY2FsZUZhY3RvciBwYWdlUwogewogICAgIGlmIChwcmludFNjYWxlRmFjdG9yIDw9
IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJwcmludFNjYWxlRmFjdG9yIGhhcyBiYWQgdmFsdWUg
JS4yZiIsIHByaW50U2NhbGVGYWN0b3IpOwotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgICAgICByZXR1cm4gQFtdOwogICAgIH0KIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVG
cmFtZSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBb
XTsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgaWYgKCFfcHJp
dmF0ZS0+Y29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07
CisgICAgICAgIHJldHVybiBAW107CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lLT52aWV3
KCktPmRvY3VtZW50VmlldygpKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAg
ICAgICByZXR1cm4gQFtdOwogCiAgICAgYXV0byogcm9vdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAKICAgICBjb25zdCBhdXRv
JiBkb2N1bWVudFJlY3QgPSByb290LT5kb2N1bWVudFJlY3QoKTsKICAgICBmbG9hdCBwcmludFdp
ZHRoID0gcm9vdC0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRvY3VtZW50UmVjdC53aWR0aCgpKSAvIHByaW50U2NhbGVGYWN0b3IgOiBwYWdl
U2l6ZS53aWR0aDsKQEAgLTIyOTMsMTMgKzIyODIsNyBAQCAtIChOU0FycmF5ICopX2NvbXB1dGVQ
YWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjooZmxvYXQpcHJpbnRTY2FsZUZhY3RvciBwYWdl
UwogCiAgICAgV2ViQ29yZTo6UHJpbnRDb250ZXh0IHByaW50Q29udGV4dChfcHJpdmF0ZS0+Y29y
ZUZyYW1lKTsKICAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShX
ZWJDb3JlOjpGbG9hdFNpemUocHJpbnRXaWR0aCwgcHJpbnRIZWlnaHQpLCB0cnVlKTsKLSAgICBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cyA9IHByaW50Q29udGV4dC5w
YWdlUmVjdHMoKTsKLQotICAgIHNpemVfdCBzaXplID0gcGFnZVJlY3RzLnNpemUoKTsKLSAgICBO
U011dGFibGVBcnJheSAqcGFnZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
c2l6ZV07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtw
YWdlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU1JlY3QocGFnZVJlY3RzW2ld
KV1dOwotICAgIHJldHVybiBwYWdlczsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShwcmludENv
bnRleHQucGFnZVJlY3RzKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMjYyMyw3ICsyNjA2LDcgQEAgLSAoTlNBcnJheSAqKWNoaWxkRnJhbWVzCiB7
CiAgICAgYXV0byBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29y
ZUZyYW1lKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4g
QFtdOwogICAgIE5TTXV0YWJsZUFycmF5ICpjaGlsZHJlbiA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpjb3JlRnJhbWUtPnRyZWUoKS5jaGlsZENvdW50KCldOwogICAgIGZvciAo
V2ViQ29yZTo6RnJhbWUqIGNoaWxkID0gY29yZUZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIFtjaGls
ZHJlbiBhZGRPYmplY3Q6a2l0KGNoaWxkKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1YmEyZTc4MDQ2ZjQ2ODA3ZDE4ZWI0MTg3NzNh
ZThiMjE0MjFmZmUyLi5jOTE1NWIxNmNkZjA3ZWIxYzlhZDBjNGFiYTBlOTI4MzQ3NDNjNTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAg
LTE0OSw2ICsxNDksNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9T
eXN0ZW1UcmFjaW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCAiV2Vi
TlNFdmVudEV4dHJhcy5oIgpAQCAtMTk5NSw3ICsxOTk2LDcgQEAgKyAoTlNBcnJheSAqKV9pbnNl
cnRhYmxlUGFzdGVib2FyZFR5cGVzCiArIChOU0FycmF5ICopX3NlbGVjdGlvblBhc3RlYm9hcmRU
eXBlcwogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHV0IGRhdGEgZm9yIE5TSFRNTFBib2Fy
ZFR5cGUgb24gdGhlIHBhc3RlYm9hcmQgYnV0IE1pY3Jvc29mdCBFeGNlbCBkb2Vzbid0IGxpa2Ug
b3VyIGZvcm1hdCBvZiBIVE1MICgzNjQwNDIzKS4KLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5pbF07CisgICAgcmV0dXJuIEBbV2ViQXJj
aGl2ZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVH
SU4KQEAgLTQ0MDQsNyArNDQwNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIGlmIChkcmFnZ2luZ0VsZW1lbnRVUkwpCiAgICAgICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDpbZHJhZ2dpbmdFbGVtZW50
VVJMIGFic29sdXRlU3RyaW5nXSByZWZlcnJlcjpuaWwgYXRQYXRoOnBhdGhdOwogICAgIAotICAg
IHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRd
XTsKKyAgICByZXR1cm4gQFtbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQogCiAvLyBNQVJL
OiBOU0RyYWdnaW5nU291cmNlCkBAIC00ODgxLDcgKzQ4ODIsNyBAQCAtIChCT09MKWtub3dzUGFn
ZVJhbmdlOihOU1JhbmdlUG9pbnRlcilyYW5nZQogICAgIC8vIGEgYmxhbmsgcGFnZSAod2l0aCBj
b3JyZWN0LWxvb2tpbmcgaGVhZGVyIGFuZCBmb290ZXIgaWYgdGhhdCBvcHRpb24gaXMgb24pLCB3
aGljaCBtYXRjaGVzCiAgICAgLy8gdGhlIGJlaGF2aW9yIG9mIElFIGFuZCBDYW1pbm8gYXQgbGVh
c3QuCiAgICAgaWYgKFtuZXdQYWdlUmVjdHMgY291bnRdID09IDApCi0gICAgICAgIG5ld1BhZ2VS
ZWN0cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5T
TWFrZVJlY3QoMCwgMCwgMSwgMSldXTsKKyAgICAgICAgbmV3UGFnZVJlY3RzID0gQFtbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgMSwgMSldXTsKIAogICAgIF9wcml2YXRl
LT5wYWdlUmVjdHMgPSBuZXdQYWdlUmVjdHM7CiAKQEAgLTUwMTksNyArNTAyMCw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAg
ICAgICBpZCBhY2NUcmVlID0gW1tzZWxmIF9mcmFtZV0gYWNjZXNzaWJpbGl0eVJvb3RdOwogICAg
ICAgICBpZiAoYWNjVHJlZSkKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6YWNjVHJlZV07CisgICAgICAgICAgICByZXR1cm4gQFthY2NUcmVlXTsKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICB9CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6YXR0cmlidXRlTmFtZV07CkBAIC01MjkyLDcgKzUyOTMsNyBAQCAtICh2b2lkKWNv
cHlGb250OihpZClzZW5kZXIKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICBOU1Bhc3RlYm9hcmQgKmZvbnRQYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBw
YXN0ZWJvYXJkV2l0aE5hbWU6TlNGb250UGJvYXJkXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICBbZm9udFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKV0gb3du
ZXI6bmlsXTsKKyAgICBbZm9udFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbV2ViQ29yZTo6bGVn
YWN5Rm9udFBhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CiAgICAgW2ZvbnRQYXN0ZWJvYXJk
IHNldERhdGE6W3NlbGYgX3NlbGVjdGlvblN0YXJ0Rm9udEF0dHJpYnV0ZXNBc1JURl0gZm9yVHlw
ZTpXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKV07CiB9CiAKQEAgLTYwMjMsNyAr
NjAyNCw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihOYWtlZFB0cjxXZWJDb3JlOjpL
ZXlib2FyZEV2ZW50PilldmVudCBzYXZpbmdDb21tYW5kCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhl
IGNhbGxzIGltbWVkaWF0ZWx5LiBET00gZXZlbnRzIGxpa2Uga2V5ZG93biBhcmUgdHdlYWtlZCB0
byBoYXZlIGtleUNvZGUgb2YgMjI5LCBhbmQgY2FuY2VsaW5nIHRoZW0gaGFzIG5vIGVmZmVjdC4K
ICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlcmUgaXMgbm8gcmVhbCBkaWZmZXJlbmNlIGJl
dHdlZW4gcGxhaW4gdGV4dCBpbnB1dCBhbmQgSU0gcHJvY2Vzc2luZyAtIGZvciBleGFtcGxlLCBB
cHBLaXQgcXVlcmllcyBoYXNNYXJrZWRUZXh0CiAgICAgICAgIC8vIHdoZW4gdHlwaW5nIHdpdGgg
VS5TLiBrZXlib2FyZCwgYW5kIGluc2VydHMgbWFya2VkIHRleHQgZm9yIGRlYWQga2V5cy4KLSAg
ICAgICAgW3NlbGYgaW50ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpt
YWNFdmVudF1dOworICAgICAgICBbc2VsZiBpbnRlcnByZXRLZXlFdmVudHM6QFttYWNFdmVudF1d
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFyZSB0aGVyZSBjb21tYW5kcyB0aGF0IGNvdWxk
IGp1c3QgY2F1c2UgdGV4dCBpbnNlcnRpb24gaWYgZXhlY3V0ZWQgdmlhIEVkaXRvcj8KICAgICAg
ICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0
byBkZWNpZGUgaG93IHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQsIHNvIHdlIGxlYXZlIGl0IHVwb24g
V2ViQ29yZQpAQCAtNjgzNCwxOCArNjgzNSwxMCBAQCAtIChOU0FycmF5ICopc2VsZWN0aW9uVGV4
dFJlY3RzCiAgICAgaWYgKCFbc2VsZiBfaGFzU2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IGxpc3Q7CisgICAgVmVjdG9yPFdl
YkNvcmU6OkZsb2F0UmVjdD4gcmVjdHM7CiAgICAgaWYgKGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuZ2V0Q2xpcHBl
ZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhsaXN0KTsKLQotICAgIHNpemVfdCBzaXplID0gbGlzdC5z
aXplKCk7Ci0KLSAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5V2l0aENhcGFjaXR5OnNpemVdOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6
bGlzdFtpXV1dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY29yZUZyYW1lLT5zZWxl
Y3Rpb24oKS5nZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKHJlY3RzKTsKKyAgICByZXR1
cm4gY3JlYXRlTlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNWaWV3ICop
c2VsZWN0aW9uVmlldwpAQCAtNzEzMSwxNyArNzEyNCwxMiBAQCAtIChOU0FycmF5ICopcmVjdHNG
b3JUZXh0TWF0Y2hlcwogewogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07
CisgICAgICAgIHJldHVybiBAW107CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IHJlY3RzID0gZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW5kZXJlZFJlY3RzRm9yTWFya2VycyhX
ZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKLSAgICB1bnNpZ25lZCBjb3VudCA9
IHJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OmNvdW50XTsKLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6W05T
VmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0c1tpbmRleF1dXTsgICAgCi0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShkb2N1bWVudC0+bWFya2VycygpLnJlbmRlcmVk
UmVjdHNGb3JNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpKS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtIChCT09MKV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBv
cHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQppbmRleCBlNGQwNjQy
OWQ5ZWMzZDk2NzU2ZTVmYTJiNjVjMGU4ZWE2NzM4YjQ0Li5lYmNhM2IwODRlNmI1ZjAxYTNiNWNm
ZGFmZTdjYTFhZWMyOTRkMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KQEAgLTM5LDI1ICszOSwyNSBAQAog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiBAaW1wbGVtZW50YXRpb24gV2ViUERGUmVwcmVzZW50YXRpb24KIAogKyAoTlNBcnJheSAq
KXBvc3RTY3JpcHRNSU1FVHlwZXMKIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAgQCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwK
LSAgICAgICAgbmlsXTsKKyAgICBdOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5
cGVzCiB7CiAgICAgcmV0dXJuIFtbW3NlbGYgY2xhc3NdIHBvc3RTY3JpcHRNSU1FVHlwZXNdIGFy
cmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OgotICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOgorICAgICAgICBAWwogICAgICAgICAgICAgQCJ0ZXh0L3BkZiIsCiAgICAgICAgICAg
ICBAImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICAgICBuaWxdXTsKKyAgICAgICAgXQorICAg
IF07CiB9CiAKICsgKENsYXNzKVBERkRvY3VtZW50Q2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCBlYzdiZWZjOGU1YzE4NDVjZjc5M2Uw
ZWFkYWI2ZDAzZGI3ZTNmNGFjLi43MTBjOTdiYjA0YWI0Zjk0MjgwMDIzZDkxMWUyZjEwNGUwNzZl
M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CkBAIC01OTAsMTMgKzU5MCwxMCBAQCAtICh2b2lkKXZpZXdEaWRNb3ZlVG9Ib3N0V2luZG93CiAK
IC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50CiB7Ci0gICAg
V2ViRnJhbWUgKmZyYW1lID0gW2RhdGFTb3VyY2Ugd2ViRnJhbWVdOwotICAgIEFTU0VSVChmcmFt
ZSk7Ci0gICAgCi0gICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgZnJhbWUsIFdlYkVsZW1lbnRGcmFtZUtleSwgCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpbc2VsZiBfcG9pbnRJc0luU2VsZWN0aW9uOnBvaW50XV0s
IFdlYkVsZW1lbnRJc1NlbGVjdGVkS2V5LAotICAgICAgICBuaWxdOworICAgIHJldHVybiBAewor
ICAgICAgICBXZWJFbGVtZW50RnJhbWVLZXk6IFtkYXRhU291cmNlIHdlYkZyYW1lXSwKKyAgICAg
ICAgV2ViRWxlbWVudElzU2VsZWN0ZWRLZXk6IEAoW3NlbGYgX3BvaW50SXNJblNlbGVjdGlvbjpw
b2ludF0pLAorICAgIH07CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihO
U1BvaW50KXBvaW50IGFsbG93U2hhZG93Q29udGVudDooQk9PTClhbGxvdwpAQCAtNzk1LDEwICs3
OTIsMTAgQEAgLSAoaWQpdmlld1N0YXRlCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnN0YXRlID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjRdOwogICAgIFBERkRpc3BsYXlNb2Rl
IG1vZGUgPSBbUERGU3VidmlldyBkaXNwbGF5TW9kZV07Ci0gICAgW3N0YXRlIGFkZE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RlXV07CisgICAgW3N0YXRlIGFkZE9iamVjdDpAKG1v
ZGUpXTsKICAgICBpZiAobW9kZSA9PSBrUERGRGlzcGxheVNpbmdsZVBhZ2UgfHwgbW9kZSA9PSBr
UERGRGlzcGxheVR3b1VwKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlSW5kZXggPSBbW1BE
RlN1YnZpZXcgZG9jdW1lbnRdIGluZGV4Rm9yUGFnZTpbUERGU3VidmlldyBjdXJyZW50UGFnZV1d
OwotICAgICAgICBbc3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJ
bnQ6cGFnZUluZGV4XV07CisgICAgICAgIFtzdGF0ZSBhZGRPYmplY3Q6QChwYWdlSW5kZXgpXTsK
ICAgICB9ICAvLyBlbHNlIGluIGNvbnRpbnVvdXMgbW9kZXMsIHNjcm9sbCBwb3NpdGlvbiBnZXRz
IHVzIHRvIHRoZSByaWdodCBwYWdlCiAgICAgQk9PTCBhdXRvU2NhbGVGbGFnID0gW1BERlN1YnZp
ZXcgYXV0b1NjYWxlc107CiAgICAgW3N0YXRlIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6YXV0b1NjYWxlRmxhZ11dOwpAQCAtODgyLDcgKzg3OSw3IEBAIC0gKE5TUmVjdClzZWxl
Y3Rpb25SZWN0CiAtIChOU0FycmF5ICopc2VsZWN0aW9uVGV4dFJlY3RzCiB7CiAgICAgLy8gRklY
TUU6IFdlJ2QgbmVlZCBuZXcgUERGS2l0IEFQSS9TUEkgdG8gZ2V0IG11bHRpcGxlIHRleHQgcmVj
dHMgZm9yIHNlbGVjdGlvbnMgdGhhdCBpbnRlcnNlY3QgbW9yZSB0aGFuIG9uZSBsaW5lCi0gICAg
cmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Oltz
ZWxmIHNlbGVjdGlvblJlY3RdXV07CisgICAgcmV0dXJuIEBbW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpbc2VsZiBzZWxlY3Rpb25SZWN0XV1dOwogfQogCiAtIChOU1ZpZXcgKilzZWxlY3Rpb25WaWV3
CkBAIC05MjYsNyArOTIzLDcgQEAgLSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdAogCiAtIChO
U0FycmF5ICopcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCksIG5pbF07CisgICAgcmV0dXJuIEBbV2ViQ29yZTo6bGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogfQogCiAtICh2b2lkKXdyaXRl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2Fy
ZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtMTEyNCwyMiArMTEyMSwyMyBAQCBzdGF0
aWMgdm9pZCByZW1vdmVVc2VsZXNzTWVudUl0ZW1TZXBhcmF0b3JzKE5TTXV0YWJsZUFycmF5ICpt
ZW51SXRlbXMpCiAtIChOU011dGFibGVBcnJheSAqKV9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZl
bnQ6KE5TRXZlbnQgKil0aGVFdmVudAogewogICAgIE5TTXV0YWJsZUFycmF5ICpjb3BpZWRJdGVt
cyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zVG9U
YWdzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5kZWNsYXJlZC1zZWxlY3RvciIpCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZV0sIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKSwKLSAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZab29tSW5dLCBOU1N0cmluZ0Zyb21TZWxlY3Rv
cihAc2VsZWN0b3Ioem9vbUluOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpX
ZWJNZW51SXRlbVBERlpvb21PdXRdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9v
bU91dDopKSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZB
dXRvU2l6ZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0b1NpemU6KSks
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGU2luZ2xlUGFn
ZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZTopKSwKLSAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlU2Ny
b2xsaW5nXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlU2Ny
b2xsaW5nOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBE
RkZhY2luZ1BhZ2VzXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQ
YWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERkZh
Y2luZ1BhZ2VzU2Nyb2xsaW5nXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRE
b3VibGVQYWdlU2Nyb2xsaW5nOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpX
ZWJNZW51SXRlbVBERkNvbnRpbnVvdXNdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Io
X3RvZ2dsZUNvbnRpbnVvdXM6KSksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50Oldl
Yk1lbnVJdGVtUERGTmV4dFBhZ2VdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29U
b05leHRQYWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRl
bVBERlByZXZpb3VzUGFnZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvUHJl
dmlvdXNQYWdlOikpLAotSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIE5TRGljdGlvbmFyeSAqYWN0
aW9uc1RvVGFncyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICBAKFdlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZSksIE5TU3RyaW5nRnJvbVNlbGVj
dG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBE
Rlpvb21JbiksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tSW46KSksCisgICAg
ICAgIEAoV2ViTWVudUl0ZW1QREZab29tT3V0KSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVj
dG9yKHpvb21PdXQ6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZBdXRvU2l6ZSksIE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0b1NpemU6KSksCisgICAgICAgIEAoV2Vi
TWVudUl0ZW1QREZTaW5nbGVQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9z
ZXRTaW5nbGVQYWdlOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGU2luZ2xlUGFnZVNjcm9s
bGluZyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZVNjcm9s
bGluZzopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2VzKSwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlOikpLAorICAgICAgICBAKFdlYk1l
bnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2Vs
ZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1Q
REZDb250aW51b3VzKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF90b2dnbGVDb250
aW51b3VzOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGTmV4dFBhZ2UpLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub05leHRQYWdlOikpLAorICAgICAgICBAKFdlYk1lbnVJ
dGVtUERGUHJldmlvdXNQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9Q
cmV2aW91c1BhZ2U6KSksCiAgICAgICAgIG5pbF07Ci0gICAgCitJR05PUkVfV0FSTklOR1NfRU5E
CisKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0ZW1zIG91dCwgc2luY2UgV2ViS2l0IGluc2Vy
dHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQgd2UgbGVhdmUgb3V0IFBERktpdCdzICJMb29r
IFVwIGluIERpY3Rpb25hcnkiCiAgICAgLy8gaXRlbSBoZXJlIGJlY2F1c2UgV2ViS2l0IGFscmVh
ZHkgaW5jbHVkZXMgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIHRpdGxlIGFuZCBwdXJwb3NlLiBXZSBt
YXAgV2ViS2l0J3MgdG8gUERGS2l0J3MgCiAgICAgLy8gIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIg
dmlhIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYlBERlZpZXcgX2xvb2tVcEluRGljdGlvbmFy
eUZyb21NZW51Ol0uCkBAIC0xMjY1LDIwICsxMjYzLDEzIEBAIC0gKHZvaWQpX29wZW5XaXRoRmlu
ZGVyOihpZClzZW5kZXIKICAgICBpZiAob3BhdGgpIHsKICAgICAgICAgaWYgKCF3cml0dGVuKSB7
CiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBQREYgZmlsZSB3aXRoIHRoZSBtaW5pbWFsIHBlcm1p
c3Npb25zIChvbmx5IGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlciwgc2VlIDQxNDU3MTQp
Ci0gICAgICAgICAgICBOU051bWJlciAqcGVybWlzc2lvbnMgPSBbW05TTnVtYmVyIGFsbG9jXSBp
bml0V2l0aEludDpTX0lSVVNSXTsKLSAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZmlsZUF0dHJp
YnV0ZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpwZXJt
aXNzaW9ucywgTlNGaWxlUG9zaXhQZXJtaXNzaW9ucywgbmlsXTsKLSAgICAgICAgICAgIFtwZXJt
aXNzaW9ucyByZWxlYXNlXTsKLQotICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVGaWxlQXRQYXRoOm9wYXRoIGNvbnRlbnRzOltkYXRhU291cmNlIGRhdGFd
IGF0dHJpYnV0ZXM6ZmlsZUF0dHJpYnV0ZXNdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBb
ZmlsZUF0dHJpYnV0ZXMgcmVsZWFzZV07CisgICAgICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNyZWF0ZUZpbGVBdFBhdGg6b3BhdGggY29udGVudHM6W2RhdGFTb3VyY2Ug
ZGF0YV0gYXR0cmlidXRlczpAeyBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zOiBAKFNfSVJVU1IpIH1d
OwogICAgICAgICAgICAgd3JpdHRlbiA9IFlFUzsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKCFbW05T
V29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZpbGU6b3BhdGhdKSB7Ci0gICAgICAgICAg
ICAvLyBOU1dvcmtzcGFjZSBjb3VsZG4ndCBvcGVuIGZpbGUuICBEbyB3ZSBuZWVkIGFuIGFsZXJ0
Ci0gICAgICAgICAgICAvLyBoZXJlPyAgV2UgaWdub3JlIHRoZSBlcnJvciBlbHNld2hlcmUuCisg
ICAgICAgICAgICAvLyBOU1dvcmtzcGFjZSBjb3VsZG4ndCBvcGVuIGZpbGUuIERvIHdlIG5lZWQg
YW4gYWxlcnQgaGVyZT8gV2UgaWdub3JlIHRoZSBlcnJvciBlbHNld2hlcmUuCiAgICAgICAgIH0K
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQpAQCAtMTM0
NSwxMiArMTMzNiw3IEBAIC0gKFBERlZpZXcgKilfUERGU3VidmlldwogLSAoQk9PTClfcG9pbnRJ
c0luU2VsZWN0aW9uOihOU1BvaW50KXBvaW50CiB7CiAgICAgUERGUGFnZSAqcGFnZSA9IFtQREZT
dWJ2aWV3IHBhZ2VGb3JQb2ludDpwb2ludCBuZWFyZXN0Ok5PXTsKLSAgICBpZiAoIXBhZ2UpCi0g
ICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICBOU1JlY3Qgc2VsZWN0aW9uUmVjdCA9IFtQREZT
dWJ2aWV3IGNvbnZlcnRSZWN0OltbUERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBib3VuZHNG
b3JQYWdlOnBhZ2VdIGZyb21QYWdlOnBhZ2VdOwotICAgIAotICAgIHJldHVybiBOU1BvaW50SW5S
ZWN0KHBvaW50LCBzZWxlY3Rpb25SZWN0KTsKKyAgICByZXR1cm4gcGFnZSAmJiBOU1BvaW50SW5S
ZWN0KHBvaW50LCBbUERGU3VidmlldyBjb252ZXJ0UmVjdDpbW1BERlN1YnZpZXcgY3VycmVudFNl
bGVjdGlvbl0gYm91bmRzRm9yUGFnZTpwYWdlXSBmcm9tUGFnZTpwYWdlXSk7CiB9CiAKIC0gKHZv
aWQpX3NjYWxlT3JEaXNwbGF5TW9kZU9yUGFnZUNoYW5nZWQ6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQppbmRleCAwMjc5Mzk0MzA4MDQ2YjhhMjgzYWI2YWEzNjA0ODI5YWIyOWZkMWI3
Li4xODA5MjljNGQxZjY5N2Y3MDQxOThjM2Q5YzhjODUyYmQ2ZGU2OWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTQ2NSwx
NyArNDY1LDE2IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAIjAiLCBXZWJLaXRQREZT
Y2FsZUZhY3RvclByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgQCIwIiwgV2ViS2l0VXNl
U2l0ZVNwZWNpZmljU3Bvb2ZpbmdQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpXZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3JdLCBXZWJLaXRFZGl0
YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXksCisgICAgICAgIEAoV2ViS2l0RWRpdGFibGVM
aW5rRGVmYXVsdEJlaGF2aW9yKSwgV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNl
S2V5LAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpXZWJUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9tYXRpY2FsbHlJbmNsdWRlZF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VGV4dERpcmVjdGlv
blN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXksCisgICAgICAgIEAoV2ViVGV4
dERpcmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQpLCBXZWJLaXRUZXh0RGlyZWN0
aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICAgICAgICAgQE5PLCBX
ZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LAogI2VuZGlmCiAgICAgICAgIEBZRVMs
IFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSgpXSwgV2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXksCisgICAgICAgIEAoY2FjaGVNb2RlbEZvck1haW5CdW5kbGUoKSksIFdlYktp
dENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBXZWJLaXRQYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdERldmVsb3Bl
ckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aFVuc2lnbmVkSW50OjBdLCBXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5jZUtl
eSwKKyAgICAgICAgQCgwKSwgV2ViS2l0SmF2YVNjcmlwdFJ1bnRpbWVGbGFnc1ByZWZlcmVuY2VL
ZXksCiAgICAgICAgIEBZRVMsIFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0RE9NVGltZXJzVGhyb3R0bGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFi
bGVkUHJlZmVyZW5jZUtleSwKQEAgLTUxMSw5ICs1MTAsOSBAQCArICh2b2lkKWluaXRpYWxpemUK
ICAgICAgICAgQFlFUywgV2ViS2l0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFt
ZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJl
bmNlS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6
OkZ1bGx5RW5hYmxlZCkpLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LAogI2Vs
c2UKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpzdGF0aWNfY2FzdDx1
aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpEaXNhYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5p
bmdQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZs
YXR0ZW5pbmc6OkRpc2FibGVkKSksIFdlYktpdEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXks
CiAjZW5kaWYKICAgICAgICAgQE5PLCBXZWJLaXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
UHJlZmVyZW5jZUtleSwKQEAgLTU0NCw3ICs1NDMsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tB
ZnRlckZ1bGxzY3JlZW5dLCBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxs
c2NyZWVuUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnJl
cXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVdLCBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNrUmVx
dWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRNZWRpYUNv
bnRyb2xzU2NhbGVXaXRoUGFnZVpvb21QcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aFVuc2lnbmVkSW50OkF1ZGlvU2Vzc2lvbjo6Tm9uZV0sIFdlYktpdEF1ZGlvU2Vz
c2lvbkNhdGVnb3J5T3ZlcnJpZGUsCisgICAgICAgIEAoQXVkaW9TZXNzaW9uOjpOb25lKSwgV2Vi
S2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSwKICAgICAgICAgQE5PLCBXZWJLaXRNZWRp
YURhdGFMb2Fkc0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5LAogI2lmIEhBVkUoQVZLSVQpCiAg
ICAgICAgIEBZRVMsIFdlYktpdEFWS2l0RW5hYmxlZCwKQEAgLTU3MCw3ICs1NjksNyBAQCArICh2
b2lkKWluaXRpYWxpemUKICAgICAgICAgQFlFUywgV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1l
RW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0V2FudHNCYWxhbmNlZFNl
dERlZmVyc0xvYWRpbmdCZWhhdmlvcktleSwKICAgICAgICAgQE5PLCBXZWJLaXREaWFnbm9zdGlj
TG9nZ2luZ0VuYWJsZWRLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYkFs
bG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKKyAgICAgICAg
QChXZWJBbGxvd0FsbFN0b3JhZ2UpLCBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXksCiAg
ICAgICAgIEBOTywgV2ViS2l0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTc5LDcgKzU3OCw3IEBAICsgKHZvaWQp
aW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Oi0xLjBmXSwgV2Vi
S2l0TWF4UGFyc2VEdXJhdGlvblByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0QWxs
b3dNdWx0aUVsZW1lbnRJbXBsaWNpdEZvcm1TdWJtaXNzaW9uUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgQE5PLCBXZWJLaXRBbHdheXNSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uUHJlZmVyZW5j
ZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3RhdGljX2Nhc3Q8aW50PihJ
bnRlcnBvbGF0aW9uUXVhbGl0eTo6TG93KV0sIFdlYktpdEludGVycG9sYXRpb25RdWFsaXR5UHJl
ZmVyZW5jZUtleSwKKyAgICAgICAgQChzdGF0aWNfY2FzdDxpbnQ+KEludGVycG9sYXRpb25RdWFs
aXR5OjpMb3cpKSwgV2ViS2l0SW50ZXJwb2xhdGlvblF1YWxpdHlQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBAWUVTLCBXZWJLaXRQYXNzd29yZEVjaG9FbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDoyLjBmXSwgV2ViS2l0UGFzc3dvcmRFY2hvRHVy
YXRpb25QcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdE5ldHdvcmtEYXRhVXNhZ2VU
cmFja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtODUwLDcgKzg0OSw3IEBAIC0gKHZvaWQp
X3NldFVuc2lnbmVkSW50VmFsdWU6KHVuc2lnbmVkIGludCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5CiAgICAgfSk7CiAjZW5kaWYKICAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKLSAg
ICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6dmFsdWVdIGZvcktleTpfa2V5XTsKKyAgICAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OkAodmFs
dWUpIGZvcktleTpfa2V5XTsKICAgICBbc2VsZiBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlm
aWNhdGlvbl07CiB9CiAKQEAgLTE4MDgsNyArMTgwNyw3IEBAIC0gKHZvaWQpc2V0RWRpdGFibGVM
aW5rQmVoYXZpb3I6KFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yKWJlaGF2aW9yCiAKIC0gKFdl
YlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IpdGV4dERpcmVjdGlvblN1Ym1l
bnVJbmNsdXNpb25CZWhhdmlvcgogewotICAgIFdlYlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVz
aW9uQmVoYXZpb3IgdmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJUZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yPihbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdFRleHREaXJl
Y3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JQcmVmZXJlbmNlS2V5XSk7CisgICAgYXV0byB2
YWx1ZSA9IHN0YXRpY19jYXN0PFdlYlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZp
b3I+KFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXldKTsKICAgICBpZiAodmFsdWUgIT0gV2ViVGV4
dERpcmVjdGlvblN1Ym1lbnVOZXZlckluY2x1ZGVkICYmCiAgICAgICAgIHZhbHVlICE9IFdlYlRl
eHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkICYmCiAgICAgICAgIHZhbHVl
ICE9IFdlYlRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlzSW5jbHVkZWQpIHsKQEAgLTE5NDMsNyAr
MTk0Miw3IEBAICsgKENGU3RyaW5nRW5jb2RpbmcpX3N5c3RlbUNGU3RyaW5nRW5jb2RpbmcKICsg
KHZvaWQpX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZwogewog
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZGVmYXVsdFRl
eHRFbmNvZGluZ05hbWVGb3JTeXN0ZW1MYW5ndWFnZSgpIGZvcktleTpXZWJLaXREZWZhdWx0VGV4
dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXldXTsKKyAgICAgICAgQHsgV2ViS2l0RGVmYXVsdFRl
eHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5OiBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5
c3RlbUxhbmd1YWdlKCkgfV07CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJ
RCA9IG5pbDsKQEAgLTI3NTYsOCArMjc1NSw3IEBAIC0gKHZvaWQpc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3RvcmFnZUJsb2NraW5nUG9saWN5CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHdyaXRlIHRo
ZSBzZXR0aW5nIG91dCwgc28gd2UganVzdCByZXNldCB0aGUgZGVmYXVsdCBpbnN0ZWFkIG9mIHN0
b3JpbmcgdGhlIG5ldyBzZXR0aW5nLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgcmVtb3ZlcyBh
bnkgZGVmYXVsdHMgcHJldmlvdXNseSByZWdpc3RlcmVkIGJ5IGNsaWVudCBwcm9jZXNzLCB3aGlj
aCBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIHRoaXMgbWV0aG9kIHRvIGRvLgotICAgIE5TRGljdGlv
bmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6c3RvcmFnZUJsb2NraW5nUG9saWN5XSBmb3JLZXk6V2ViS2l0U3RvcmFn
ZUJsb2NraW5nUG9saWN5S2V5XTsKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOmRpY3RdOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6QHsgV2ViS2l0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5S2V5OiBAKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkgfV07CiAjZWxzZQogICAgIFtz
ZWxmIF9zZXRJbnRlZ2VyVmFsdWU6c3RvcmFnZUJsb2NraW5nUG9saWN5IGZvcktleTpXZWJLaXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3lLZXldOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQppbmRleCBlNjU5ZWYwZmEz
ZmFhMGU2MDE4YTNmNDgxNWQ4OTY0MTNmZTlkMjZkLi4xNDU3Mzk4NzhjNTc5ZmVjNWNhMmRiZDVj
MjExNmM3ZTFmM2IzYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFdlYlNj
cmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgTlNTdHJpbmcq
IG5zRXJyb3JNZXNzYWdlID0gbnNTdHJpbmdOaWxJZkVtcHR5KGVycm9yTXNnKTsKLSAgICAgICAg
TlNEaWN0aW9uYXJ5ICppbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
c0FuZEtleXM6bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXksIFtO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6ZXJyb3JMaW5lXSwgV2ViU2NyaXB0RXJyb3JM
aW5lTnVtYmVyS2V5LCBuaWxdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2Vi
U2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxp
bmVOdW1iZXJLZXksIG5pbF07CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdl
bmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mb107CiAKICAgICAgICAgaWYgKGltcGxlbWVudGF0
aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1t
CmluZGV4IGEzODFkMTBiMjhhM2RlZTk1NDhlYTJlZTQ2OTk2MDU3YTNiMjZlMTYuLjZkMzE3Yjk3
ZDU1YjM1N2JiMjg0ZDk3NzkyMWU0MGE2ZTdkZjBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9s
bGVyLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgLSAodm9pZClfcGxhY2VQb3B1cFdpbmRvdzooTlNQ
b2ludCl0b3BMZWZ0CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
d2luZG93RnJhbWUuc2l6ZS5oZWlnaHQgPSBudW1iZXJUb1Nob3cgKiBbX3RhYmxlVmlldyByb3dI
ZWlnaHRdICsgKG51bWJlclRvU2hvdyArIDEpICogW190YWJsZVZpZXcgaW50ZXJjZWxsU3BhY2lu
Z10uaGVpZ2h0OwogICAgIHdpbmRvd0ZyYW1lLm9yaWdpbi55IC09IHdpbmRvd0ZyYW1lLnNpemUu
aGVpZ2h0OwotICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTIuMGZd
LCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRl
cyA9IEB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxMi4w
Zl0gfTsKICAgICBDR0Zsb2F0IG1heFdpZHRoID0gMDsKICAgICBpbnQgbWF4SW5kZXggPSAtMTsK
ICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1iZXJUb1Nob3c7IGkrKykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQxMTc3N2RiNmUx
NmJlODlkYWQ0ZDdlNjgwZTMxN2I1YjdkZmU1M2EuLjk1ZDBmM2U4ZDY3YTgzNDAxMmFkMDdmNjNl
ZGRjZTI5MDY3M2FmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTI0Myw3ICsyNDMsNiBAQAogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgotI2lt
cG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgogI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KQEAgLTI1NCw2ICsyNTMsNyBAQAogI2ltcG9ydCA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1
ZXVlLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL2R5bGRTUEkuaD4KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjky
Myw3ICsyOTIzLDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNl
cyAqKXByZWZlcmVuY2VzCiAgICAgc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KFtwcmVmZXJlbmNlcyBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHldKTsKICAgICBzZXR0aW5ncy5z
ZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhbcHJlZmVyZW5jZXMg
bG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VdKTsKIAotICAgIFdl
YkNvcmU6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKFdlYkNvcmU6OndlYkNvcmVT
dHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbcHJlZmVyZW5jZXMgYWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXNdKSk7CisgICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMobWFrZVZlY3RvcjxTdHJpbmc+KFtwcmVmZXJlbmNlcyBhZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlc10pKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2V0dGlu
Z3Muc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh0cnVlKTsKQEAgLTQ1MjgsNyArNDUyOCw3IEBA
IC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06KE5TU3RyaW5n
ICopdXNlckludGVyZmFjZUl0ZW0KICAgICAgICAgYXV0byogdmFsaWRhdGlvbkJ1YmJsZSA9IF9w
cml2YXRlLT5mb3JtVmFsaWRhdGlvbkJ1YmJsZS5nZXQoKTsKICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+bWVzc2FnZSgpIDogZW1w
dHlTdHJpbmcoKTsKICAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmFsaWRhdGlvbkJ1YmJsZSA/
IHZhbGlkYXRpb25CdWJibGUtPmZvbnRTaXplKCkgOiAwOwotICAgICAgICByZXR1cm4gQHsgdXNl
ckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9u
dFNpemUiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpmb250U2l6ZV0gfSB9OworICAgICAg
ICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAq
KW1lc3NhZ2UsIEAiZm9udFNpemUiOiBAKGZvbnRTaXplKSB9IH07CiAgICAgfQogCiAgICAgcmV0
dXJuIG5pbDsKQEAgLTQ2NDQsMjIgKzQ2NDQsNiBAQCAtICh2b2lkKV91cGRhdGVBY3RpdmVTdGF0
ZQogI2VuZGlmCiB9CiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0Fy
cmF5KiBwYXR0ZXJucykKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBwYXR0ZXJuc1ZlY3RvcjsKLQot
ICAgIE5TVUludGVnZXIgY291bnQgPSBbcGF0dGVybnMgY291bnRdOwotICAgIGlmICghY291bnQp
Ci0gICAgICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsKLQotICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWQgZW50cnkgPSBbcGF0dGVybnMgb2Jq
ZWN0QXRJbmRleDppXTsKLSAgICAgICAgaWYgKFtlbnRyeSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQotICAgICAgICAgICAgcGF0dGVybnNWZWN0b3IuYXBwZW5kKFN0cmluZygoTlNT
dHJpbmcgKillbnRyeSkpOwotICAgIH0KLSAgICByZXR1cm4gcGF0dGVybnNWZWN0b3I7Ci19Ci0K
ICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3Js
ZDooV2ViU2NyaXB0V29ybGQgKil3b3JsZCBzb3VyY2U6KE5TU3RyaW5nICopc291cmNlIHVybDoo
TlNVUkwgKil1cmwKICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OihOU0FycmF5ICopd2hp
dGVsaXN0IGJsYWNrbGlzdDooTlNBcnJheSAqKWJsYWNrbGlzdAogICAgICAgICAgICAgICAgIGlu
amVjdGlvblRpbWU6KFdlYlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUKQEAg
LTQ2ODEsNyArNDY2NSw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0cmlu
ZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAgICAgaWYgKCF3b3Js
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RB
dERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1l
bnRTdGFydCA6IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgbWFrZVZlY3RvcjxT
dHJpbmc+KHdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihibGFja2xpc3QpLCBpbmplY3Rp
b25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IDogV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWU6OkRvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHksIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vKTsKICAg
ICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
d29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDcwNCw3ICs0Njg4LDcgQEAg
KyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3
b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0
b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBX
ZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCBtYWtlVmVjdG9yPFN0
cmluZz4od2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGJsYWNrbGlzdCksIGluamVjdGVk
RnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHls
ZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgV2ViQ29yZTo6SW5qZWN0
SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAgLTY3MzcsNyArNjcyMSw3IEBAIC0gKE5TRGlj
dGlvbmFyeSAqKV9lbGVtZW50QXRXaW5kb3dQb2ludDooTlNQb2ludCl3aW5kb3dQb2ludAogICAg
ICAgICBOU1BvaW50IHBvaW50ID0gW2RvY3VtZW50VmlldyBjb252ZXJ0UG9pbnQ6d2luZG93UG9p
bnQgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgcmV0dXJuIFsoTlNWaWV3IDxXZWJEb2N1bWVudEVs
ZW1lbnQ+ICopZG9jdW1lbnRWaWV3IGVsZW1lbnRBdFBvaW50OnBvaW50XTsKICAgICB9Ci0gICAg
cmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W2ZyYW1lVmlldyB3ZWJG
cmFtZV0gZm9yS2V5OldlYkVsZW1lbnRGcmFtZUtleV07CisgICAgcmV0dXJuIEB7IFdlYkVsZW1l
bnRGcmFtZUtleTogW2ZyYW1lVmlldyB3ZWJGcmFtZV0gfTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5
ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKQEAgLTcwMjUsNyArNzAwOSw3IEBAIC0g
KE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24KICAgICBpZiAoW2RvY3VtZW50
VmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFdlYkRvY3VtZW50U2VsZWN0aW9uKV0p
IHsKICAgICAgICAgcmV0dXJuIFsoTlNWaWV3IDxXZWJEb2N1bWVudFNlbGVjdGlvbj4gKilkb2N1
bWVudFZpZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXTsKICAgICB9Ci0gICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5XTsKKyAgICByZXR1cm4gQFtdOwogfQogCiAtICh2b2lkKXdyaXRlU2Vs
ZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDoo
TlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtNzA0Nyw3ICs3MDMxLDcgQEAgLSAoTlNBcnJh
eSAqKXBhc3RlYm9hcmRUeXBlc0ZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQKICAg
ICB9IGVsc2UgaWYgKFtbZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudElzU2VsZWN0ZWRL
ZXldIGJvb2xWYWx1ZV0pIHsKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhc3RlYm9hcmRUeXBlc0Zv
clNlbGVjdGlvbl07CiAgICAgfQotICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgcmV0
dXJuIEBbXTsKIH0KIAogLSAodm9pZCl3cml0ZUVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1l
bnQgd2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQ
YXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtODAxOCw3ICs4MDAyLDcgQEAgLSAodm9pZCl1bm1h
cmtBbGxUZXh0TWF0Y2hlcwogLSAoTlNBcnJheSAqKXJlY3RzRm9yVGV4dE1hdGNoZXMKIHsKICAg
ICBpZiAoX3ByaXZhdGUtPmNsb3NlZCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsK
KyAgICAgICAgcmV0dXJuIEBbXTsKIAogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOwogICAgIFdlYkZyYW1lICpmcmFtZSA9IFtzZWxmIG1haW5GcmFt
ZV07CkBAIC05MDc1LDcgKzkwNTksNyBAQCAtICh2b2lkKV9zZWFyY2hXaXRoR29vZ2xlRnJvbU1l
bnU6KGlkKXNlbmRlcgogICAgIH0KIAogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAgICBbcGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OldlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOkBbV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsK
ICAgICBOU011dGFibGVTdHJpbmcgKnMgPSBbc2VsZWN0ZWRTdHJpbmcgbXV0YWJsZUNvcHldOwog
ICAgIGNvbnN0IHVuaWNoYXIgbm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciA9IDB4QTA7CiAgICAg
TlNTdHJpbmcgKm5vbkJyZWFraW5nU3BhY2VTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6Jm5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgbGVuZ3RoOjFdOwpAQCAtMTAxNjks
MTcgKzEwMTUzLDE2IEBAIC0gKHVpbnQ2NF90KV9ub3RpZmljYXRpb25JREZvclRlc3Rpbmc6KEpT
VmFsdWVSZWYpanNOb3RpZmljYXRpb24KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcg
KFdlYlZpZXdGb250U2VsZWN0aW9uKQorCiArICh2b2lkKV9zZXRGb250V2hpdGVsaXN0OihOU0Fy
cmF5ICopd2hpdGVsaXN0CiB7CiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICBVTlVTRURfUEFSQU0o
d2hpdGVsaXN0KTsKICNlbHNlCi0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIGZvciAo
TlNTdHJpbmcgKnN0cmluZyBpbiB3aGl0ZWxpc3QpCi0gICAgICAgIHZlY3Rvci5hcHBlbmQoc3Ry
aW5nKTsKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QodmVjdG9yKTsK
KyAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QobWFrZVZlY3RvcjxTdHJp
bmc+KHdoaXRlbGlzdCkpOwogI2VuZGlmCiB9CisKIEBlbmQKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMDE4MGZjYzE2OTA3N2YwZTJlMTIxYzQ5YzNiOTk4NjhmODY0MGU4NC4uYjRhYTFmZWJiZDNm
ODBlZGJjZWEwN2UxNTFkYzEwMTQxYWUyMzRkNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NCBAQAorMjAyMC0wNC0wOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBO
U0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDogUmVtb3ZlIHVzZSBvZiBOb3Rp
ZmljYXRpb25IYW5kbGVyCisgICAgICAgIHR5cGU7IGl0J3MganVzdCAiaWQiLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChj
b252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KTogTW92ZWQgdGhpcyB1cCBpbiB0aGUgZmlsZSwg
cmVtb3ZlZCB1bm5lZWRlZAorICAgICAgICB1c2Ugb2YgSlNWYWx1ZVRvT2JqZWN0IGFuZCB1bnVz
ZWQgZXhjZXB0aW9uIGFyZ3VtZW50LgorICAgICAgICAoZWxlbWVudHNGb3JSYW5nZUNhbGxiYWNr
KTogVXNlIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkuCisgICAgICAgIChjb2x1bW5IZWFk
ZXJzQ2FsbGJhY2spOiBVcGRhdGVkIGZvciByZW1vdmVkIGV4Y2VwdGlvbiBhcmd1bWVudC4KKyAg
ICAgICAgKHJvd0hlYWRlcnNDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAodWlFbGVtZW50QXJy
YXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IENoYW5nZWQgdG8gdXNlIFJldGFpblB0ci4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmpl
Y3RNYWMubW06CisgICAgICAgIChjcmVhdGVDb3JlQW5pbWF0aW9uTGF5ZXIpOiBVc2UgQHt9Lgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KTogUmVtb3ZlZCBzb21lIHVubmVlZGVkCisgICAgICAgIGNvZGUgbm93IHRoYXQgd2UgdXNl
IFJldGFpblB0ci4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmls
aXR5VUlFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKTogVXNlIEBbXS4KKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOiBVc2UgQFtd
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hl
c1RleHROZWFyTWFya2Vycyk6IFVzZSBAW10uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9z
L1RleHRJbnB1dENvbnRyb2xsZXJJT1MubToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxl
ciBtYXJrZWRSYW5nZV0pOiBVc2UgQFtdLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW06CisgICAgICAgIChzZWFyY2hQcmVkaWNhdGVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEpOiBUd2VhayBhIGxpdHRsZS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdKTogRGVsZXRl
ZC4gRHVwbGljYXRlIG9mIGEgbWV0aG9kIGFscmVhZHkKKyAgICAgICAgaW1wbGVtZW50ZWQgaW4g
YW5vdGhlIGZpbGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKG1ha2VWZWN0b3JFbGVtZW50KTogQWRkZWQgb3Zl
cmxvYWRzIHRvIG1ha2UgYm90aAorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IGFuZAorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IHdvcmsuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KTogUmVtb3ZlZCBzb21lIHVubmVlZGVkCisgICAgICAgIGNvZGUgbm93IHRoYXQg
d2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KTog
UmVtb3ZlZCB1bm5lZWRlZCB1c2Ugb2YgSlNWYWx1ZVRvT2JqZWN0CisgICAgICAgIGFuZCB1bm5l
ZWRlZCBleGNlcHRpb24gYXJndW1lbnQuCisgICAgICAgIChjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJ
RWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pi4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOiBE
aXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKTogRGl0
dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5n
ZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycyBj
b25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVh
ZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlF
bGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6IFVwZGF0ZWQgc2luY2UgbV9lbGVtZW50IGlzIGEgUmV0
YWluUHRyLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6IERpdHRv
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0
dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcp
OiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKTogRGl0dG8u
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERpdHRvLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24gY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKTogRGl0dG8u
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6IERpdHRvLgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6IFVzZSBAKCkuCisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOiBVc2UgQCgpLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYSk6
IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Lgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+LgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6IERp
dHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
cyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
Um93cyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjZWxsRm9yQ29sdW1uQW5kUm93KTogVXNlIEBbXSBhbmQgQCgpLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCBjb25z
dCk6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVk
U3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMpOgorICAgICAgICBVc2UgQHt9LCBA
WUVTLCBhbmQgQE5PLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChhZGRUZXN0UGx1Z2luc1RvUGx1Z2luU2Vh
cmNoUGF0aCk6IFVzZSBAW10uCisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0
ZUJlZm9yZVRlc3RpbmcpOiBVc2UgQFtdLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW06CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZCBkZWNsYXJlVHlwZTpvd25lcjpdKTogVXNlIEBbXS4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bRXZlbnRT
ZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6IFVzZSBAKCkuCisgICAgICAg
ICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgc2VudFRvdWNoRXZlbnRPZlR5cGU6XSk6IFVzZSBA
KCkuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5tbToKKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyIGNhbmNlbE5v
dGlmaWNhdGlvbjpdKTogVXNlIEBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9P
YmpDQ29udHJvbGxlci5tOgorICAgICAgICAoLVtPYmpDQ29udHJvbGxlciBvYmplY3RPZkNsYXNz
Ol0pOiBVc2UgQCgpLgorICAgICAgICAoLVtPYmpDQ29udHJvbGxlciBhcnJheU9mU3RyaW5nXSk6
IFVzZSBAW10uCisgICAgICAgICgtW09iakNDb250cm9sbGVyIHRlc3RXcmFwcGVyUm91bmRUcmlw
cGluZzpdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bT2JqQ0NvbnRyb2xsZXIgdGVzdEFycmF5XSk6
IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bToKKyAgICAgICAgKG9yaWdpbnNBcnJheVRvSlMpOiBSZW1vdmVkIHVubmVlZGVkIHVzZSBvZiBK
U1ZhbHVlVG9PYmplY3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0
Q29udHJvbGxlck1hYy5tOgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIG1hcmtlZFJh
bmdlXSk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBz
ZWxlY3RlZFJhbmdlXSk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29u
dHJvbGxlciBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTpsZW5ndGg6XSk6CisgICAgICAgIFVz
ZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBkaWN0YXRlZFN0
cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVy
bmF0aXZlTGVuZ3RoOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAgICAoLVtUZXh0SW5wdXRD
b250cm9sbGVyIGludGVycHJldEtleUV2ZW50czp3aXRoU2VuZGVyOl0pOiBVc2UgQFtdLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dCk6IFVzZSBbXS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cDogRGVsZXRlZCBhbgorICAgICAgICB1bm5lZWRlZCBjb3B5IGNvbnN0cnVjdG9yIGFuZCBkZXN0
cnVjdG9yLgorCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tOgorICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHNldFJlc3Vs
dHNGcm9tSlNPYmplY3Q6aW5Db250ZXh0Ol0pOiBVc2UgQHt9LgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW06
CisgICAgICAgICh0b1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICgtW0NvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmNvbnRlbnRSdWxlTGlzdFdpdGhJZGVudGlm
aWVyOnBlcmZvcm1lZEFjdGlvbjpmb3JVUkw6XSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0
cmluZz4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBb
XS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2Uu
bW06CisgICAgICAgICh3cml0ZUltYWdlRGF0YVRvUGFzdGVib2FyZCk6IFVzZSBAW10gYW5kIEB7
fS4KKyAgICAgICAgKHdyaXRlQnVuZGxlRmlsZVRvUGFzdGVib2FyZCk6IFVzZSBAW10uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVdlYkFyY2hpdmUubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocyk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0Nh
blBhc3RlWmVyb1BuZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtd
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZh
U2NyaXB0Q29udGV4dC5tbToKKyAgICAgICAgKC1bRGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHRG
cmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0OmZvckZy
YW1lOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL21h
aW5JT1MubW06CisgICAgICAgIChtYWluKTogVXNlIEB7fS4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IFVz
ZSBAe30gYW5kIEAoKS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tOgor
ICAgICAgICAobWFpbik6IFVzZSB7fS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgVXNlIGlkIGlu
c3RlYWQgb2YgTm90aWZpY2F0aW9uSGFuZGxlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDoKKyAgICAgICAg
VXNlIGlkIGZvciBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZS4gQWRkZWQgYW4gb3ZlcmxvYWQgb2Yg
bWFrZVZlY3RvckVsZW1lbnQKKyAgICAgICAgdG8gbWFrZSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4gd29yay4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgVXNl
IFJldGFpblB0ci4gQWRkZWQgYW4gb3ZlcmxvYWQgb2YgbWFrZVZlY3RvckVsZW1lbnQgdG8gbWFr
ZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gd29y
ay4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0
aXZhdGVGb250c0NvY29hLm1tOgorICAgICAgICBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ugd2UgdXNlIFJldGFp
blB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydEVsZW1lbnRzVG9PYmpl
Y3RBcnJheSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mCisgICAgICAgIEpTVmFsdWVUb09iamVj
dC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JSYW5n
ZSk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgVXNlIEBbXS4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10u
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1h
dGNoZXNUZXh0TmVhck1hcmtlcnMpOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW06CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBVc2UgQHt9LgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ugd2UgdXNlIFJldGFpblB0ci4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJ
RWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1
bWVudExpbmtzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKTogRGl0dG8u
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVh
ZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphbGxBdHRyaWJ1dGVzKTogVXBkYXRlZCBzaW5jZSBtX2VsZW1lbnQKKyAgICAgICAgaXMgYSBS
ZXRhaW5QdHIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rl
c2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb2xlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN1YnJvbGUpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZyk6IERpdHRvLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6IERpdHRvLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbiBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5k
ZXgpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5n
ZUZvckxpbmUpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisgICAgICAgIG1ha2VWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pi4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6IERpdHRvLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKTog
RGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mUm93cyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6IFVzZSBAW10gYW5k
IEAoKS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRD
aGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVz
ZSBAW10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNz
RW50cmllcyk6IFRha2UgVmVjdG9yJiYuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KTogVGFrZSBTdHJpbmcmJi4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKTog
VXNlIEB7fWFuZCBAKCkuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6IFVzZSBtYWtlVmVjdG9y
PFN0cmluZz4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdv
cnkpOiBVcGRhdGUgdG8gcGFzcyBTdHJpbmcmJi4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnNldEFsbG93ZWRNZW51QWN0aW9ucyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgt
W0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2ZW50czpdKTogVXNlIEAoKS4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCk6IFVzZSBA
e30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOiBVc2UgQFtdLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAo
LVtXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCBkZWNsYXJlVHlwZTpvd25lcjpdKTogVXNlIEBb
XS4KKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJhY2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAxYmRmMWM0MzBiYzUwYmUz
ODRmYWNjZTUwZGZmYTUyOGRhNDg1NmE1Li4xZGM3ZDNiNTYzYTE1NGY0Y2U5YmY3YTMwMzBjOGM1
YTc2OTdmMzlhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5k
ZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaAotI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgpAQCAtMzIsOSArMzEs
MTEgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKwogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDx3aW5k
b3dzLmg+CiAjZW5kaWYKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RL
KQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgiCiAjaW5j
bHVkZSA8YXRrL2F0ay5oPgpAQCAtOTQsOCArOTUsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
UGxhdGZvcm1VSUVsZW1lbnQsIEpTT2JqZWN0UmVmPiBtX25vdGlmaWNhdGlvbkxpc3RlbmVyczsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFu
ZGxlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlcjsKICNlbmRpZgogCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQ
TEFURk9STShHVEspCkBAIC0xMDQsNSArMTA1LDMgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lk
IHBsYXRmb3JtUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogfTsKLQotI2VuZGlmIC8vIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oCmluZGV4IDk2ZTk5N2FhZTI4ZDEyNjc5NGE5YmRmYzlhZmUzZTQ5YmJh
NmQ1MWIuLmJkN2I3NWM0Yjg3ZjMyNDIxMDg0OTlhZmJiNDZkZmNjNTQyNDQ5MjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaApAQCAtMjMsOCAr
MjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcl9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KIApAQCAtMzYsMTUg
KzM1LDEzIEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci10eXBlZGVmIENGVHlwZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXI7Ci10eXBlZGVmIENGVHlw
ZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZTsKK3VzaW5nIFBsYXRmb3JtVGV4dE1hcmtlciA9
IGlkOwordXNpbmcgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgPSBpZDsKICNlbHNlCiB0eXBlZGVm
IHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlcjsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2U7CiAjZW5kaWYKIAotY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDsKLQogY2xh
c3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgewogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlcik7CkBAIC01OCw4ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygpOwotI2lm
IFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8
UGxhdGZvcm1UZXh0TWFya2VyPiBtX3RleHRNYXJrZXI7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IFJldGFpblB0cjxpZD4gbV90ZXh0TWFya2VyOwogI2Vsc2UKICAgICBQbGF0Zm9ybVRleHRNYXJr
ZXIgbV90ZXh0TWFya2VyOwogI2VuZGlmCkBAIC03OSw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7CiAKIHByaXZhdGU6Ci0jaWYgU1VQUE9SVFNf
QVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxQbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZT4gbV90ZXh0TWFya2VyUmFuZ2U7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IFJldGFpblB0cjxpZD4gbV90ZXh0TWFya2VyUmFuZ2U7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlIG1fdGV4dE1hcmtlclJhbmdlOwogI2VuZGlmCkBAIC04OSw3ICs4Niw3IEBA
IHByaXZhdGU6CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdG9UZXh0TWFya2VyKEpTT2JqZWN0
UmVmIG9iamVjdCk7CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiB0b1RleHRNYXJrZXJS
YW5nZShKU09iamVjdFJlZiBvYmplY3QpOwogCi0jaWYgIVNVUFBPUlRTX0FYX1RFWFRNQVJLRVJT
CisjaWYgIVBMQVRGT1JNKENPQ09BKQogaW5saW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIpIHsgfQogaW5saW5lIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihjb25zdCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciYpIHsgfQogaW5saW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
Ojp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKSB7IH0KQEAgLTEwMiw1ICs5OSwzIEBAIGlubGlu
ZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSgpIHsgfQogaW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNF
cXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KIGlu
bGluZSBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dE1hcmtlclJh
bmdlOyB9CiAjZW5kaWYKLQotI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAy
ZmRjYzAwZDIxZmNmYmMyNWRlYjIxMGRmZWNkMzQ3NjU3ZjhkZmI3Li4xMWYzYTUxOTRmOWViMjE3
ZDMzN2M1OTMwM2UzY2ZlNmZiNmVlNTlhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtMzA3LDYgKzMwNywxNSBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBpbmRleE9mQ2hpbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3RpbwogICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAoZG91
YmxlKXRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pbmRleE9mQ2hpbGQoY2hpbGRFbGVtZW50KSk7
CiB9CiAKK3N0YXRpYyBKU09iamVjdFJlZiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KEpT
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4m
IGVsZW1lbnRzKQoreworICAgIGF1dG8gYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0
LCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudHMuc2l6
ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEpT
T2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGVsZW1lbnRz
W2ldKSwgMCk7CisgICAgcmV0dXJuIGFycmF5OworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogc3RhdGljIEpTVmFsdWVSZWYgaGVhZGVyRWxlbWVudEF0SW5kZXhDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0zMjcsMjAgKzMzNiwxNCBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBlbGVtZW50c0ZvclJhbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bgogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIAorCiAgICAgdW5zaWduZWQgbG9jYXRpb24gPSBKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7Ci0gICAg
CisKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9B
WEVsZW1lbnQodGhpc09iamVjdCktPmVsZW1lbnRzRm9yUmFuZ2UobG9jYXRpb24sIGxlbmd0aCwg
ZWxlbWVudHMpOwotICAgIAotICAgIEpTVmFsdWVSZWYgYXJyYXlSZXN1bHQgPSBKU09iamVjdE1h
a2VBcnJheShjb250ZXh0LCAwLCAwLCAwKTsKLSAgICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBhcnJheVJlc3VsdCwgMCk7Ci0gICAgdW5zaWduZWQgZWxl
bWVudHNTaXplID0gZWxlbWVudHMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsg
PCBlbGVtZW50c1NpemU7ICsraykKLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgo
Y29udGV4dCwgYXJyYXlPYmosIGssIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNba10pLCAwKTsKLSAgICAKLSAgICBy
ZXR1cm4gYXJyYXlSZXN1bHQ7CisKKyAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RB
cnJheShjb250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGluY3JlYXNl
VGV4dFNlbGVjdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTYx
NSwzMCArNjE4LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHN0cmluZ0F0dHJpYnV0ZVZhbHVlQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShK
U0NvbnRleHRSZWYgY29udGV4dCwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVt
ZW50cywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIEpTVmFsdWVSZWYgYXJyYXlSZXN1
bHQgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCAwKTsKLSAgICBKU09iamVjdFJl
ZiBhcnJheU9iaiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcnJheVJlc3VsdCwgMCk7Ci0K
LSAgICBzaXplX3QgZWxlbWVudENvdW50ID0gZWxlbWVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyArK2kpCi0gICAgICAgIEpTT2JqZWN0U2V0UHJv
cGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGVsZW1lbnRzW2ldKSwgMCk7
Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7Ci19Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbHVt
bkhlYWRlcnNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgVmVj
dG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVsZW1lbnRzOwogICAgIHRvQVhFbGVtZW50KHRo
aXNPYmplY3QpLT5jb2x1bW5IZWFkZXJzKGVsZW1lbnRzKTsKLSAgICByZXR1cm4gY29udmVydEVs
ZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50cywgZXhjZXB0aW9uKTsKKyAgICBy
ZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50cyk7CiB9
CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHJvd0hlYWRlcnNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7CiAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVsZW1l
bnRzOwogICAgIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5yb3dIZWFkZXJzKGVsZW1lbnRzKTsK
LSAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50
cywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShj
b250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEFycmF5
QXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC02
NTAsNyArNjQxLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVW
YWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU08KICAgICAKICAgICBWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlLmdldCgpLCBlbGVt
ZW50cyk7Ci0gICAgcmV0dXJuIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkoY29udGV4dCwg
ZWxlbWVudHMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0
QXJyYXkoY29udGV4dCwgZWxlbWVudHMpOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1l
bnRBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCBjYTIy
NTVjOWVkZTA3NTI2ZjkwNTM5NTQ4ZTBiNDQxOGIzNWI1ZDBjLi5kNzIxOTdmZWMwY2U3NWY0ZWFk
NjUzODFiMjVhNThmMjYwYzUwZWNjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwxOCArMzIsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBQbGF0Zm9y
bVVJRWxlbWVudDsKLSNlbHNlCi10eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogUGxhdGZvcm1V
SUVsZW1lbnQ7Ci0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZWxpZiBQTEFU
Rk9STShXSU4pCiAjdW5kZWYgX1dJTlNPQ0tBUElfCiAjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQ
cmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCi0KICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPG9sZWFjYy5oPgotCiB0eXBlZGVmIENPTVB0cjxJ
QWNjZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5oIgpAQCAtNTMsMjEgKzQ3LDIyIEBAIHR5cGVkZWYgQXRrT2JqZWN0KiBQbGF0Zm9y
bVVJRWxlbWVudDsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZW5kaWYKIAor
Y2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CitwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0jaWZkZWYgX19PQkpDX18KLXR5cGVkZWYgaWQgTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNl
bHNlCi10eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogTm90aWZpY2F0aW9uSGFuZGxlcjsKKyAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGlkKTsKICNlbmRpZgorI2lmICFQTEFURk9STShDT0NP
QSkKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKICNlbmRp
ZgogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKLSAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKLSAgICB+QWNjZXNzaWJpbGl0
eVVJRWxlbWVudCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlkIHBsYXRmb3JtVUlFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50LmdldCgpOyB9CisjZW5kaWYKIAorI2lmICFQ
TEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVVJRWxlbWVudCBwbGF0Zm9ybVVJRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorI2VuZGlmCiAKICAgICBzdGF0aWMgSlNPYmpl
Y3RSZWYgbWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChKU0NvbnRleHRSZWYsIGNvbnN0IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKIApAQCAtMzE4LDEwICszMTMsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Q7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJrZXJzKEpTU3Ry
aW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
Kik7Ci0gICAgCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVt
ZW50LgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdXBwb3J0ZWRBY3Rpb25zKCk7CiAg
ICAgCkBAIC0zMzIsMTEgKzMyNiwxNCBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIHN0
YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKKworI2lmICFQTEFURk9STShDT0NPQSkKICAg
ICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7CisjZW5kaWYKICAgICAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAvLyBBIHJldGFpbmVkLCBwbGF0Zm9ybSBzcGVjaWZpYyBvYmplY3QgdXNl
ZCB0byBoZWxwIG1hbmFnZSBub3RpZmljYXRpb25zIGZvciB0aGlzIG9iamVjdC4KLSAgICBOb3Rp
ZmljYXRpb25IYW5kbGVyIG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8aWQ+
IG1fZWxlbWVudDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKICNl
bmRpZgogCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShHVEspCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9i
amVjdE1hYy5tbQppbmRleCBhNjQ1N2EwNzZiMWI5MjIyZWMxODM2MmQ0YmM5NGNiNDcyYTNhM2Nj
Li4wYzhmYTQwMDNhN2RmYjVkZjVjMzQyZjE0MjJiN2JlMzk2ODY1NTNkIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmpl
Y3RNYWMubW0KQEAgLTQ4LDIxICs0OCwyMSBAQCBDRlR5cGVSZWYgY3JlYXRlQ29yZUFuaW1hdGlv
bkxheWVyKCkKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gY2FMYXllciA9IGFkb3B0TlMoW1tUZXN0
UGx1Z2luTGF5ZXIgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TTnVsbCAqbnVsbFZhbHVlID0gW05T
TnVsbCBudWxsXTsKLSAgICBOU0RpY3Rpb25hcnkgKmFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJhbmNob3JQb2ludCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJib3VuZHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAiY29udGVudHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAiY29udGVudHNSZWN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAIm9wYWNpdHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUs
IEAicG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
c2hhZG93Q29sb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
c3VibGF5ZXJUcmFuc2Zvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAic3VibGF5ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVl
LCBAInRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJ6UG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgIE5T
RGljdGlvbmFyeSAqYWN0aW9ucyA9IEB7CisgICAgICAgIEAiYW5jaG9yUG9pbnQiOiBudWxsVmFs
dWUsCisgICAgICAgIEAiYm91bmRzIjogbnVsbFZhbHVlLAorICAgICAgICBAImNvbnRlbnRzIjog
bnVsbFZhbHVlLAorICAgICAgICBAImNvbnRlbnRzUmVjdCI6IG51bGxWYWx1ZSwKKyAgICAgICAg
QCJvcGFjaXR5IjogbnVsbFZhbHVlLAorICAgICAgICBAInBvc2l0aW9uIjogbnVsbFZhbHVlLAor
ICAgICAgICBAInNoYWRvd0NvbG9yIjogbnVsbFZhbHVlLAorICAgICAgICBAInN1YmxheWVyVHJh
bnNmb3JtIjogbnVsbFZhbHVlLAorICAgICAgICBAInN1YmxheWVycyI6IG51bGxWYWx1ZSwKKyAg
ICAgICAgQCJ0cmFuc2Zvcm0iOiBudWxsVmFsdWUsCisgICAgICAgIEAielBvc2l0aW9uIjogbnVs
bFZhbHVlLAorICAgIH07CiAgICAgLy8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgotICAg
IFtjYUxheWVyIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0
aW9ucyBmb3JLZXk6QCJhY3Rpb25zIl1dOworICAgIFtjYUxheWVyIHNldFN0eWxlOkB7IEAiYWN0
aW9ucyI6IGFjdGlvbnMgfV07CiAgICAgW2NhTGF5ZXIgc2V0TmVlZHNEaXNwbGF5T25Cb3VuZHND
aGFuZ2U6WUVTXTsKIAogICAgIFtjYUxheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIDIw
MCwgMTAwKV07CkBAIC03Niw3ICs3Niw3IEBAIENGVHlwZVJlZiBjcmVhdGVDb3JlQW5pbWF0aW9u
TGF5ZXIoKQogCiAgICAgQ0FMYXllciAqc3VibGF5ZXIgPSBbQ0FMYXllciBsYXllcl07CiAgICAg
Ly8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgotICAgIFtzdWJsYXllciBzZXRTdHlsZTpb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmFjdGlvbnMgZm9yS2V5OkAiYWN0aW9u
cyJdXTsKKyAgICBbc3VibGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsK
IAogICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMCwgMCwgMCwgMC43NSk7CiAg
ICAgW3N1YmxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KaW5kZXgg
YzM2ODdjMTA3NGUwNTcxMWNmOGI5NzQ2YjgzNWU0NmYzOGJmOTBiMy4uZGUyOWQ1NTEwMjA0ODVl
OGQ0NGI2ZTU2ZGFmMjMzOTRiMTA4NTUwZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQpAQCAtNDgsNyArNDgsNyBA
QCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCkKIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogb3RoZXIpCiB7Ci0gICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNF
cXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gW3BsYXRm
b3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6b3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKIH0K
IAogUGxhdGZvcm1UZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpwbGF0Zm9ybVRl
eHRNYXJrZXIoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5kZXggYTRlNDE4OTU1MzQ4ODg0NGM0Y2Y4YzIz
ZTE0ZGY4NDc3ZmJmMzgxOS4uOTUxZGRkZDJlN2IzODZjZTU2YTlmMmE2YThlNjEyZWM1ZjRmZTI1
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0KQEAgLTQxLDI0ICs0MSw5IEBACiAKIHR5cGVkZWYgdm9pZCAoKkFYUG9z
dGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRp
b24sIHZvaWQqIGNvbnRleHQpOwogCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCitBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGlkIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1l
bnQoZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAgIFttX2Vs
ZW1lbnQgcmV0YWluXTsKLX0KLQotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGhlcikKLSAgICA6IG1f
ZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkK
LQotewotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKLX0KLQotQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQotewotICAgIFttX2VsZW1lbnQgcmVsZWFzZV07
CiB9CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFVJQWNjZXNzaWJpbGl0eUhpZGRlbikKQEAgLTQ2
Miw5ICs0NDcsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QKIAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBzdGFy
dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFydE1hcmtlckZvck1hcmtlcjooaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIGlkIGVuZFRleHRNYXJrZXIgPSBb
bV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6c3RhcnRUZXh0TWFya2VyLCBlbmRUZXh0TWFya2VyLCBuaWxdOworICAgIGlk
IHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2VyRm9yTWFya2VyOnRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBlbmRUZXh0TWFya2VyID0g
W21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKKyAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IEBbc3RhcnRUZXh0TWFya2Vy
LCBlbmRUZXh0TWFya2VyXTsKICAgICAKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVt
ZW50IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6dGV4dE1hcmtlcnNdOwogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CkBAIC00NzIsNyAr
NDU3LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE0KIAogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBzdGFydFJhbmdlLCBib29sIGZvcndhcmQp
CiB7Ci0gICAgaWQgbWlzc3BlbGxpbmdSYW5nZSA9IFttX2VsZW1lbnQgbWlzc3BlbGxpbmdUZXh0
TWFya2VyUmFuZ2U6KGlkKXN0YXJ0UmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9y
d2FyZDpmb3J3YXJkXTsKKyAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNz
cGVsbGluZ1RleHRNYXJrZXJSYW5nZTpzdGFydFJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZSgpIGZvcndhcmQ6Zm9yd2FyZF07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UobWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAKQEAgLTUwMywzNCArNDg4LDM0IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiAK
IGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAo
aWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMg
PSByYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICByZXR1cm4gW21fZWxlbWVu
dCBsZW5ndGhGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc107CiB9CiAKIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7Ci0gICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOworICAgIE5T
QXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCks
IGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlkIHRleHRNYXJrZXJSYW5n
ZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsK
IH0KIAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3RhcnRPckVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0OllFU107CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogfQogCiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewot
ICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
OworICAgIGlkIHRleHRNYXJrZXJzID0gcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7
CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0Ok5PXTsKICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7Ci0gICAgaWQgb2JqID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjooaWQpbWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yVGV4dE1hcmtlcjptYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZiAo
b2JqKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudChvYmopOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTUzLDE5ICs1MzgsMTkgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQg
eSkKIAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJl
dmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewot
ICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtl
cjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIHByZXZpb3Vz
TWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KHByZXZpb3VzTWFya2VyKTsKIH0KIAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7Ci0gICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZv
ck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIG5l
eHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihu
ZXh0TWFya2VyKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZCltYXJrZXJS
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IG1h
cmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlmICghdGV4dE1hcmtl
cnMgfHwgIVt0ZXh0TWFya2VycyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAg
ICAgIHJldHVybiBjcmVhdGVFbXB0eUpTU3RyaW5nKCk7CiAgICAgcmV0dXJuIFtbbV9lbGVtZW50
IHN0cmluZ0ZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXSBjcmVhdGVKU1N0cmluZ1JlZl07CkBA
IC02NzAsNyArNjU1LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE4KIHsKICAgICBOU0FycmF5
ICp0ZXh0TWFya2VycyA9IG5pbDsKICAgICBpZiAoc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpICYmIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCkpCi0gICAgICAgIHRleHRN
YXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooaWQpc3RhcnRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmls
XTsKKyAgICAgICAgdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2Vyczp0ZXh0TWFya2Vy
cyB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnRleHRdXTsKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJ
T1MubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm0K
aW5kZXggNjUzMzliM2NiZWI4M2ViNTI0ZjE4YWZlY2IwZTJjZjIyYTE5ZDNkYy4uOTY1ZmFmNTk5
N2EzMjM4ZTEzMjliNTcyNTliYTljNWQ3MjgyZTZlZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCkBAIC03Niw3ICs3Niw3IEBAIC0g
KE5TQXJyYXkgKiltYXJrZWRSYW5nZQogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpAKFtyYW5nZSBzdGFy
dE9mZnNldF0pLCBAKFtyYW5nZSBlbmRPZmZzZXRdKSwgbmlsXTsKKyAgICByZXR1cm4gQFtAKFty
YW5nZSBzdGFydE9mZnNldF0pLCBAKFtyYW5nZSBlbmRPZmZzZXRdKV07CiB9CiAKIC0gKHZvaWQp
aW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDBiODY3YWRjYjkwYzMxMjI0MTZk
Y2MyNjVmMzg1M2I2MWI2ZDQ3MTMuLjc5NDA3MzhhMzM5MGViMjcwYTYwOGJmZDA1OWUxNzJhZjRi
NzkwOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
Q29tbW9uTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
Q29tbW9uTWFjLm1tCkBAIC00OCwxNyArNDgsMTcgQEAgLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilzZWxmKSk7CiB9CiAKLU5TRGljdGlvbmFy
eSAqc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlh
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVS
ZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBi
b29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKK05TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGlj
YXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJl
Y3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBK
U1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURl
c2NlbmRhbnRzT25seSkKIHsKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVk
QXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAgICAgCiAgICAg
aWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpCi0g
ICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50
LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07Ci0gICAgCisg
ICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDpzdGFydEVsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKKwogICAgIFtwYXJh
bWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDooaXNEaXJlY3Rpb25OZXh0KSA/IEAiQVhEaXJl
Y3Rpb25OZXh0IiA6IEAiQVhEaXJlY3Rpb25QcmV2aW91cyIgZm9yS2V5OkAiQVhEaXJlY3Rpb24i
XTsKLSAgICAKKwogICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDpAKHJlc3Vs
dHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKLSAgICAKKwogICAgIGlmIChzZWFy
Y2hLZXkpIHsKICAgICAgICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gbmlsOwogICAgICAgICBp
ZiAoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHNlYXJjaEtleSkpIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbQppbmRleCA5ZDdmZjZlOWJlNjQ0NDUzN2E5ZmZhNWJhODYzYmVjNDY3YWFmYmE2Li5k
MTY3ODI3OGQ4NGIzZGVlYmJjNTYyZmJjZTQwN2E4YWQ1NDU5NTQwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tCkBAIC0yOSwzMyArMjksMjAgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogCisj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgiCisjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZS5oIgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
UmVmQ0YuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQWRkaXRpb25zKQogKyAodm9pZClhY2Nlc3Np
YmlsaXR5U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczooQk9PTClyZXBvc3Q7CiBAZW5kCiAK
LUBpbnRlcmZhY2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotLSAoSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmOwotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotCi0tIChKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKLXsKLSAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKLX0KLQotQGVu
ZAotCiBAaW1wbGVtZW50YXRpb24gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKIAog
LSAoaWQpaW5pdApAQCAtMTMyLDI3ICsxMTksMjIgQEAgc3RhdGljIEpTVmFsdWVSZWYgbWFrZVZh
bHVlUmVmRm9yVmFsdWUoSlNDb250ZXh0UmVmIGNvbnRleHQsIGlkIHZhbHVlKQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBtYWtlQXJyYXlSZWZGb3JBcnJheShK
U0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqYXJyYXkpCitzdGF0aWMgSlNPYmplY3RSZWYg
bWFrZUFycmF5UmVmRm9yQXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5TQXJyYXkgKmFycmF5
KQogewogICAgIE5TVUludGVnZXIgY291bnQgPSBhcnJheS5jb3VudDsKICAgICBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tjb3VudF07Ci0KICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQogICAgICAgICBhcmd1bWVudHNbaV0gPSBtYWtlVmFsdWVSZWZGb3JWYWx1ZShjb250
ZXh0LCBbYXJyYXkgb2JqZWN0QXRJbmRleDppXSk7Ci0KICAgICByZXR1cm4gSlNPYmplY3RNYWtl
QXJyYXkoY29udGV4dCwgY291bnQsIGFyZ3VtZW50cywgbnVsbHB0cik7CiB9CiAKLXN0YXRpYyBK
U1ZhbHVlUmVmIG1ha2VPYmplY3RSZWZGb3JEaWN0aW9uYXJ5KEpTQ29udGV4dFJlZiBjb250ZXh0
LCBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkpCitzdGF0aWMgSlNPYmplY3RSZWYgbWFrZU9iamVj
dFJlZkZvckRpY3Rpb25hcnkoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSkKIHsKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU09iamVjdE1ha2UoY29udGV4
dCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICBbZGljdGlvbmFyeSBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBpZCBvYmosIEJPT0wgKnN0b3ApCi0g
ICAgewotICAgICAgICBpZiAoSlNWYWx1ZVJlZiBwcm9wZXJ0eVZhbHVlID0gbWFrZVZhbHVlUmVm
Rm9yVmFsdWUoY29udGV4dCwgb2JqKSkKKyAgICBbZGljdGlvbmFyeSBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBpZCB2YWx1ZSwgQk9PTCogc3RvcCkg
eworICAgICAgICBpZiAoYXV0byBwcm9wZXJ0eVZhbHVlID0gbWFrZVZhbHVlUmVmRm9yVmFsdWUo
Y29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0
LCBvYmplY3QsIFtrZXkgY3JlYXRlSlNTdHJpbmdSZWZdLmdldCgpLCBwcm9wZXJ0eVZhbHVlLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgIH1dOwotCiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCmluZGV4IDBlZmY5MTY5NTA2NDU4OWZkOWU4ZWZiNWM2
MzU2MWRhMTk5ODA1ZDcuLjFiZmNhYzdmYjM0Y2ZjMGE3NWViMjJhMzEyZGE0Njk4OWJlYTA1N2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJNYWMubW0KQEAgLTI4LDExICsyOCwxMSBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAKLSNpZiBTVVBQT1JU
U19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKQogCiAv
LyBNQVJLOiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcgogCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtlcikKK0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihpZCBtYXJrZXIp
CiAgICAgOiBtX3RleHRNYXJrZXIobWFya2VyKQogewogfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKQogCiBib29s
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhfX2JyaWRnZSBpZClwbGF0Zm9ybVRleHRNYXJrZXIo
KSBpc0VxdWFsOihfX2JyaWRnZSBpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IHJldHVybiBbcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwogfQogCi1QbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0IAoraWQgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0CiB7IAogICAgIHJldHVybiBtX3RleHRNYXJr
ZXIuZ2V0KCk7CiB9CiAKIC8vIE1BUks6IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UKIAot
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKK0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoaWQgbWFya2VyUmFuZ2Up
CiAgICAgOiBtX3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkKIHsKIH0KQEAgLTc0LDEyICs3
NCwxMiBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSgpCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVh
bChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhf
X2JyaWRnZSBpZClwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGlzRXF1YWw6KF9fYnJpZGdlIGlk
KW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gW3BsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KV07CiB9CiAKLVBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QKK2lkIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV90ZXh0TWFya2VyUmFuZ2UuZ2V0KCk7CiB9CiAKLSNlbmRpZiAvLyBTVVBQT1JUU19B
WF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQppbmRleCBjZTZiNjIzMWUzMmQ1ZTlmM2VkOGY1YTdiNjM0NzczNDNmNTA0MTBmLi42
YjViNWVmYmRiNzgzMWYwOGIwNWFmMDU2MTgyYzNiYzMwNjRkYzFhIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTEgKzI0
LDExIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEdW1wUmVuZGVyVHJl
ZS5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgotI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCIKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgorI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJU
cmVlLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgpA
QCAtMzYsNyArMzYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlR5cGVzSW50ZXJuYWwuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQorI2ltcG9y
dCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3du
c0F0dHJpYnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25z
IgpAQCAtODYsMjYgKzg2LDE5IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY3Jl
YXRlRW1wdHlKU1N0cmluZygpCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCi0gICAgOiBtX2Vs
ZW1lbnQoZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQorc3RhdGljIE9w
dGlvbmFsPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBpZCBlbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBhcEB3
ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZSZXRhaW5lZC9DRlJlbGVh
c2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCi0gICAgW21fZWxlbWVudCByZXRhaW5d
OworICAgIHJldHVybiB7IHsgZWxlbWVudCB9IH07CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYg
b3RoZXIpCi0gICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotICAgICwgbV9ub3RpZmlj
YXRpb25IYW5kbGVyKDApCitzdGF0aWMgT3B0aW9uYWw8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSosIGlkIGVsZW1lbnQpCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOworICAgIHJldHVybiB7
IHsgZWxlbWVudCB9IH07CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmls
aXR5VUlFbGVtZW50KCkKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQoaWQgZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudChlbGVtZW50KQogewotICAgIC8vIFRo
ZSBub3RpZmljYXRpb24gaGFuZGxlciBzaG91bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3ZlTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVzdC4KLSAg
ICBBU1NFUlQoIW1fbm90aWZpY2F0aW9uSGFuZGxlcik7Ci0gICAgW21fZWxlbWVudCByZWxlYXNl
XTsKIH0KIAogc3RhdGljIE5TU3RyaW5nKiBkZXNjcmlwdGlvbk9mVmFsdWUoaWQgdmFsdWVPYmpl
Y3QsIGlkIGZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0KQpAQCAtMTc5LDE2ICsxNzIsMTMgQEAg
c3RhdGljIE5TU3RyaW5nKiBhdHRyaWJ1dGVzT2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxpdHlPYmpl
Y3QpCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNTdHJpbmc7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheShKU0NvbnRl
eHRSZWYgY29udGV4dCwgVmVjdG9yPFQ+IGNvbnN0JiBlbGVtZW50cykKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0YXRpYyBKU09iamVjdFJlZiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheShKU0Nv
bnRleHRSZWYgY29udGV4dCwgVmVjdG9yPFQ+IGNvbnN0JiBlbGVtZW50cykKIHsKLSAgICBKU1Zh
bHVlUmVmIGFycmF5UmVzdWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgMCwgMCk7
Ci0gICAgSlNPYmplY3RSZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJy
YXlSZXN1bHQsIDApOwotICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXplKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAgICAg
SlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEpTT2JqZWN0
TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS5nZXRKU0NsYXNzKCksIG5ldyBUKGVsZW1lbnRzW2ld
KSksIDApOwotCi0gICAgcmV0dXJuIGFycmF5UmVzdWx0OworICAgIGF1dG8gYXJyYXkgPSBKU09i
amVjdE1ha2VBcnJheShjb250ZXh0LCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB1bnNpZ25l
ZCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFy
cmF5LCBpLCBKU09iamVjdE1ha2UoY29udGV4dCwgZWxlbWVudHNbaV0uZ2V0SlNDbGFzcygpLCBu
ZXcgVChlbGVtZW50c1tpXSkpLCBudWxscHRyKTsKKyAgICByZXR1cm4gYXJyYXk7CiB9CiAKIHN0
YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShOU1N0cmluZyAqYXR0cmlidXRlLCBOU1N0cmluZyAqdmFsdWUpCkBAIC0yMDUsMTcgKzE5NSw2
IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVB
bmRWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIFZlY3RvcjxUPiBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yKE5TQXJyYXkgKmFycmF5KQotewotICAgIFZlY3RvcjxUPiB2OwotICAgIE5TVUludGVnZXIg
Y291bnQgPSBhcnJheS5jb3VudDsKLSAgICB2LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQp
OwotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIHYu
YXBwZW5kKFthcnJheSBvYmplY3RBdEluZGV4OmldKTsKLSAgICByZXR1cm4gdjsKLX0KLQogc3Rh
dGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoVmVjdG9y
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50VmVjdG9yKQogewogICAgIE5TTXV0YWJs
ZVN0cmluZyogYWxsRWxlbWVudFN0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKQEAg
LTMxNSw3ICsyOTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJ
RWxlbWVudHMoVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JgogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGxpbmtlZEVsZW1lbnRzID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVt
ZW50c0F0dHJpYnV0ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0
b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua2VkRWxlbWVudHMpOworICAgIGVsZW1lbnRW
ZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGxpbmtlZEVsZW1lbnRz
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTMyMyw3ICszMDIsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+JiBlbAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIE5TQXJyYXkqIGxpbmtFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhMaW5rVUlFbGVtZW50cyJdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBjb252
ZXJ0TlNBcnJheVRvVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGxpbmtFbGVtZW50cyk7
CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4o
bGlua0VsZW1lbnRzKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTMzMSw3
ICszMTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudAogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOwotICAg
IGVsZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+KGNoaWxkcmVuKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PihjaGlsZHJlbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
fQogCkBAIC0zMzksNyArMzE4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRD
aGlsZHJlbldpdGhSYW5nZShWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4KIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOk5TQWNjZXNzaWJpbGl0eUNoaWxk
cmVuQXR0cmlidXRlIGluZGV4OmxvY2F0aW9uIG1heENvdW50Omxlbmd0aF07Ci0gICAgZWxlbWVu
dFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4o
Y2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAg
LTUyOCw4ICs1MDcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpCiB7Ci0gICAgTlNTdHJp
bmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50KG1fZWxlbWVudCk7Ci0gICAgcmV0
dXJuIFthdHRyaWJ1dGVzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICByZXR1cm4gW2F0dHJpYnV0
ZXNPZkVsZW1lbnQobV9lbGVtZW50LmdldCgpKSBjcmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCkBAIC01NDgsNyArNTI2LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiYgZWxlbWVudHMKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnRO
U0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBl
bGVtZW50cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTU3LDcgKzUzNSw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4mIGVsZW1lCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgZWxlbWVudHMgPSBjb252ZXJ0TlNB
cnJheVRvVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHZhbHVlKTsKKyAgICAgICAgZWxl
bWVudHMgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHZhbHVlKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTU2Niw3ICs1NDQsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlLAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmlu
Z1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgZWxlbWVudHMgPSBjb252ZXJ0TlNBcnJheVRv
VmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHZhbHVlKTsKKyAgICAgICAgZWxlbWVudHMg
PSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHZhbHVlKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTY0Myw3ICs2MjEsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5h
bWVzKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAqcm9s
ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0
cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50Lmdl
dCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZSIs
IHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTY1Myw3ICs2MzEs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9s
ZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vi
cm9sZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcqIHJv
bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAg
TlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxl
bWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJB
WFN1YnJvbGUiLCByb2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTY2Myw3
ICs2NDEsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3Vicm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRy
aWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJu
IGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNjcmlwdGlvbiIsIHJvbGUp
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTY3Myw3ICs2NTEsNyBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2Ny
aXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIE5TU3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEFSSUFSb2xlIl0sIG1fZWxl
bWVudCk7CisgICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUi
XSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW2NvbXB1dGVkUm9sZVN0cmluZyBjcmVh
dGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjgz
LDcgKzY2MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVd
LCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRs
ZUF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoQCJBWFRpdGxlIiwgdGl0bGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIApAQCAtNjkzLDcgKzY3MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0
dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0aW9uIiwgZGVzY3Jp
cHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzAzLDcgKzY4MSw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlw
dGlvbigpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
b3JpZW50YXRpb24oKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSwg
bV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRl
QXR0cmlidXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVzY3JpcHRpb24pOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzEzLDcgKzY5MSw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0CiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFs
dWUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBk
ZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxlbWVudC5n
ZXQoKSk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYVmFsdWUiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwpAQCAtNzI0LDcgKzcwMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJd
LCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJdLCBtX2Vs
ZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAi
QVhMYW5ndWFnZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAK
QEAgLTczNCw3ICs3MTIsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmli
dXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1
ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlI
ZWxwQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYSGVscCIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCkBAIC0xMDI2LDcgKzEwMDQsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QK
IGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
aW5kZXhdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOkAoaW5kZXgpXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICopdmFsdWUgaW50VmFs
dWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xMDM3LDcgKzEwMTUsNyBAQCBp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRleCkKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUo
aW50IGxpbmUpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlS
YW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpsaW5lXV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVQYXJhbWV0ZXJp
emVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpAKGxpbmUpXTsKICAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZ0Zyb21S
YW5nZShbdmFsdWUgcmFuZ2VWYWx1ZV0pIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCkBAIC0xMTY2LDcgKzExNDQsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNlYXJjaFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRl
eHQsCiAgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gc2VhcmNoVGV4
dFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JDcml0ZXJpYShjb250ZXh0LCBzZWFyY2hTdHJpbmdz
LCBzdGFydEZyb20sIGRpcmVjdGlvbik7CiAgICAgaWQgcmVzdWx0ID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFNlYXJjaFRleHRXaXRoQ3JpdGVyaWEiIGZvclBh
cmFtZXRlcjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICBpZiAoW3Jlc3VsdCBpc0tpbmRP
ZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9P
YmplY3RBcnJheTxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPihjb250ZXh0LCBjb252ZXJ0
TlNBcnJheVRvVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KHJlc3VsdCkpOwor
ICAgICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2JqZWN0QXJyYXkoY29udGV4dCwgbWFrZVZl
Y3RvcjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPihyZXN1bHQpKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xMTc3LDcgKzExNTUs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mQ29sdW1uSGVhZGVycygpCiAgICAgLy8gbm90IHlldCBkZWZpbmVkIGluIEFwcEtp
dC4uLiBvZGQKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBjb2x1
bW5IZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYQ29sdW1uSGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3Rv
ciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1u
SGVhZGVyc0FycmF5KTsKKyAgICBhdXRvIGNvbHVtbkhlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9y
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGNvbHVtbkhlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJu
IGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5IZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMTg4LDcgKzExNjYsNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVy
cygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93SGVh
ZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJv
d0hlYWRlclVJRWxlbWVudHMiXTsKLSAgICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBjb252ZXJ0
TlNBcnJheVRvVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KHJvd0hlYWRlcnNBcnJheSk7
CisgICAgYXV0byByb3dIZWFkZXJzVmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pihyb3dIZWFkZXJzQXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVu
dHMocm93SGVhZGVyc1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApA
QCAtMTE5OSw3ICsxMTc3LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNvbHVtbnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwot
ICAgIGF1dG8gY29sdW1uc1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4oY29sdW1uc0FycmF5KTsKKyAgICBhdXRvIGNvbHVtbnNWZWN0b3IgPSBt
YWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KGNvbHVtbnNBcnJheSk7CiAgICAgcmV0
dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVjdG9yKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCkBAIC0xMjEwLDcgKzExODgsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93c0FycmF5ID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93c0F0
dHJpYnV0ZV07Ci0gICAgYXV0byByb3dzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihyb3dzQXJyYXkpOworICAgIGF1dG8gcm93c1ZlY3RvciA9
IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4ocm93c0FycmF5KTsKICAgICByZXR1
cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKQEAgLTEyMjEsNyArMTE5OSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNlbGxzQXJyYXkg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVmlzaWJsZUNlbGxz
Il07Ci0gICAgYXV0byBjZWxsc1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4oY2VsbHNBcnJheSk7CisgICAgYXV0byBjZWxsc1ZlY3RvciA9IG1h
a2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY2VsbHNBcnJheSk7CiAgICAgcmV0dXJu
IGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjZWxsc1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIApAQCAtMTMwMiw3ICsxMjgwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2UoKQogCiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRS
b3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCiB7Ci0gICAgTlNBcnJheSAqY29sUm93QXJy
YXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWdu
ZWRJbnQ6Y29sXSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOwor
ICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5ID0gQFtAKGNvbCksIEAocm93KV07CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IiBmb3JQYXJhbWV0ZXI6Y29sUm93
QXJyYXldOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCkBAIC0xNDI4LDcgKzE0MDYs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkKIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJy
YXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmVsZW1lbnQtPnBsYXRmb3JtVUlF
bGVtZW50KCldOworICAgIE5TQXJyYXkqIGFycmF5ID0gQFtlbGVtZW50LT5wbGF0Zm9ybVVJRWxl
bWVudCgpXTsKICAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTphcnJheSBmb3JB
dHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKIH0KQEAgLTE0NDAsNyArMTQxOCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBOU0FycmF5ICpzZWxlY3RlZENoaWxkcmVuID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJl
bkF0dHJpYnV0ZV07Ci0gICAgTlNBcnJheSAqYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6ZWxlbWVudC5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBOU0FycmF5ICphcnJheSA9IEBb
ZWxlbWVudC5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBpZiAoc2VsZWN0ZWRDaGlsZHJlbikK
ICAgICAgICAgYXJyYXkgPSBbc2VsZWN0ZWRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zy
b21BcnJheTphcnJheV07CiAgICAgW21fZWxlbWVudCBfYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFy
cmF5IGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
XTsKQEAgLTE2NjYsOCArMTY0NCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVt
b3ZlU2VsZWN0aW9uKCkKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0
ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRl
eHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTY3NywxMCArMTY1NSwxMCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKAogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRlcnMg
PSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKLSAgICBbcGFyYW1ldGVycyBzZXRP
YmplY3Q6KF9fYnJpZGdlIGlkKXN0YXJ0LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvcktl
eTpAIkFYU3RhcnRUZXh0TWFya2VyUmFuZ2UiXTsKKyAgICBbcGFyYW1ldGVycyBzZXRPYmplY3Q6
c3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yS2V5OkAiQVhTdGFydFRleHRNYXJr
ZXJSYW5nZSJdOwogICAgIFtwYXJhbWV0ZXJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Zm9yd2FyZF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0RGlyZWN0aW9uIl07CiAgICAgaWQg
dGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWE1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyc107
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKF9fYnJpZGdlIENGVHlw
ZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjkwLDcgKzE2NjgsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVs
ZW1lbnQoQQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJr
ZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0
TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiIGZvclBhcmFtZXRlcjplbGVtZW50LT5wbGF0Zm9ybVVJ
RWxlbWVudCgpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzAwLDcgKzE2NzgsNyBAQCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07Ci0g
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKF9fYnJpZGdlIENGVHlwZVJl
Zil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTc0MSw3ICsxNzE5LDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQpCiBpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5T
TnVtYmVyKiBsZW5ndGhWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIE5TTnVtYmVyKiBsZW5n
dGhWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZW5n
dGhGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKV07CiAgICAgcmV0dXJuIFtsZW5ndGhWYWx1ZSBpbnRWYWx1ZV07CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTc1MSw3ICsxNzI5LDcgQEAgaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKgogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9y
bVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlKCldOwogICAgIGlmICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRT
dHJpbmcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTc2Niw3ICsx
NzQ0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogaW5kZXhOdW1i
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSW5kZXhGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIE5TTnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJbmRleEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjptYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gW2luZGV4TnVtYmVy
IGludFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNzc3LDcg
KzE3NTUsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50IHRleHRJbmRleAogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZvckluZGV4IiBmb3JQYXJhbWV0ZXI6W05TTnVt
YmVyIG51bWJlcldpdGhJbnRlZ2VyOnRleHRJbmRleF1dOwotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzg2LDcgKzE3NjQsNyBA
QCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9ySW5kZXgoaW50IHRleHRJbmRleAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogdmFsaWROdW1iZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlcklz
VmFsaWQiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9yUGFyYW1ldGVy
OnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gW3ZhbGlkTnVt
YmVyIGJvb2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC0xNzk2LDgg
KzE3NzQsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlk
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFyawogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXByZXZpb3Vz
TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgwNiw4ICsxNzg0LDgg
QEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlv
dXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHkKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5l
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0TWFya2VyKTsKKyAgICBpZCBuZXh0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobmV4dE1hcmtl
cik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTgxNiw3ICsxNzk0LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHQKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCldOworICAgIGlkIHRleHRTdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0
ZXI6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVybiBb
dGV4dFN0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIApAQCAtMTg0Niw3ICsxODI0LDcgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBjcmVhdGVKU1N0cmluZ1JlZihpZCBzdHJpbmcpCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAg
IGlkIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhB
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdl
IGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBpZCBzdHJp
bmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRl
ZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOm1hcmtlclJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICByZXR1cm4gY3JlYXRlSlNTdHJpbmdSZWYoc3Ry
aW5nKTsKIH0KIApAQCAtMTg1NCw5ICsxODMyLDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEK
IHsKICAgICBpZCBwYXJhbWV0ZXIgPSBuaWw7CiAgICAgaWYgKGluY2x1ZGVTcGVsbENoZWNrKQot
ICAgICAgICBwYXJhbWV0ZXIgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0Fu
ZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOmluY2x1ZGVTcGVsbENoZWNrXSwgQCJBWFNw
ZWxsQ2hlY2siLCAoX19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCksIEAiQVhUZXh0TWFya2VyUmFuZ2UiLCBuaWxdOworICAgICAgICBwYXJhbWV0ZXIgPSBA
eyBAIkFYU3BlbGxDaGVjayI6IGluY2x1ZGVTcGVsbENoZWNrID8gQFlFUyA6IEBOTywgQCJBWFRl
eHRNYXJrZXJSYW5nZSI6IG1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIH07
CiAgICAgZWxzZQotICAgICAgICBwYXJhbWV0ZXIgPSAoX19icmlkZ2UgaWQpbWFya2VyUmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgICAgIHBhcmFtZXRlciA9IG1hcmtlclJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlkIHN0cmluZyA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwogICAgIHJl
dHVybiBjcmVhdGVKU1N0cmluZ1JlZihzdHJpbmcpOwogfQpAQCAtMTg2NCw5ICsxODQyLDkgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRN
YXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogdGV4
dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihfX2JyaWRnZSBpZClzdGFydE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChfX2JyaWRnZSBpZCllbmRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpLCBuaWxdOworICAgIE5TQXJyYXkqIHRleHRNYXJrZXJzID0gQFtzdGFy
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2Vy
cyIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
ODc1LDggKzE4NTMsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQQogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJr
ZXJSYW5nZSgpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdl
IENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg4NSw4
ICsxODYzLDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmcKIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBm
b3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
XTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJl
Zil0ZXh0TWFya2VyKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZv
clBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4OTYsNyArMTg3NCw3IEBA
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRN
YXJrZXJGb3JCb3VuZHMoaW50IHgsIGluCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eUVuZFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0
cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIo
KF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkwNiw3ICsxODg0LDcgQEAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91
bmRzKGludCB4LAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlTdGFydFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBh
cmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENG
VHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIo
dGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTkxNiw3ICsxODk0LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JQb3Np
dGlvbiIgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50Ok5TTWFrZVBvaW50KHgs
IHkpXV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5
cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRl
eHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE5MjUsNyArMTkwMyw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHVpRWxlbWVudCA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOworICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6bWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
dWlFbGVtZW50KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xOTM2LDcg
KzE5MTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXIoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYU3RhcnRUZXh0TWFya2VyIl07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NDYsNyArMTkyNCw3IEBAIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlciJdOwotICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRN
YXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xOTU1LDcgKzE5MzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
IG1hcmtlclJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGVdOworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eVNldFZhbHVlOm1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJp
YnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTk2
NCw4ICsxOTQyLDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZp
c2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIKIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0
ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk3NCw4ICsxOTUyLDggQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29y
ZFRleHRNYXJrZXJSYW5nZUZvclQKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKF9fYnJp
ZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTk4NCw4ICsxOTYyLDggQEAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3IKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgcHJldmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwot
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXBy
ZXZpb3VzVGV4dE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzV29yZFN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzVGV4
dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTk5NCw4ICsxOTcyLDggQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGUKIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dFRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFdvcmRF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpbmV4dFRleHRNYXJrZXIpOworICAgIGlkIG5l
eHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WE5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKG5leHRUZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDA0LDggKzE5ODIsOCBAQCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVuZFRleHRNYXJrZXJG
b3JUZXh0TWFyawogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBl
UmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yMDE0LDggKzE5OTIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvcgogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJh
Z3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHBy
ZXZpb3VzVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhQcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwot
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXBy
ZXZpb3VzVGV4dE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNUZXh0TWFya2VyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIocHJldmlv
dXNUZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yMDI0LDggKzIwMDIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtl
cgogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBh
cmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5l
eHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WE5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihf
X2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpbmV4dFRleHRNYXJr
ZXIpOworICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWE5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIg
Zm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobmV4dFRleHRNYXJrZXIpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMzQsOCArMjAx
Miw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5l
eHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFNlbnRl
bmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNDQsOCArMjAyMiw4IEBAIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFy
a2VyUmFuZ2VGb3JUCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlk
Z2UgQ0ZUeXBlUmVmKXByZXZpb3VzVGV4dE1hcmtlcik7CisgICAgaWQgcHJldmlvdXNUZXh0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3Vz
U2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcihwcmV2aW91c1RleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNTQsOCArMjAzMiw4IEBAIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VT
dGFydFRleHRNYXJrZXJGCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBpZCBuZXh0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYp
bmV4dFRleHRNYXJrZXIpOworICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1hcmtlcik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDBiNzQ0NDk1MjFj
MDYyOGVhNjc2NWI0M2QwZmJjNjdlYzM2M2RiMmUuLjk5MDZhOWY3Y2YzMzg5NGQzZTE1ZTM5ZDJh
ZTEwNjY3YWU5ZGIxNzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KQEAgLTkyLDkgKzkyLDkgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPGdldG9wdC5oPgorI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2lt
cG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTExODAsNyArMTE4MCw3IEBAIHN0YXRpYyB2
b2lkIGFkZFRlc3RQbHVnaW5zVG9QbHVnaW5TZWFyY2hQYXRoKGNvbnN0IGNoYXIqIGV4ZWN1dGFi
bGVQYXRoKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICpwd2Qg
PSBbW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmV4ZWN1dGFibGVQYXRoXSBzdHJpbmdC
eURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOwotICAgIFtXZWJQbHVnaW5EYXRhYmFzZSBzZXRB
ZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnB3ZF1dOwor
ICAgIFtXZWJQbHVnaW5EYXRhYmFzZSBzZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6QFtwd2Rd
XTsKICAgICBbW1dlYlBsdWdpbkRhdGFiYXNlIHNoYXJlZERhdGFiYXNlXSByZWZyZXNoXTsKICNl
bmRpZgogfQpAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9D
b25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIENsZWFyIHRoZSBjb250ZW50cyBvZiB0
aGUgZ2VuZXJhbCBwYXN0ZWJvYXJkCi0gICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNTdHJpbmdQYm9hcmRU
eXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBk
ZWNsYXJlVHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CiAjZW5kaWYKIAog
ICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNG
b3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuY19zdHIoKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0
ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbQppbmRleCAxMTljM2RiOWQzNGZiNjY2NzcxNmMwOTUyNmY4YzhkOWYyNDU2MmI1Li5m
OTMxYzZhZjUxMzQxNDQyMzRmMGI2NzllNTQ4N2I5ZjhlZjBjNGU5IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KQEAgLTg2
LDcgKzg2LDcgQEAgKyAodm9pZClyZWxlYXNlTG9jYWxQYXN0ZWJvYXJkcwogLy8gb2YgdGhlIHVz
dWFsIFdlYlNjcmlwdE9iamVjdCB0aGF0IGlzIHBhc3NlZCBhcm91bmQKIC0gKE5TSW50ZWdlcilk
ZWNsYXJlVHlwZTooTlNTdHJpbmcgKil0eXBlIG93bmVyOihpZCluZXdPd25lcgogewotICAgIHJl
dHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93
bmVyOm5ld093bmVyXTsKKyAgICByZXR1cm4gW3NlbGYgZGVjbGFyZVR5cGVzOkBbdHlwZV0gb3du
ZXI6bmV3T3duZXJdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IGRjOTI4NzgxN2FlMmFlMzllNzZiNTZi
ZmM2YzYzYWUxMWM1ZDQyOTUuLjM2YTQwNGIwNTlhNDZmY2JmNmFlMmZkNzFiNzM2NzgzNWQzMzli
OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCkBAIC00NDAsNyArNDQwLDcgQEAgLSAodm9pZCliZWdpbkRyYWdXaXRoRmlsZXM6
KFdlYlNjcmlwdE9iamVjdCopanNGaWxlUGF0aHMKICAgICBhc3NlcnQoW2pzRmlsZVBhdGhzIGlz
S2luZE9mQ2xhc3M6W1dlYlNjcmlwdE9iamVjdCBjbGFzc11dKTsKIAogICAgIE5TUGFzdGVib2Fy
ZCAqcGJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOwotICAg
IFtwYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU0ZpbGVuYW1l
c1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW3Bib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0Zp
bGVuYW1lc1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CiAKICAgICBOU1VSTCAqY3VycmVudFRlc3RV
UkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbW21haW5GcmFtZSB3ZWJWaWV3XSBtYWluRnJhbWVV
UkxdXTsKIApAQCAtMTQ5Myw4ICsxNDkzLDggQEAgLSAodm9pZClzZW50VG91Y2hFdmVudE9mVHlw
ZTooV2ViRXZlbnRUeXBlKXR5cGUKIAogICAgIGZvciAoU3ludGhldGljVG91Y2ggKmN1cnJUb3Vj
aCBpbiB0b3VjaGVzKSB7CiAgICAgICAgIFt0b3VjaExvY2F0aW9ucyBhZGRPYmplY3Q6W05TVmFs
dWUgdmFsdWVXaXRoQ0dQb2ludDpjdXJyVG91Y2gubG9jYXRpb25dXTsKLSAgICAgICAgW3RvdWNo
SWRlbnRpZmllcnMgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y3Vy
clRvdWNoLmlkZW50aWZpZXJdXTsKLSAgICAgICAgW3RvdWNoUGhhc2VzIGFkZE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmN1cnJUb3VjaC5waGFzZV1dOworICAgICAgICBb
dG91Y2hJZGVudGlmaWVycyBhZGRPYmplY3Q6QChjdXJyVG91Y2guaWRlbnRpZmllcildOworICAg
ICAgICBbdG91Y2hQaGFzZXMgYWRkT2JqZWN0OkAoY3VyclRvdWNoLnBoYXNlKV07CiAKICAgICAg
ICAgaWYgKChjdXJyVG91Y2gucGhhc2UgPT0gVUlUb3VjaFBoYXNlRW5kZWQpIHx8IChjdXJyVG91
Y2gucGhhc2UgPT0gVUlUb3VjaFBoYXNlQ2FuY2VsbGVkKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRp
b25Qcm92aWRlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIubW0KaW5kZXggZDlmNTBkMzA3NjUxY2EyNmM0NWI0NzMyMDU2MTc5ZDNjY2Rk
MTc3Mi4uMjQyODRmMGUwNjc5YzgzNWZhZTUxYTk3NGVkNTRlMjFmNTJkODY0NyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLm1tCkBAIC03NSw3ICs3NSw3IEBAIC0gKHZvaWQpY2FuY2VsTm90aWZpY2F0aW9uOihXZWJO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9
IFtub3RpZmljYXRpb24gbm90aWZpY2F0aW9uSURdOwogICAgIEFTU0VSVChfbm90aWZpY2F0aW9u
cy5jb250YWlucyhub3RpZmljYXRpb25JRCkpOwogCi0gICAgWyhfX2JyaWRnZSBXZWJWaWV3ICop
X25vdGlmaWNhdGlvblZpZXdNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKSBfbm90aWZpY2F0aW9uc0Rp
ZENsb3NlOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2ln
bmVkTG9uZ0xvbmc6bm90aWZpY2F0aW9uSURdXV07CisgICAgWyhfX2JyaWRnZSBXZWJWaWV3ICop
X25vdGlmaWNhdGlvblZpZXdNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKSBfbm90aWZpY2F0aW9uc0Rp
ZENsb3NlOkBbW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZExvbmdMb25nOm5vdGlmaWNhdGlv
bklEXV1dOwogfQogCiAtICh2b2lkKW5vdGlmaWNhdGlvbkRlc3Ryb3llZDooV2ViTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
T2JqQ0NvbnRyb2xsZXIubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxl
ci5tCmluZGV4IDBiMTIxZTkwMWJhNDUxZmQ5NzFiNjQxMTlmNDAyZDc2Yjg1MTBmNmYuLmMxYTEw
YTdiNzUzNjEwYmMyOGJjOGY3YWNlMjkxMjFlNjQ1NjJhMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9PYmpDQ29udHJvbGxlci5tCkBAIC0xNDYsMjUgKzE0NiwyMCBAQCAtIChpZClvYmpl
Y3RPZkNsYXNzOihOU1N0cmluZyAqKWFDbGFzcwogICAgIGlmIChbYUNsYXNzIGlzRXF1YWxUb1N0
cmluZzpAIk5TQ0ZCb29sZWFuIl0pCiAgICAgICAgIHJldHVybiBAWUVTOwogICAgIGlmIChbYUNs
YXNzIGlzRXF1YWxUb1N0cmluZzpAIk5TQ0ZOdW1iZXIiXSkKLSAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoSW50OjFdOworICAgICAgICByZXR1cm4gQCgxKTsKICAgICBpZiAoW2FD
bGFzcyBpc0VxdWFsVG9TdHJpbmc6QCJOU0NGU3RyaW5nIl0pCiAgICAgICAgIHJldHVybiBAIiI7
CiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiV2ViU2NyaXB0T2JqZWN0Il0pCiAg
ICAgICAgIHJldHVybiBzZWxmOwogICAgIGlmIChbYUNsYXNzIGlzRXF1YWxUb1N0cmluZzpAIk5T
QXJyYXkiXSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJu
IEBbXTsKIAogICAgIHJldHVybiBuaWw7CiB9CiAKIC0gKE5TQXJyYXkgKilhcnJheU9mU3RyaW5n
CiB7Ci0gICAgTlNTdHJpbmcgKnN0cmluZ3NbM107Ci0gICAgc3RyaW5nc1swXSA9IEAib25lIjsK
LSAgICBzdHJpbmdzWzFdID0gQCJ0d28iOwotICAgIHN0cmluZ3NbMl0gPSBAInRocmVlIjsKLSAg
ICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RyaW5ncyBjb3Vu
dDozXTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIEBbIEAib25lIiwgQCJ0d28iLCBA
InRocmVlIiBdOwogfQogCiAtIChCT09MKWlkZW50aXR5SXNFcXVhbDooV2ViU2NyaXB0T2JqZWN0
ICopYSA6KFdlYlNjcmlwdE9iamVjdCAqKWIKQEAgLTIxNyw5ICsyMTIsMTEgQEAgLSAoQk9PTCl0
ZXN0V3JhcHBlclJvdW5kVHJpcHBpbmc6KFdlYlNjcmlwdE9iamVjdCAqKXdlYlNjcmlwdE9iamVj
dAogICAgIGlmIChbW3dlYlNjcmlwdE9iamVjdCBldmFsdWF0ZVdlYlNjcmlwdDpAIih7IH0pIl0g
Y2xhc3NdICE9IFt3ZWJTY3JpcHRPYmplY3QgY2xhc3NdKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBbd2ViU2NyaXB0T2JqZWN0IHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoSW50
OjY2Nl0gZm9yS2V5OkAia2V5Il07Ci0gICAgaWYgKCFbW3dlYlNjcmlwdE9iamVjdCB2YWx1ZUZv
cktleTpAImtleSJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gfHwKLSAgICAgICAg
IVtbd2ViU2NyaXB0T2JqZWN0IHZhbHVlRm9yS2V5OkAia2V5Il0gaXNFcXVhbFRvTnVtYmVyOltO
U051bWJlciBudW1iZXJXaXRoSW50OjY2Nl1dKQorICAgIFt3ZWJTY3JpcHRPYmplY3Qgc2V0VmFs
dWU6QCg2NjYpIGZvcktleTpAImtleSJdOworICAgIGlkIHZhbHVlID0gW3dlYlNjcmlwdE9iamVj
dCB2YWx1ZUZvcktleTpAImtleSJdOworICAgIGlmICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6TlNO
dW1iZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbdmFsdWUgaXNF
cXVhbFRvTnVtYmVyOkAoNjY2KV0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFt3ZWJT
Y3JpcHRPYmplY3QgcmVtb3ZlV2ViU2NyaXB0S2V5OkAia2V5Il07CkBAIC0yNzIsNyArMjY5LDcg
QEAgLSAodm9pZClzdG9yZVdlYlNjcmlwdE9iamVjdDooV2ViU2NyaXB0T2JqZWN0ICopd2ViU2Ny
aXB0T2JqZWN0CiAKIC0gKE5TQXJyYXkgKil0ZXN0QXJyYXkKIHsKLSAgICByZXR1cm4gW05TQXJy
YXkgYXJyYXldOworICAgIHJldHVybiBAW107CiB9CiAKIC0gKE5TQXJyYXkgKil0ZXN0QXJyYXlP
Zk9iamVjdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVy
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXgg
MDA2NTk1NmM4MWRkNzEzNWRlMDI3ZjQ5YTFmNTNiZWM2ODM2MDcyYS4uOTMxMmQ4YjhhOTc2ZmE1
YTJiMTRkYWE0ZTMzNjA0ZTQyNGJhMDUzMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0KQEAgLTE3MywxOSArMTczLDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKICAgICBbb3JpZ2lu
IHJlbGVhc2VdOwogfQogCi1KU1ZhbHVlUmVmIG9yaWdpbnNBcnJheVRvSlMoSlNDb250ZXh0UmVm
IGNvbnRleHQsIE5TQXJyYXkgKm9yaWdpbnMpCitzdGF0aWMgSlNPYmplY3RSZWYgb3JpZ2luc0Fy
cmF5VG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKIHsKLSAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW29yaWdpbnMgY291bnRdOwotCi0gICAgSlNWYWx1ZVJlZiBhcnJh
eVJlc3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2Jq
ZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAw
KTsKKyAgICBhdXRvIGNvdW50ID0gW29yaWdpbnMgY291bnRdOworICAgIGF1dG8gYXJyYXkgPSBK
U09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCBudWxscHRyLCBudWxscHRyKTsKICAgICBmb3Ig
KE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIE5TU3RyaW5nICpv
cmlnaW4gPSBbW29yaWdpbnMgb2JqZWN0QXRJbmRleDppXSBkYXRhYmFzZUlkZW50aWZpZXJdOwog
ICAgICAgICBhdXRvIG9yaWdpbkpTID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
KF9fYnJpZGdlIENGU3RyaW5nUmVmKW9yaWdpbikpOwotICAgICAgICBKU09iamVjdFNldFByb3Bl
cnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4
dCwgb3JpZ2luSlMuZ2V0KCkpLCAwKTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5k
ZXgoY29udGV4dCwgYXJyYXksIGksIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIG9yaWdpbkpT
LmdldCgpKSwgMCk7CiAgICAgfQotCi0gICAgcmV0dXJuIGFycmF5UmVzdWx0OworICAgIHJldHVy
biBhcnJheTsKIH0KIAogSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpvcmlnaW5zV2l0aEFwcGxpY2F0
aW9uQ2FjaGUoSlNDb250ZXh0UmVmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubQppbmRleCAxY2JiZDcxZDRhYzFiYWFlNzFi
NGY5YzQ3NWNhYjIxN2JhMjNjMjQ1Li4zNWVhZThmMDUzZDg3OWFiYTU3MWZiOWIzOWQwMzRmMmQ4
Njg0YzRjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29u
dHJvbGxlck1hYy5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250
cm9sbGVyTWFjLm0KQEAgLTM4Nyw3ICszODcsNyBAQCAtIChOU0FycmF5ICopbWFya2VkUmFuZ2UK
IAogICAgIGlmICh0ZXh0SW5wdXQpIHsKICAgICAgICAgTlNSYW5nZSByYW5nZSA9IFt0ZXh0SW5w
dXQgbWFya2VkUmFuZ2VdOwotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxvY2F0aW9uXSwgW05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyYW5nZS5sZW5ndGhdLCBuaWxdOworICAgICAgICBy
ZXR1cm4gQFtAKHJhbmdlLmxvY2F0aW9uKSwgQChyYW5nZS5sZW5ndGgpXTsKICAgICB9CiAKICAg
ICByZXR1cm4gbmlsOwpAQCAtMzk5LDcgKzM5OSw3IEBAIC0gKE5TQXJyYXkgKilzZWxlY3RlZFJh
bmdlCiAKICAgICBpZiAodGV4dElucHV0KSB7CiAgICAgICAgIE5TUmFuZ2UgcmFuZ2UgPSBbdGV4
dElucHV0IHNlbGVjdGVkUmFuZ2VdOwotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxvY2F0aW9uXSwg
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyYW5nZS5sZW5ndGhdLCBuaWxdOworICAg
ICAgICByZXR1cm4gQFtAKHJhbmdlLmxvY2F0aW9uKSwgQChyYW5nZS5sZW5ndGgpXTsKICAgICB9
CiAKICAgICByZXR1cm4gbmlsOwpAQCAtNDE1LDEyICs0MTUsNyBAQCAtIChOU0FycmF5ICopZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyc0Zyb206KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAogICAg
ICAgICAgICAgcmVjdC5vcmlnaW4gPSBbW3dlYlZpZXcgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9C
YXNlOnJlY3Qub3JpZ2luXTsKICAgICAgICAgICAgIHJlY3QgPSBbd2ViVmlldyBjb252ZXJ0UmVj
dDpyZWN0IGZyb21WaWV3Om5pbF07CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0
OnJlY3Qub3JpZ2luLnhdLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpy
ZWN0Lm9yaWdpbi55XSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6cmVj
dC5zaXplLndpZHRoXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6cmVj
dC5zaXplLmhlaWdodF0sCi0gICAgICAgICAgICBuaWxdOworICAgICAgICByZXR1cm4gQFsgQChy
ZWN0Lm9yaWdpbi54KSwgQChyZWN0Lm9yaWdpbi55KSwgQChyZWN0LnNpemUud2lkdGgpLCBAKHJl
Y3Quc2l6ZS5oZWlnaHQpIF07CiAgICAgfQogCiAgICAgcmV0dXJuIG5pbDsKQEAgLTQ4NCw3ICs0
NzksNyBAQCAtIChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKilkaWN0YXRlZFN0cmluZ1dpdGhQ
cmltYXJ5U3RyaW5nOihOU1N0cmluZyopYVN0cmluZwogICAgIGlmICghc3ViU3RyaW5nV2l0aEFs
dGVybmF0aXZlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNUZXh0QWx0ZXJuYXRpdmVz
KiBhbHRlcm5hdGl2ZU9iamVjdCA9IFtbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdp
dGhQcmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmlu
Z3M6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmFsdGVybmF0aXZlXV0gYXV0b3JlbGVhc2VdOwor
ICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVPYmplY3QgPSBbW1tOU1RleHRBbHRl
cm5hdGl2ZXMgYWxsb2NdIGluaXRXaXRoUHJpbWFyeVN0cmluZzpzdWJTdHJpbmdXaXRoQWx0ZXJu
YXRpdmUgYWx0ZXJuYXRpdmVTdHJpbmdzOkBbYWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07CiAg
ICAgaWYgKCFhbHRlcm5hdGl2ZU9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtNTM4
LDcgKzUzMyw3IEBAIC0gKEJPT0wpaW50ZXJwcmV0S2V5RXZlbnRzOihOU0FycmF5ICopZXZlbnRB
cnJheSB3aXRoU2VuZGVyOihXZWJIVE1MVmlldyAqKXNlbmRlCiAKICAgICBbbW9kaWZpZXJzIHJl
bGVhc2VdOwogICAgIAotICAgIGlkIHJlc3VsdCA9IFtpbnB1dE1ldGhvZEhhbmRsZXIgY2FsbFdl
YlNjcmlwdE1ldGhvZDpAImNhbGwiIHdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czppbnB1dE1ldGhvZEhhbmRsZXIsIGV2ZW50UGFyYW0sIG5pbF1dOworICAgIGlkIHJlc3Vs
dCA9IFtpbnB1dE1ldGhvZEhhbmRsZXIgY2FsbFdlYlNjcmlwdE1ldGhvZDpAImNhbGwiIHdpdGhB
cmd1bWVudHM6QFtpbnB1dE1ldGhvZEhhbmRsZXIsIGV2ZW50UGFyYW1dXTsKICAgICBpZiAoIVty
ZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihib29sVmFsdWUpXSB8fCAhW3Jlc3Vs
dCBib29sVmFsdWVdKSB7CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5kZWNsYXJl
ZC1zZWxlY3RvciIpCiAgICAgICAgIFtzZW5kZXIgZG9Db21tYW5kQnlTZWxlY3RvcjpAc2VsZWN0
b3Iobm9vcDopXTsgLy8gQXBwS2l0IHNlbmRzIG5vb3A6IGlmIHRoZSBpbWUgZG9lcyBub3QgaGFu
ZGxlIGFuIGV2ZW50CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQppbmRleCAwZWVhYTA4Y2EyMjNiZTQ5NjY3NjA0ZDllOWY2NTE5ZGFmZTdj
MmM2Li5lZTMyMzU5MjE1MTNjM2U5ZTBhMTE1Y2QwYTNjZjkwY2Y2ZTcyNzQ3IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTE2
NCw3ICsxNjQsNyBAQCBOU1VuZG9NYW5hZ2VyICpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnBsYXRm
b3JtVW5kb01hbmFnZXIoKSBjb25zdAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNvcHlU
ZXh0KEpTU3RyaW5nUmVmIHRleHQpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0g
TlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVU
eXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gb3du
ZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU1Bhc3RlYm9hcmRUeXBl
U3RyaW5nXSBvd25lcjpuaWxdOwogICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzp0ZXh0LT5zdHJp
bmcoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKaW5k
ZXggNzk3YzcwZGM0YTczMzBkMTcwM2I3NDE4ZmVjODNlM2Q3MWZmYTgwMS4uYjczODQwZWUwNTBl
YTliOTYzNzAwZTI2ZTMyZTM0OTQ2ODhlNTY5NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcApAQCAtNTgsMTUgKzU4
LDYgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0
Zm9ybVVJRWxlbWVudCBlbGVtZW50KQogewogfQogCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVy
KQotICAgIDogbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLXsKLX0KLQotQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQotewotfQotCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJF
bGVtZW50KQogewogICAgIENPTVB0cjxJQWNjZXNzaWJsZUNvbXBhcmFibGU+IGNvbXBhcmFibGUg
PSBjb21wYXJhYmxlT2JqZWN0KG1fZWxlbWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0gYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KaW5kZXggNjI5
ZDFkZmNmMjM3YjdlNmQ5NDhlNWFkMjcwYzZlYjE1OTFmYzRhOS4uN2ExZDNmNzYxMTU4NzQwMmIw
ZDE0YWQ3NjRmYmRkZTgzZTM4NzE2MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQpAQCAtMjQyLDEyICsyNDIsMTAg
QEAgLSAodm9pZClzZXRSZXN1bHRzRnJvbUpTT2JqZWN0OihKU09iamVjdFJlZilyZXN1bHRzT2Jq
ZWN0IGluQ29udGV4dDooSlNDb250ZXh0UmUKICAgICAgICAgICAgICAgICBhdXRvIGRldGFpbHNP
YmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZGV0YWlsc1ZhbHVlLCBudWxscHRyKTsK
ICAgICAgICAgICAgICAgICBhdXRvIGRldGFpbHNPYmplY3RQcm9wZXJ0aWVzID0gSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCBkZXRhaWxzT2JqZWN0KTsKICAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBkZXRhaWxJbmRleCA9IDA7IGRldGFpbEluZGV4IDwgSlNQcm9wZXJ0eU5h
bWVBcnJheUdldENvdW50KGRldGFpbHNPYmplY3RQcm9wZXJ0aWVzKTsgKytkZXRhaWxJbmRleCkg
ewotICAgICAgICAgICAgICAgICAgICBhdXRvIGRldGFpbCA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0YWls
T2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHlBdElu
ZGV4KGNvbnRleHQsIGRldGFpbHNPYmplY3QsIGRldGFpbEluZGV4LCBudWxscHRyKSwgbnVsbHB0
cik7CiAgICAgICAgICAgICAgICAgICAgIGxvbmcgZnJvbSA9IGxyb3VuZGwoSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZGV0YWlsT2JqZWN0LCBm
cm9tUHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOwogICAgICAgICAgICAg
ICAgICAgICBsb25nIHRvID0gbHJvdW5kbChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBkZXRhaWxPYmplY3QsIHRvUHJvcGVydHlOYW1lLmdldCgp
LCBudWxscHRyKSwgbnVsbHB0cikpOwotICAgICAgICAgICAgICAgICAgICBbZGV0YWlsIHNldE9i
amVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShmcm9tLCB0byAtIGZyb20p
XSBmb3JLZXk6TlNHcmFtbWFyUmFuZ2VdOwotICAgICAgICAgICAgICAgICAgICBbZGV0YWlscyBh
ZGRPYmplY3Q6ZGV0YWlsLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgW2RldGFpbHMgYWRk
T2JqZWN0OkB7IE5TR3JhbW1hclJhbmdlOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VS
YW5nZShmcm9tLCB0byAtIGZyb20pXSB9XTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UoZGV0YWlsc09iamVjdFByb3BlcnRpZXMp
OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQpp
bmRleCA0MjM3M2M0N2I2NWM3ZWY1MGQ4NGI0OWI3YjBkNjczZjdjNjI0NDNhLi45OTI1OGQ1Y2Qy
NWE3YzUwNjcyYzE0NjJhNDM3ZTY4OTRkMTY1YTRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbi5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0Nv
bnRlbnRSdWxlTGlzdEFjdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wgcmVjZWl2ZWROb3RpZmljYXRp
b247CkBAIC01OCwxNSArNTksNiBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uIHsKICAgICB9CiB9Owog
Ci1zdGF0aWMgVmVjdG9yPFN0cmluZz4gdG9WZWN0b3IoTlNBcnJheTxOU1N0cmluZyAqPiAqYXJy
YXkpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIHZlY3Rvci5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGFycmF5LmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgaW4g
YXJyYXkpCi0gICAgICAgIHZlY3Rvci5hcHBlbmQoc3RyaW5nKTsKLSAgICByZXR1cm4gdmVjdG9y
OwotfQotCiBzdGF0aWMgVmVjdG9yPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uTGlzdDsKIHN0
YXRpYyBSZXRhaW5QdHI8TlNVUkw+IG5vdGlmaWNhdGlvblVSTDsKIHN0YXRpYyBSZXRhaW5QdHI8
TlNTdHJpbmc+IG5vdGlmaWNhdGlvbklkZW50aWZpZXI7CkBAIC04OCw3ICs4MCw3IEBAIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgVVJMOihOU1VSTCAqKXVybCBjb250ZW50
UnVsZUxpc3RJZGVudGlmaWVyCiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29udGVudFJ1bGVMaXN0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBw
ZXJmb3JtZWRBY3Rpb246KF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbiAqKWFjdGlvbiBmb3JVUkw6
KE5TVVJMICopdXJsCiB7Ci0gICAgbm90aWZpY2F0aW9uTGlzdC5hcHBlbmQoeyBpZGVudGlmaWVy
LCB1cmwuYWJzb2x1dGVTdHJpbmcsICEhYWN0aW9uLmJsb2NrZWRMb2FkLCAhIWFjdGlvbi5ibG9j
a2VkQ29va2llcywgISFhY3Rpb24ubWFkZUhUVFBTLCB0b1ZlY3RvcihhY3Rpb24ubm90aWZpY2F0
aW9ucykgfSk7CisgICAgbm90aWZpY2F0aW9uTGlzdC5hcHBlbmQoeyBpZGVudGlmaWVyLCB1cmwu
YWJzb2x1dGVTdHJpbmcsICEhYWN0aW9uLmJsb2NrZWRMb2FkLCAhIWFjdGlvbi5ibG9ja2VkQ29v
a2llcywgISFhY3Rpb24ubWFkZUhUVFBTLCBtYWtlVmVjdG9yPFN0cmluZz4oYWN0aW9uLm5vdGlm
aWNhdGlvbnMpIH0pOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
c3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggZGIwMDg4NzdlNzU3Y2E2MjVhYjdlNzI3ZjVhOTA0
ZWJhY2E3ZGFkZS4uNjhiZTgxYjFiOTM1M2NiMDExZTE2OGMxZGM0Y2E4NDg5ZWU4OTY4ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5zKQogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2FwcEJvdW5kRG9tYWluczpeKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKLSAgICAgICAgTlNBcnJheSAqZG9tYWluc1RvQ29tcGFy
ZSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6QCIxMjcuMC4wLjEiLCBAImFwcGxlLmNvbSIs
IEAiYmFyLmNvbSIsIEAiZXhhbXBsZS5jb20iLCBAImZvby5jb20iLCBAImxvY2FsaG9zdCIsIEAi
dGVzdGRvbWFpbjEiLCAgQCJ3ZWJraXQub3JnIiwgbmlsXTsKKyAgICAgICAgTlNBcnJheSAqZG9t
YWluc1RvQ29tcGFyZSA9IEBbQCIxMjcuMC4wLjEiLCBAImFwcGxlLmNvbSIsIEAiYmFyLmNvbSIs
IEAiZXhhbXBsZS5jb20iLCBAImZvby5jb20iLCBAImxvY2FsaG9zdCIsIEAidGVzdGRvbWFpbjEi
LCAgQCJ3ZWJraXQub3JnIl07CiAKICAgICAgICAgTlNBcnJheSAqc29ydGVkRG9tYWlucyA9IFtk
b21haW5zIHNvcnRlZEFycmF5VXNpbmdTZWxlY3RvcjpAc2VsZWN0b3IoY2FzZUluc2Vuc2l0aXZl
Q29tcGFyZTopXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QYXN0ZUltYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUltYWdlLm1tCmluZGV4IDNhMmZjOTBmMGMyYmNlZmQxMzc5ZTYxOGE4MGVhNzU3
ZTY1OTRiOTUuLjk4NDg5ZjBiODYxMWVlYTAwNThiZTU5MDRjMjU2YjcxYjZjOGY4MmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2Uu
bW0KQEAgLTM5LDEzICszOSwxMyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgd3JpdGVJbWFn
ZURhdGFUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnR5cGUsIE5TRGF0YSAqZGF0YSkKIHsKLSAgICBb
W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDp0eXBlXSBvd25lcjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVy
YWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFt0eXBlXSBvd25lcjpuaWxdOwogICAgIFtbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXREYXRhOmRhdGEgZm9yVHlwZTp0eXBlXTsK
IH0KICNlbHNlCiB2b2lkIHdyaXRlSW1hZ2VEYXRhVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICp0eXBl
LCBOU0RhdGEgKmRhdGEpCiB7Ci0gICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRd
IHNldEl0ZW1zOkBbW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpkYXRhIGZvcktl
eTp0eXBlXV1dOworICAgIFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRJdGVt
czpAW0B7IHR5cGU6IGRhdGEgfV1dOwogfQogI2VuZGlmCiAKQEAgLTE1NSw4ICsxNTUsOCBAQCBU
RVNUKFBhc3RlSW1hZ2UsIFJldmVhbFNlbGVjdGlvbkFmdGVyUGFzdGluZ0ltYWdlKQogI2lmIFBM
QVRGT1JNKE1BQykKIHZvaWQgd3JpdGVCdW5kbGVGaWxlVG9QYXN0ZWJvYXJkKGlkIG9iamVjdCkK
IHsKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltO
U0FycmF5IGFycmF5V2l0aE9iamVjdDpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVyOm5pbF07
Ci0gICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHdyaXRlT2JqZWN0czpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOm9iamVjdCwgbmlsXV07CisgICAgW1tOU1Bhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW05TRmlsZW5hbWVzUGJvYXJkVHlwZV0g
b3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gd3JpdGVP
YmplY3RzOkBbb2JqZWN0XV07CiB9CiAKIFRFU1QoUGFzdGVJbWFnZSwgUGFzdGVHSUZGaWxlKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVdl
YkFyY2hpdmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3Rl
V2ViQXJjaGl2ZS5tbQppbmRleCBiNzg1ZjVjNGYyYmQ3MDJhMzI1YjM3MDUwNDZiZWU1OTgyNjMx
MThiLi5jYzdmNDQzOGM4MmRmOTRiMjkwZDc3N2E2YmM2YWViOTI3Yzc3ZDg4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJjaGl2ZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJj
aGl2ZS5tbQpAQCAtMjQ5LDcgKzI0OSw3IEBAIFRFU1QoUGFzdGVXZWJBcmNoaXZlLCBXZWJBcmNo
aXZlVHlwZUlkZW50aWZpZXIpCiAgICAgYXV0byBhcmNoaXZlID0gYWRvcHROUyhbW1dlYkFyY2hp
dmUgYWxsb2NdIGluaXRXaXRoTWFpblJlc291cmNlOm1haW5SZXNvdXJjZS5nZXQoKSBzdWJyZXNv
dXJjZXM6bmlsIHN1YmZyYW1lQXJjaGl2ZXM6bmlsXSk7CiAKICAgICBOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKLSAgICBbcGFzdGVi
b2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRl
Y2xhcmVUeXBlczpAWyhfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXSBvd25l
cjpuaWxdOwogICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W2FyY2hpdmUgZGF0YV0gZm9yVHlwZToo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiAKICAgICBhdXRvIHdlYlZp
ZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA5NDEyYTRmNTZmYzZkNDc5NzFhNGFlYmNlZjU5
Yzk0ZGE1YjY3ZjQ0Li44MWI2ZmQ4M2JiNGYxZDI4MDM5ODdjZjY1MjQ1MmNkNDY3MzZhODI2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtODE3LDcgKzgxNyw3IEBAIFRFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSkKIAogVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclNjcmlwdE5vdGlmaWNhdGlvbikKIHsKLSAg
ICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZpY2F0aW9uID0gW1tbV0tVc2VyU2NyaXB0IGFs
bG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBub3RpZmljYXRpb24nKSIg
aW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZv
ck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpbTlNBcnJheSBhcnJheV0gbGVnYWN5
QmxhY2tsaXN0OltOU0FycmF5IGFycmF5XSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAidGVzdDovLy9zY3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRlZmF1
bHRDbGllbnRXb3JsZF0gZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRvcmVs
ZWFzZV07CisgICAgV0tVc2VyU2NyaXB0ICp3YWl0c0Zvck5vdGlmaWNhdGlvbiA9IFtbW1dLVXNl
clNjcmlwdCBhbGxvY10gX2luaXRXaXRoU291cmNlOkAiYWxlcnQoJ3dhaXRlZCBmb3Igbm90aWZp
Y2F0aW9uJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1l
bnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFUyBsZWdhY3lXaGl0ZWxpc3Q6QFtdIGxlZ2FjeUJs
YWNrbGlzdDpAW10gYXNzb2NpYXRlZFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8v
c2NyaXB0Il0gY29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRd
IGRlZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uOllFU10gYXV0b3JlbGVhc2VdOwogICAgIFdL
VXNlclNjcmlwdCAqZG9jdW1lbnRFbmQgPSBbW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRo
U291cmNlOkAiYWxlcnQoJ2RvY3VtZW50IHBhcnNpbmcgZW5kZWQnKSIgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllF
U10gYXV0b3JlbGVhc2VdOwogCiAgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzEgPSBbW1Rlc3RX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA5OTc1
MDViYzQwZGMwODdhMDVlOTNjODY5OGU5MDhjNGI5ZGRhM2M4Li5jNDRmMGRhYmRmZTE4YWFiMDU0
OGNjOTJjNzMyMzczNTEyMDgwZDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTE3MTYsNyAr
MTcxNiw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIFRhcmdldGVkUHJldmlld3NXaGVu
RHJvcHBpbmdJbWFnZXMpCiAgICAgW3NlY29uZEl0ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImFwcGxl
Il07CiAKICAgICBbc2ltdWxhdG9yIHNldERyb3BBbmltYXRpb25UaW1pbmc6RHJvcEFuaW1hdGlv
blNob3VsZEZpbmlzaEJlZm9yZUhhbmRsaW5nRHJvcF07Ci0gICAgW3NpbXVsYXRvciBzZXRFeHRl
cm5hbEl0ZW1Qcm92aWRlcnM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpmaXJzdEl0ZW0uZ2V0
KCksIHNlY29uZEl0ZW0uZ2V0KCksIG5pbF0gZGVmYXVsdERyb3BQcmV2aWV3czpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOmZpcnN0UHJldmlldy5nZXQoKSwgc2Vjb25kUHJldmlldy5nZXQoKSwg
bmlsXV07CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFtmaXJzdEl0
ZW0uZ2V0KCksIHNlY29uZEl0ZW0uZ2V0KCldIGRlZmF1bHREcm9wUHJldmlld3M6QFtmaXJzdFBy
ZXZpZXcuZ2V0KCksIHNlY29uZFByZXZpZXcuZ2V0KCldXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZy
b206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoNDUwLCA0NTApXTsKIAogICAgIEVY
UEVDVF9FUShbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdLmNvdW50LCAyVSk7CkBAIC0x
NzU1LDcgKzE3NTUsNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBUYXJnZXRlZFByZXZp
ZXdJc0NsaXBwZWRXaGVuRHJvcHBpbmdUYWxsSW1hZ2UpCiAgICAgW2l0ZW0gc2V0U3VnZ2VzdGVk
TmFtZTpAImdyZWVuIl07CiAKICAgICBbc2ltdWxhdG9yIHNldERyb3BBbmltYXRpb25UaW1pbmc6
RHJvcEFuaW1hdGlvblNob3VsZEZpbmlzaEJlZm9yZUhhbmRsaW5nRHJvcF07Ci0gICAgW3NpbXVs
YXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Oml0
ZW0uZ2V0KCldIGRlZmF1bHREcm9wUHJldmlld3M6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnBy
ZXZpZXcuZ2V0KCldXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpA
W2l0ZW0uZ2V0KCldIGRlZmF1bHREcm9wUHJldmlld3M6QFtwcmV2aWV3LmdldCgpXV07CiAgICAg
W3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDM1MCwg
MzUwKV07CiAKICAgICBFWFBFQ1RfRVEoW3NpbXVsYXRvciBkZWxheWVkRHJvcFByZXZpZXdzXS5j
b3VudCwgMVUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggN2E3YWM2NmMxYzQ1MDA1ZDk5NTZk
NWU2Y2I4MTc1ZjQ5NGIxNDNiZi4uZmE0NGUyNjZiNWRlMWU1Zjc3MjlmN2YzMGMxM2Q4NTM4MjFm
ZDVmZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChXS0hU
VFBDb29raWVTdG9yZSwgQ3JlYXRpb25UaW1lKQogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9i
amVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAgIFtjb29r
aWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5TSFRUUENv
b2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3BhdGgiIGZv
cktleTpOU0hUVFBDb29raWVQYXRoXTsKLSAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGNyZWF0aW9u
VGltZSA9IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEwMDAwMF07CisgICAgUmV0YWluUHRy
PE5TTnVtYmVyPiBjcmVhdGlvblRpbWUgPSBAKDEwMDAwMCk7CiAgICAgW2Nvb2tpZVByb3BlcnRp
ZXMgc2V0T2JqZWN0OmNyZWF0aW9uVGltZS5nZXQoKSBmb3JLZXk6QCJDcmVhdGVkIl07CiAgICAg
UmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRo
UHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQppbmRl
eCA5YmIzNmQ0YWZhMTc1ZjBlMTIzYzFjYWY1ZTc5MDdhYWY2ZjI3OGZmLi5iOTU4ZjNiMjNkMGJh
YzkzOWVlMGU4Y2IwNTM2OGZkNWU3ZDkzNzU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQpAQCAt
MjAxLDcgKzIwMSw3IEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0
ZW50Q3JlZGVudGlhbHMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIAog
ICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFsc10gZm9y
RGF0YVJlY29yZHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmV4cGVjdGVkUmVjb3JkLmdldCgp
XSBjb21wbGV0aW9uSGFuZGxlcjpeKHZvaWQpIHsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1v
dmVEYXRhT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVk
ZW50aWFsc10gZm9yRGF0YVJlY29yZHM6QFtleHBlY3RlZFJlY29yZC5nZXQoKV0gY29tcGxldGlv
bkhhbmRsZXI6Xih2b2lkKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1
c3RvbVBhdGhzLm1tCmluZGV4IDEzYTNlOThlYmFiYmRmZWVhYTI0ZGQ4ODYxMzhjZGU3MzFiZjZi
ODQuLmM5MGVhMWNiMmEyOGVjYmVmZmFlMjNlZGU1YWQ2OWUzNWU4ZTg1MjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1
c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQ
cmV3YXJtaW5nIHNob3VsZEUKICAgICAgICAgRVhQRUNUX0VRKFtyZWNvcmRzIGNvdW50XSwgKHVu
c2lnbmVkIGxvbmcpMyk7CiAgICAgICAgIGZvciAoaWQgcmVjb3JkIGluIHJlY29yZHMpIHsKICAg
ICAgICAgICAgIGlmIChbW3JlY29yZCBkaXNwbGF5TmFtZV0gaXNFcXVhbDogQCJhcHBsZS5jb20i
XSkgewotICAgICAgICAgICAgICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMu
Z2V0KCkgZm9yRGF0YVJlY29yZHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnJlY29yZF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgICAgICAgICBbZGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOnR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOkBbcmVjb3JkXSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewogICAgICAgICAgICAgICAgICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2Ug
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZyYW1lSURCUGF0aC5nZXQoKS5wYXRo
XSk7CiAgICAgICAgICAgICAgICAgfV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVVUkwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVVUkwubW0KaW5kZXggMTA2YTI1YWE3NGI5YjcxZDdhYjZl
ODE3ZDBjYzU5NDEwMDUzYjQ4ZS4uNGIyOWU3OWRiN2Q4NzYzZTBiYWQxZTZiM2JhMjI5YWVmNzFi
M2JlMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0Nh
blBhc3RlVVJMLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdD
YW5QYXN0ZVVSTC5tbQpAQCAtMzcsNyArMzcsNyBAQCBURVNUKFdlYktpdExlZ2FjeSwgV2ViVmll
d0NhblBhc3RlVVJMKQogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdOwogICAg
IFt3ZWJWaWV3IHNldEVkaXRhYmxlOllFU107CiAKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1VSTFBi
b2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIGRlY2xhcmVUeXBlczpAW05TVVJMUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICAgICBbW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIl0gd3JpdGVUb1Bhc3Rl
Ym9hcmQ6W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF1dOwogICAgIFt3ZWJWaWV3IHBh
c3RlOm5pbF07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dl
YlZpZXdDYW5QYXN0ZVplcm9QbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9X
ZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tCmluZGV4IDU4ZTA3YzE0MGVlZmNhYjQ1YjhlMmRlNzNj
ODBkZjcxZWRlZmIwODYuLmZhMmUyYWE5NjdhYmEyMzFhNzcwNzBkMmMxNzBhMThlYjFiZGY4YTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0
ZVplcm9QbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0Nh
blBhc3RlWmVyb1BuZy5tbQpAQCAtMzgsNyArMzgsNyBAQCBURVNUKFdlYktpdExlZ2FjeSwgV2Vi
Vmlld0NhblBhc3RlWmVyb1BuZykKICAgICBbd2ViVmlldyBzZXRFZGl0YWJsZTpZRVNdOwogICAg
IAogICAgIC8vcGFzdGluZyBhIDB4MCBpbWFnZSBhcyBwZGYgYm9hcmQgdHlwZS4gUmVmZXJyaW5n
IHRvIDxyZGFyOi8vcHJvYmxlbS8xMTE0MTkyMD4KLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1BERlBi
b2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIGRlY2xhcmVUeXBlczpAW05TUERGUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICAgICBbW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIjAiIHdpdGhFeHRlbnNpb246QCJw
bmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl0gd3JpdGVUb1Bhc3Rl
Ym9hcmQ6W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF1dOwogICAgIFt3ZWJWaWV3IHBh
c3RlOm5pbF07CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW0KaW5kZXgg
NjlmNDQ4OWU3N2ZhMGI2Njg2NWIxYmE2NTFhNzJjNWU1MTE2MGU3YS4uYTBmMzQ4MTM0YWU0NTQ4
MWU0YjZlZWY4ZWJiYjllODZhZWMyZjYxOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29u
dGV4dC5tbQpAQCAtOTQsNyArOTQsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IGRpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZQogICAgIH07
CiAKICAgICBjb250ZXh0W0AiY2FsbE1lQmFjayJdID0gXihKU1ZhbHVlICpmdW5jdGlvblZhbHVl
KSB7Ci0gICAgICAgIFtmdW5jdGlvblZhbHVlIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFy
cmF5XV07CisgICAgICAgIFtmdW5jdGlvblZhbHVlIGNhbGxXaXRoQXJndW1lbnRzOkBbXV07CiAg
ICAgfTsKIAogICAgIGNvbnRleHRbQCJjaGVja0Zvck15Q3VzdG9tUHJvcGVydHkiXSA9IF4oSlNW
YWx1ZSAqZWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFp
bklPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0KaW5kZXggY2YwOGE3
NDgwOWJlMTAxZDhlYjM5NDExZjM0MmI2NTAyMzkyZWE4MS4uMDFjN2QyNzM2MTU2NzFiZTAwOGYy
MTg4ZmNkM2M3ZTFmZDAwYjVmNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
bWFpbklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCkBAIC0z
Nyw5ICszNyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpZiAoIWFy
Z3VtZW50RG9tYWluKQogICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF07CiAgICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICBAWUVTLCAgICBAIldlYktpdExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmciLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IEB7
IEAiV2ViS2l0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZyI6IEBZRVMgfTsKIAogICAgIFthcmd1
bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGljdF07CiAgICAgW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnRE
b21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQppbmRleCAzYTMzYzJk
YWJjYzMwMjA1ZWJhNzNiM2Q0ODhiYTQ4MDhjZjIzZjk4Li42ZjYzNGYxNzY2YzJjMTA5ODE3MjFi
MDE1NDNlYTgwNzE0ZGQ0ZGIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9J
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCkBAIC0zNiwxNCArMzYsMTQgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqYXJndW1lbnREb21haW4gPSBbW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnREb21haW5d
IG11dGFibGVDb3B5XTsKICAgICBpZiAoIWFyZ3VtZW50RG9tYWluKQogICAgICAgICBhcmd1bWVu
dERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgCi0gICAg
TlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dGVnZXI6NF0sICAgQCJBcHBsZUFudGlBbGlhc2luZ1RocmVzaG9sZCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjowXSwgICBAIkFwcGxlRm9u
dFNtb290aGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEBOTywgICAgIEAiTlNTY3Jv
bGxBbmltYXRpb25FbmFibGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQE5PLCAgICAg
QCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
QCJBbHdheXMiLCAgICAgICAgICAgICAgICAgICAgICAgIEAiQXBwbGVTaG93U2Nyb2xsQmFycyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisKKyAgICBOU0RpY3Rpb25hcnkgKmRp
Y3QgPSBAeworICAgICAgICBAIkFwcGxlQW50aUFsaWFzaW5nVGhyZXNob2xkIjogQCg0KSwKKyAg
ICAgICAgQCJBcHBsZUZvbnRTbW9vdGhpbmciOiBAKDApLAorICAgICAgICBAIk5TU2Nyb2xsQW5p
bWF0aW9uRW5hYmxlZCI6IEBOTywKKyAgICAgICAgQCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVk
IjogQE5PLAorICAgICAgICBAIkFwcGxlU2hvd1Njcm9sbEJhcnMiOiBAIkFsd2F5cyIsCisgICAg
fTsKIAogICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGljdF07
CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVE
b21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9tYWluTWFjLm1tCmluZGV4IDdjYTk5ZTZhM2I1ZTQwODJlYWZjZDk0NzQ0OTBhYzA5
NWZmMGQ0M2MuLmJlN2Q4NzI2N2VjMjIxNTQzYTU0OWZlMmI4OGQxYzgzMjk5MmZhMjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQpAQCAtMzksOSArMzksNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKICAgICAgICAgYXJn
dW1lbnREb21haW4gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgIAot
ICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQFlFUywgICAgQCJXZWJLaXRM
aW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmls
XTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBAeyBAIldlYktpdExpbmtlZE9uT3JBZnRlckV2
ZXJ5dGhpbmciOiBAWUVTIH07CiAKICAgICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21E
aWN0aW9uYXJ5OmRpY3RdOwogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERv
bWFpbl07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKaW5kZXggYTVkNThlY2MxNjIwN2Y4
NDlkNzRjMmRmMTFmMzk4NjY4OWE5ZjQ5Yi4uNWI2NzgxMTAxMjUxMzhkNjJiZGRiOGIzMzMzNGY0
ZDI0NTFmMDM1MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApAQCAtOTAsNyArOTAs
NyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxO
b3RpZmljYXRpb25IYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9nbG9iYWxOb3RpZmljYXRp
b25IYW5kbGVyOwogI2VsaWYgVVNFKEFUSykKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCmluZGV4IDA0MWY4MWJjNzZkNTAzNmI5YTkyOWU5MGEy
YzYyZTcxMTc4YmViM2MuLjhmYzk0ZjZmNTQ5NDg4MzU1NWIxNDRiMTQ1MDMwNjIwNDgxNjAxZTYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgQ0ZU
eXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlcjsKK3VzaW5nIFBsYXRmb3JtVGV4dE1hcmtlciA9IGlk
OwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCmluZGV4IDE4YzE4ZDQ4ZTQxY2RmMDk4
YWM5MTU4OGZmNjYzMTEwNjI5OTEyM2YuLjc4MTgyZWU5MGM0ZTI3OTc1NmZjNjk1OGE0MTJlMWNh
YjI0MGUyNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3
IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10
eXBlZGVmIENGVHlwZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZTsKK3VzaW5nIFBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlID0gaWQ7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZTsKICNlbmRpZgpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSYpOwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxQbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZT4gbV90ZXh0TWFya2VyUmFuZ2U7CisgICAgUmV0YWluUHRyPGlkPiBtX3Rl
eHRNYXJrZXJSYW5nZTsKICNlbHNlCiAgICAgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbV90ZXh0
TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTY3LDQgKzY3LDggQEAgcHJpdmF0ZToKIGlubGluZSBi
b29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKICAgICAKKyNpZmRlZiBf
X09CSkNfXworaW5saW5lIE9wdGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+KiwgaWQgcmFuZ2UpIHsgcmV0dXJuIHsgeyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUocmFuZ2UpIH0gfTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdU
UgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCAzNWZiMzcwNzE2YjJhYzNlOTI1ZTE2
NzZjNTJlMTIyYWE4MWJiNzdmLi4xNDFkYjIwYWViOTJhODE4NDdlOTBkODhhMDU5NDQwN2U2OGM2
ZWMyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMzUsMTEgKzM1LDggQEAKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZmRlZiBfX09C
SkNfXwotdHlwZWRlZiBpZCBQbGF0Zm9ybVVJRWxlbWVudDsKLSNlbHNlCi10eXBlZGVmIHN0cnVj
dCBvYmpjX29iamVjdCogUGxhdGZvcm1VSUVsZW1lbnQ7Ci0jZW5kaWYKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Cit1c2luZyBQbGF0Zm9ybVVJRWxlbWVudCA9IGlkOwogI2VsaWYgSEFWRShB
Q0NFU1NJQklMSVRZKSAmJiBVU0UoQVRLKQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmgiCiAjaW5jbHVkZSA8YXRrL2F0ay5oPgpAQCAtNDksMTQgKzQ2LDYg
QEAgdHlwZWRlZiBHUmVmUHRyPEF0a09iamVjdD4gUGxhdGZvcm1VSUVsZW1lbnQ7CiB0eXBlZGVm
IHZvaWQqIFBsYXRmb3JtVUlFbGVtZW50OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkK
LSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOwotI2Vsc2UK
LXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOwotI2VuZGlm
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgOiBwdWJsaWMgSlNXcmFwcGFibGUgewpAQCAtNjYsNyArNTUsMTMgQEAgcHVibGljOgogCiAg
ICAgfkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGlkIHBsYXRmb3JtVUlFbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50LmdldCgpOyB9CisjZW5k
aWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgUGxhdGZvcm1VSUVsZW1lbnQgcGxhdGZvcm1V
SUVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCBK
U0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOwogCiAgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VK
U0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoSlNDb250ZXh0UmVmLCBjb25zdCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Jik7CkBAIC0zNTYsMTIgKzM1MSwxNSBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwogCisjaWYgIVBMQVRGT1JNKENP
Q09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKLSAgICAKKyNlbmRpZgorCiAg
ICAgLy8gQSByZXRhaW5lZCwgcGxhdGZvcm0gc3BlY2lmaWMgb2JqZWN0IHVzZWQgdG8gaGVscCBt
YW5hZ2Ugbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBvYmplY3QuCiAjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3Rp
ZmljYXRpb25IYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9lbGVtZW50OworICAgIFJldGFp
blB0cjxpZD4gbV9ub3RpZmljYXRpb25IYW5kbGVyOwogCiAgICAgdm9pZCBnZXRMaW5rZWRVSUVs
ZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZv
aWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
ID4mKTsKQEAgLTM3OCw0ICszNzYsOCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogICAgIAorI2lm
ZGVmIF9fT0JKQ19fCitpbmxpbmUgT3B0aW9uYWw8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4qLCBpZCBlbGVtZW50KSB7IHJldHVybiB7IHsgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Jl
YXRlKGVsZW1lbnQpIH0gfTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0
ZUZvbnRzQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2Nv
Y29hL0FjdGl2YXRlRm9udHNDb2NvYS5tbQppbmRleCBkMWNmN2Y1NTA0ZWVlMGJjMzI5ZjE5M2Qy
NTViNmYyYzQ0MzkyY2UxLi5kYjNjMjg5MzFkMDVmNTQyMDZiMWJmNWQ1Mjk4MTQ4NDk5OGFhMjQw
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29h
L0FjdGl2YXRlRm9udHNDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2NvY29hL0FjdGl2YXRlRm9udHNDb2NvYS5tbQpAQCAtMzAsNyArMzAsNiBAQAog
I2ltcG9ydCA8Q29yZVRleHQvQ1RGb250TWFuYWdlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU3Ry
aW5nQ0YuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL09i
akNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBVU0Uo
QVBQS0lUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQppbmRl
eCAxZjEwN2NlNzlkN2U0M2I4ZDgzMDgwOGQzMTFkZmM3YWI2OGE0MDE1Li41MzcxOGZlNWFiZGRl
YjA3NmMyZTMzZDg0MTFiNjUxYzZmZDY2ZmExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcklPUy5tbQpAQCAtMjksOCArMjksNyBAQCBuYW1lc3BhY2UgV1RSIHsKIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogb3RoZXIpCiB7Ci0gICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNF
cXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gW3BsYXRm
b3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6b3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50SU9TLm1tCmluZGV4IDM2NDE3NTU4NWU5NzFlN2FhZjY3MmFhYTg3OWI2ZGQxN2ZhNGRjMDYu
LjU2ZDI3YjRjMGYwZjc2NDQ0YmIwZWFkYzk4MThlOGFjZDZlNTY4YmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtMjQsOSArMjQsMTAgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIK
KwogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRs
ZVBhZ2UuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgpAQCAtMzYsNiArMzcs
NyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oPgogCiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNr
KShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsKIApA
QCAtMTM3LDEzICsxMzksNiBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNyZWF0
ZUVtcHR5SlNTdHJpbmcoKQogICAgIHJldHVybiBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKG51bGxwdHIsIDApKTsKIH0KIAotc3RhdGljIHZvaWQgY29udmVydE5TQXJyYXlUb1Zl
Y3RvcihOU0FycmF5KiBhcnJheSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiA+JiBlbGVtZW50VmVjdG9yKQotewotICAgIE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291
bnRdOwotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAg
IGVsZW1lbnRWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbYXJy
YXkgb2JqZWN0QXRJbmRleDppXSkpOwotfSAgICAKLQogc3RhdGljIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUs
IE5TU3RyaW5nICp2YWx1ZSkKIHsKICAgICBWZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKFthdHRyaWJ1
dGUgbGVuZ3RoXSk7CkBAIC0xNjAsMjMgKzE1NSwxNyBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0
ZQogICAgIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQ
bGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAg
LCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKIHsKLSAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9y
ZyBzYXlzIE9iakMgb2JqZWN0cyBuZWVkIHRvIGJlIENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJl
IEdDLWNvbXBsaWFudCBvbiB0aGUgbWFjLgotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50JiBvdGhlcikKICAgICA6IEpTV3JhcHBhYmxlKCkKICAgICAsIG1f
ZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkK
IHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCkKIHsKLSAgICBbbV9lbGVtZW50IHJlbGVhc2VdOwog
fQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogb3RoZXJFbGVtZW50KQpAQCAtMjQzLDI2ICsyMzIsMjAgQEAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50
KGludCB4LCBpbnQKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGVs
ZW1lbnQpOwogfQogICAgIAotc3RhdGljIEpTVmFsdWVSZWYgY29udmVydEVsZW1lbnRzVG9PYmpl
Y3RBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4mIGVsZW1lbnRzKQorc3RhdGljIEpTVmFsdWVSZWYgY29udmVydEVsZW1lbnRz
VG9PYmplY3RBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRzKQogewotICAgIEpTVmFsdWVSZWYgYXJy
YXlSZXN1bHQgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCBudWxscHRyLCBudWxscHRy
KTsKLSAgICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBh
cnJheVJlc3VsdCwgbnVsbHB0cik7Ci0gICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRz
LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQot
ICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaSwg
SlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLT53cmFwcGVyQ2xhc3MoKSwgZWxlbWVu
dHNbaV0uZ2V0KCkpLCBudWxscHRyKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7Cisg
ICAgYXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51
bGxwdHIpOworICAgIGF1dG8gc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5k
ZXgoY29udGV4dCwgYXJyYXksIGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS0+
d3JhcHBlckNsYXNzKCksIGVsZW1lbnRzW2ldLmdldCgpKSwgbnVsbHB0cik7CisgICAgcmV0dXJu
IGFycmF5OwogfQotCiBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRz
Rm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBXS0J1
bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwogICAgIEpTQ29udGV4dFJlZiBj
b250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7Ci0K
ICAgICBOU0FycmF5ICplbGVtZW50c0ZvclJhbmdlID0gW21fZWxlbWVudCBlbGVtZW50c0ZvclJh
bmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXTsKLSAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiBlbGVtZW50czsKLSAgICBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yKGVsZW1lbnRzRm9yUmFuZ2UsIGVsZW1lbnRzKTsKLSAgICByZXR1cm4gY29udmVydEVsZW1l
bnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVtZW50cyk7CisgICAgcmV0dXJuIGNvbnZlcnRF
bGVtZW50c1RvT2JqZWN0QXJyYXkoY29udGV4dCwgbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+KGVsZW1lbnRzRm9yUmFuZ2UpKTsKIH0KIAogdW5zaWduZWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVs
ZW1lbnQpCkBAIC0xMTAwLDkgKzEwODMsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlbW92ZVNlbGVjdGlvbigpCiAvLyBUZXh0IG1hcmtlcnMKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsK
LSAgICBpZCBzdGFydFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFydE1hcmtlckZvck1h
cmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIGlkIGVuZFRl
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRUZXh0TWFya2VyLCBlbmRUZXh0TWFya2VyLCBu
aWxdOworICAgIGlkIHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2Vy
Rm9yTWFya2VyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBlbmRU
ZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOnRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IEBbc3Rh
cnRUZXh0TWFya2VyLCBlbmRUZXh0TWFya2VyXTsKICAgICAKICAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6dGV4dE1hcmtlcnNdOwog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtl
clJhbmdlKTsKQEAgLTExMTAsNyArMTA5Myw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlCiAK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjptaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiBzdGFydCwgYm9vbCBmb3J3YXJkKQogewotICAgIGlkIG1pc3NwZWxsaW5nUmFuZ2UgPSBb
bV9lbGVtZW50IG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlOihpZClzdGFydC0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKSBmb3J3YXJkOmZvcndhcmRdOworICAgIGlkIG1pc3NwZWxsaW5nUmFu
Z2UgPSBbbV9lbGVtZW50IG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlOnN0YXJ0LT5wbGF0Zm9y
bVRleHRNYXJrZXJSYW5nZSgpIGZvcndhcmQ6Zm9yd2FyZF07CiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShtaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAt
MTEyMiw0NyArMTEwNSw0NiBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRQogCiBpbnQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdlLT5w
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOyAgICAKLSAgICByZXR1cm4gW21fZWxlbWVudCBsZW5n
dGhGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc107CisgICAgcmV0dXJuIFttX2VsZW1lbnQgbGVu
Z3RoRm9yVGV4dE1hcmtlcnM6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogfQog
CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
IHsKLSAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgcHJldmlvdXNNYXJrZXJGb3JN
YXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBwcmV2
aW91c01hcmtlciA9IFttX2VsZW1lbnQgcHJldmlvdXNNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKHByZXZpb3VzTWFya2VyKTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBuZXh0TWFya2VyID0gW21f
ZWxlbWVudCBuZXh0TWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1h
cmtlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dE1hcmtlcik7CiB9CiAKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7Ci0gICAg
aWQgdGV4dE1hcmtlcnMgPSAoaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VycyB8fCAhW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xhc3M6
W05TQXJyYXkgY2xhc3NdXSkKKyAgICBpZCB0ZXh0TWFya2VycyA9IG1hcmtlclJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlmICghW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SlNTdHJpbmco
KTsKICAgICByZXR1cm4gW1ttX2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtl
cnNdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogZW5kTWFya2VyKQogewotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czooaWQpc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsKKyAgICBOU0FycmF5
ICp0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBlbmRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBb
bV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6dGV4dE1hcmtlcnNdOwogICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdl
KTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVu
dCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6
WUVTXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFy
a2VyKTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdl
LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1l
bnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0
Ok5PXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFy
a2VyKTsKIH0KQEAgLTExOTQsNyArMTE3Niw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4CiAK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IG1hcmtlcikKIHsKLSAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RG
b3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBv
YmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOm1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlmIChvYmopCiAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUob2JqKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEyOTQsNyArMTI3Niw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRjCiB7CiAgICAgTlNBcnJh
eSAqdGV4dE1hcmtlcnMgPSBuaWw7CiAgICAgaWYgKHN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKSAmJiBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpKQotICAgICAgICB0ZXh0
TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5p
bF07CisgICAgICAgIHRleHRNYXJrZXJzID0gQFtzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlkIHRleHRNYXJr
ZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnM6dGV4dE1hcmtl
cnMgd2l0aFRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjp0ZXh0XV07CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFu
Z2UpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9JbmplY3RlZEJ1bmRsZUlPUy5tbQppbmRleCA0MjkwOGJlZmVmN2E1OGY3
YWUwNGYwNTgwNTMxNGU1YTQ1ZTRlM2VkLi5iZDcyZjk4NDVjMDEzNzBiMWZkYThlZDdkM2JiNDc5
MjljZWEwZGEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9JbmplY3RlZEJ1bmRsZUlPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2lvcy9JbmplY3RlZEJ1bmRsZUlPUy5tbQpAQCAtMzYsMTIgKzM2LDgg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKFdLVHlwZVJlZikKIAog
ICAgIC8vIExhbmd1YWdlIHdhcyBzZXQgdXAgZWFybGllciBpbiBtYWluKCkuIERvbid0IGNsb2Ji
ZXIgaXQuCiAgICAgTlNBcnJheSAqbGFuZ3VhZ2VzID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSB2
YWx1ZUZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07Ci0KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGljdGlvbmFyeT4gZGljdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7Ci0gICAgaWYgKGxhbmd1YWdlcykKLSAgICAgICAgW2RpY3Qgc2V0T2JqZWN0Omxhbmd1
YWdlcyBmb3JLZXk6QCJBcHBsZUxhbmd1YWdlcyJdOwotCi0gICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46ZGljdC5nZXQoKSBmb3JOYW1l
Ok5TQXJndW1lbnREb21haW5dOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IGxhbmd1
YWdlcyA/IEB7IEAiQXBwbGVMYW5ndWFnZXMiOiBsYW5ndWFnZXMgfSA6IEB7IH07CisgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46ZGlj
dGlvbmFyeSBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IGNmNzc4YzZlMWQ0
YWEwYThjNTM0MzRjNzg4MmU2OWY4YWNiNDZlZDEuLjM5YWFhMjRhOTc0MGE4YzIzMDQ2YWI4ZjUz
MmQ5ODczMWNkMjk1NWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpA
QCAtNTUsNyArNTUsNyBAQCBOU0RpY3Rpb25hcnkgKnNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVGb3JTZWFyY2hDcml0ZXJpYShKU0NvbnRleHRSZQogICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBk
aWN0aW9uYXJ5XTsKICAgICAKICAgICBpZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+
cGxhdGZvcm1VSUVsZW1lbnQoKSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0
T2JqZWN0OihpZClzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhT
dGFydEVsZW1lbnQiXTsKKyAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0
OnN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVu
dCJdOwogICAgIAogICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDooaXNEaXJl
Y3Rpb25OZXh0KSA/IEAiQVhEaXJlY3Rpb25OZXh0IiA6IEAiQVhEaXJlY3Rpb25QcmV2aW91cyIg
Zm9yS2V5OkAiQVhEaXJlY3Rpb24iXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJNYWMubW0KaW5kZXggNWViOTVmMjI3NDAxZjg3ZDZmMzlmNGQ1NDljMGZjYzg1
NDZkN2E4Ny4uYmEyODliMWQ2Y2RlN2EyMjExMzJkYTE4YzIwZjk2MjkzMmUyZDM5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KQEAgLTI5LDggKzI5LDcg
QEAgbmFtZXNwYWNlIFdUUiB7CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1
YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG90aGVyKQogewotICAgIHJldHVybiBbKF9fYnJp
ZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBp
c0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA5
YjU5YmZjZTBmNGM0ODU1YmZjZGZhZTY1ZDQ1OTVlNGJmNjYxY2EzLi4yN2YwZmI1ZTE4MDA5ZDU1
OWQyMTQ4NmU0ODkzNGJhMmZhYWQ3N2FhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eU93bnNBdHRyaWJ1dGUKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZSBAIkFY
T3ducyIKQEAgLTkyLDI3ICs5MiwxOSBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGNyZWF0ZUVtcHR5SlNTdHJpbmcoKQogICAgIHJldHVybiBhZG9wdChKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApKTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQorQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChpZCBlbGVtZW50KQogICAg
IDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKIHsK
LSAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9yZyBzYXlzIE9iakMgb2JqZWN0cyBuZWVkIHRvIGJl
IENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJlIEdDLWNvbXBsaWFudCBvbiB0aGUgbWFjLgotICAg
IFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGhlcikKICAg
ICA6IEpTV3JhcHBhYmxlKCkKICAgICAsIG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAg
LCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKIHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9
CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCkKIHsK
LSAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGhhbmRsZXIgc2hvdWxkIGJlIG5pbCBiZWNhdXNlIHJl
bW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgaW4gdGhl
IHRlc3QuCi0gICAgQVNTRVJUKCFtX25vdGlmaWNhdGlvbkhhbmRsZXIpOwotICAgIFttX2VsZW1l
bnQgcmVsZWFzZV07CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpCkBAIC0xNjQsOSArMTU2LDkgQEAg
c3RhdGljIE5TU3RyaW5nKiBkZXNjcmlwdGlvbk9mVmFsdWUoaWQgdmFsdWVPYmplY3QsIGlkIGZv
Y3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWMKICAgICByZXR1cm4gW3ZhbHVlT2JqZWN0IGRlc2NyaXB0
aW9uXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nKiBhdHRyaWJ1dGVzT2ZFbGVtZW50KGlkIGFjY2Vz
c2liaWxpdHlPYmplY3QpCitzdGF0aWMgTlNTdHJpbmcgKmF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQg
YWNjZXNzaWJpbGl0eU9iamVjdCkKIHsKLSAgICBOU0FycmF5KiBzdXBwb3J0ZWRBdHRyaWJ1dGVz
ID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKKyAg
ICBOU0FycmF5ICpzdXBwb3J0ZWRBdHRyaWJ1dGVzID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKIAogICAgIE5TTXV0YWJsZVN0cmluZyogYXR0cmli
dXRlc1N0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKICAgICBmb3IgKE5TVUludGVn
ZXIgaSA9IDA7IGkgPCBbc3VwcG9ydGVkQXR0cmlidXRlcyBjb3VudF07ICsraSkgewpAQCAtMjE5
LDE3ICsyMTEsNiBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvbmNhdGVuYXRl
QXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZQogICAgIHJldHVybiBhZG9wdChK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRpYyBWZWN0b3I8VD4gY29udmVydE5T
QXJyYXlUb1ZlY3RvcihOU0FycmF5ICphcnJheSkKLXsKLSAgICBWZWN0b3I8VD4gdjsKLSAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gYXJyYXkuY291bnQ7Ci0gICAgdi5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQot
ICAgICAgICB2LmFwcGVuZChUOjpWYWx1ZVR5cGU6OmNyZWF0ZShbYXJyYXkgb2JqZWN0QXRJbmRl
eDppXSkpOwotICAgIHJldHVybiB2OwotfQotCiBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgTlNNdXRhYmxlU3RyaW5nKiBhbGxFbGVt
ZW50U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwpAQCAtMzI4LDM0ICszMDksMzQg
QEAgc3RhdGljIE5TRGljdGlvbmFyeSAqbWlzc3BlbGxpbmdTZWFyY2hQYXJhbWV0ZXJpemVkQXR0
cmlidXRlRm9yQ3JpdGVyaWEoQWNjZXNzaWIKIHsKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpw
YXJhbWV0ZXJzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAKLSAgICBbcGFy
YW1ldGVycyBzZXRPYmplY3Q6KF9fYnJpZGdlIGlkKXN0YXJ0LT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpIGZvcktleTpAIkFYU3RhcnRUZXh0TWFya2VyUmFuZ2UiXTsKKyAgICBbcGFyYW1ldGVy
cyBzZXRPYmplY3Q6c3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yS2V5OkAiQVhT
dGFydFRleHRNYXJrZXJSYW5nZSJdOwogICAgIFtwYXJhbWV0ZXJzIHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6Zm9yd2FyZF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0RGlyZWN0aW9u
Il07CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
PiYgZWxlbWVudFZlY3RvcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBO
U0FycmF5KiBsaW5rZWRFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOwotICAgIGVs
ZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4obGlua2VkRWxlbWVudHMpOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4obGlua2VkRWxlbWVudHMpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiYgZWxlbWVudFZlY3RvcikKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1l
bnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudFZl
Y3RvcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBsaW5r
RWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGlu
a1VJRWxlbWVudHMiXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGxpbmtFbGVtZW50cyk7CisgICAgZWxl
bWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihs
aW5rRWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxl
bWVudHMpIGNvbnN0Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNX
aXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRzKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgZWxl
bWVudHMgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4odmFsdWUpOworICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
fQogCkBAIC0zNjMsNyArMzQ0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRD
aGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4KIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0
cmlidXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsKKyAgICBlbGVtZW50VmVjdG9y
ID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTM3Myw3ICszNTQsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKICAg
ICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+ZXhlY3V0ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsm
ZWxlbWVudFZlY3RvciwgbG9jYXRpb24sIGxlbmd0aCwgdGhpc10gewogICAgICAgICBOU0FycmF5
KiBjaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVz
Ok5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlIGluZGV4OmxvY2F0aW9uIG1heENvdW50
Omxlbmd0aF07Ci0gICAgICAgIGVsZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRyZW4pOworICAgICAgICBlbGVt
ZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNo
aWxkcmVuKTsKICAgICB9KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CkBAIC0zODcs
NyArMzY4LDcgQEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJz
KCkgY29uc3QKICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiBlbGVt
ZW50czsKICAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50
cyA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
Pih2YWx1ZSk7CisgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2JqZWN0
QXJyYXk8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb250ZXh0LCBlbGVtZW50cyk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtNDAxLDcgKzM4Miw3IEBAIEpTVmFs
dWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0CiAgICAg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7CiAgICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgZWxlbWVudHMgPSBjb252ZXJ0
TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwor
ICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+Pih2YWx1ZSk7CiAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5PFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29udGV4dCwgZWxlbWVudHMpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTYxMCwxNCArNTkxLDE0IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigp
CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxB
dHRyaWJ1dGVzKCkKIHsKLSAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVs
ZW1lbnQobV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNP
ZkVsZW1lbnQobV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW2F0dHJpYnV0ZXMgY3JlYXRl
SlNTdHJpbmdSZWZdOwogfQogICAgIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNT
dHJpbmcgKnZhbHVlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRl
XV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcgKnZhbHVlID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV0sIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJu
IFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNzI5LDcgKzcxMCw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFt
ZXMoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nICpyb2xl
ID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3Ry
aW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0
KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlIiwg
cm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNzM5LDcgKzcyMCw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xl
KCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJy
b2xlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogcm9s
ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBO
U1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVt
ZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
U3Vicm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzQ5LDcg
KzczMCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJp
YnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4g
Y29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2NyaXB0aW9uIiwgcm9sZSk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNzU5LDcgKzc0MCw3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3Jp
cHRpb24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUiXSwgbV9lbGVt
ZW50KTsKKyAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBUm9sZSJd
LCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbY29tcHV0ZWRSb2xlU3RyaW5nIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC03Njks
NyArNzUwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0s
IG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxl
QXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogCkBAIC03NzksNyArNzYwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1
cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24iLCBkZXNjcmlw
dGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03ODksNyArNzcwLDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0
aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpv
cmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdLCBt
X2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7ICAgIAogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzk5LDcgKzc4MCw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
VmFsdWUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0
aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBp
ZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxlbWVu
dC5nZXQoKSk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gY29uY2F0ZW5h
dGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVmFsdWUiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwpAQCAtODEwLDcgKzc5MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25P
ZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFn
ZSJdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJdLCBt
X2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KEAiQVhMYW5ndWFnZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAKQEAgLTgyMCw3ICs4MDEsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0
cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlIZWxwQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5h
dGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYSGVscCIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMTI5LDcgKzExMTAsNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29u
c3QKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6aW5kZXhdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOkAoaW5kZXgpXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICopdmFsdWUgaW50
VmFsdWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xMTQwLDcgKzExMjEsNyBA
QCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRleCkKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxp
bmUoaW50IGxpbmUpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpsaW5lXV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVQYXJhbWV0
ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpAKGxpbmUpXTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZ0Zy
b21SYW5nZShbdmFsdWUgcmFuZ2VWYWx1ZV0pIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCkBAIC0xMjcyLDcgKzEyNTMsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNlYXJjaFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNv
bnRleHQsCiAgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gc2VhcmNo
VGV4dFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JDcml0ZXJpYShjb250ZXh0LCBzZWFyY2hTdHJp
bmdzLCBzdGFydEZyb20sIGRpcmVjdGlvbik7CiAgICAgaWQgcmVzdWx0ID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFNlYXJjaFRleHRXaXRoQ3JpdGVyaWEiIGZv
clBhcmFtZXRlcjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICBpZiAoW3Jlc3VsdCBpc0tp
bmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBjb252ZXJ0VmVjdG9y
VG9PYmplY3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+KGNvbnRl
eHQsIGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+PihyZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09iamVjdEFy
cmF5PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4oY29udGV4dCwgbWFrZVZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+KHJlc3VsdCkpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI4NCw3
ICsxMjY1LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQogICAgIC8vIG5vdCB5ZXQgZGVmaW5lZCBp
biBBcHBLaXQuLi4gb2RkCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJh
eSogY29sdW1uSGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWENvbHVtbkhlYWRlclVJRWxlbWVudHMiXTsKLSAgICBhdXRvIGNvbHVtbkhlYWRl
cnNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4oY29sdW1uSGVhZGVyc0FycmF5KTsKKyAgICBhdXRvIGNvbHVtbkhlYWRlcnNWZWN0
b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29sdW1uSGVh
ZGVyc0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbkhlYWRl
cnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTEyOTUsNyAr
MTI3Niw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBOU0FycmF5KiByb3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gcm93
SGVhZGVyc1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+Pihyb3dIZWFkZXJzQXJyYXkpOworICAgIGF1dG8gcm93SGVhZGVyc1ZlY3Rv
ciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihyb3dIZWFkZXJz
QXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93SGVhZGVyc1ZlY3Rv
cik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTMwNiw3ICsxMjg3LDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZkNvbHVtbnMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5T
QXJyYXkqIGNvbHVtbnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwotICAgIGF1dG8gY29sdW1uc1Zl
Y3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+Pihjb2x1bW5zQXJyYXkpOworICAgIGF1dG8gY29sdW1uc1ZlY3RvciA9IG1ha2VWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1bW5zQXJyYXkpOwogICAgIHJldHVy
biBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uc1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIApAQCAtMTMxNyw3ICsxMjk4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MoKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIHJvd3NBcnJheSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdOwotICAgIGF1dG8gcm93c1ZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihyb3dzQXJyYXkpOworICAgIGF1dG8gcm93c1Zl
Y3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihyb3dzQXJy
YXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTMyOCw3ICsxMzA5LDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZp
c2libGVDZWxscygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJh
eSogY2VsbHNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhWaXNpYmxlQ2VsbHMiXTsKLSAgICBhdXRvIGNlbGxzVmVjdG9yID0gY29udmVydE5TQXJyYXlU
b1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNlbGxzQXJyYXkpOworICAg
IGF1dG8gY2VsbHNWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4oY2VsbHNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjZWxs
c1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTQwOSw3ICsx
MzkwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbHVtbkluZGV4UmFuZ2UoKQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVu
c2lnbmVkIHJvdykKIHsKLSAgICBOU0FycmF5ICpjb2xSb3dBcnJheSA9IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpjb2xdLCBbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10sIG5pbF07CisgICAgTlNBcnJheSAqY29sUm93
QXJyYXkgPSBAW0AoY29sKSwgQChyb3cpXTsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IiBmb3JQYXJh
bWV0ZXI6Y29sUm93QXJyYXldKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIApAQCAt
MTQ5MCw3ICsxNDcxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3Rl
ZFRleHRSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGUKIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOihfX2JyaWRnZSBpZClt
YXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JBdHRyaWJ1dGU6TlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGVdOworICAgIFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOm1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZUF0dHJpYnV0ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xNTQ4LDcgKzE1MjksNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN5
bmNQcmVzcygpCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBhcnJheSA9IGVsZW1lbnQgPyBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV0gOiBbTlNBcnJheSBh
cnJheV07CisgICAgTlNBcnJheSogYXJyYXkgPSBlbGVtZW50ID8gQFtlbGVtZW50LT5wbGF0Zm9y
bVVJRWxlbWVudCgpXSA6IEBbXTsKICAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1
ZTphcnJheSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKIH0KQEAgLTE1NjAsNyArMTU0
MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1
cm47CiAgICAgTlNBcnJheSAqc2VsZWN0ZWRDaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1
dGVdOwotICAgIE5TQXJyYXkgKmFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmVsZW1l
bnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIE5TQXJyYXkgKmFycmF5ID0gQFtlbGVtZW50
LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBpZiAoc2VsZWN0ZWRDaGlsZHJlbikKICAgICAg
ICAgYXJyYXkgPSBbc2VsZWN0ZWRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJh
eTphcnJheV07CiAgICAgW21fZWxlbWVudCBfYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFycmF5IGZv
ckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKQEAg
LTE3NjksOCArMTc1MCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2Vs
ZWN0aW9uKCkKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENG
VHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMaW5lVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTc4MSw3ICsxNzYyLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1h
cmsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFt
ZXRlcnMgPSBtaXNzcGVsbGluZ1NlYXJjaFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JDcml0ZXJp
YShzdGFydCwgZm9yd2FyZCk7CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdl
IiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyc107Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFy
a2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTc5MSw3ICsxNzcyLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckUKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9y
VUlFbGVtZW50IiBmb3JQYXJhbWV0ZXI6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07Ci0g
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MDAsNyArMTc4MSw3IEBA
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBsZW5ndGhWYWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZW5ndGhGb3JU
ZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOworICAgIE5TTnVtYmVyKiBsZW5ndGhWYWx1ZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFu
Z2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAg
cmV0dXJuIFtsZW5ndGhWYWx1ZSBpbnRWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIApAQCAtMTgxMCw4ICsxNzkxLDggQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKgogUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZilwcmV2aW91c01hcmtlcik7CisgICAgaWQgcHJldmlv
dXNNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJl
dmlvdXNUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgyMCw4ICsxODAxLDggQEAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRN
YXJrZXIoQWNjZXMKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRN
YXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0VGV4dE1h
cmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpbmV4dE1hcmtlcik7CisgICAgaWQgbmV4dE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUo
bmV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTgzMCw3ICsxODExLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmkK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFu
Z2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dFN0cmluZyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIGlkIHRleHRTdHJpbmcgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBm
b3JQYXJhbWV0ZXI6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAg
IHJldHVybiBbdGV4dFN0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIApAQCAtMTg0MCw5ICsxODIxLDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3MKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9fYnJpZGdlIGlkKXN0YXJ0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIG5pbF07CisgICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAg
ICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIiBmb3JQYXJh
bWV0ZXI6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xODUyLDcgKzE4MzMsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUgogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4
dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJS
YW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTg3Nyw4ICsxODU4LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJr
ZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE4ODcsOCArMTg2OCw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hCiBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xODk4LDcgKzE4NzksNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3Vu
ZHMoaQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlF
bmRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6
W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01ha2VSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpXV07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENG
VHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTI0LDcgKzE5MDUsNyBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZv
ckJvdW5kcwogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlTdGFydFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFt
ZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdo
dCldXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5MzQsNyArMTkxNSw3IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
clBvaW50KGludCB4CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0
TWFya2VyRm9yUG9zaXRpb24iIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDpO
U01ha2VQb2ludCh4LCB5KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0Myw3ICsxOTI0LDcg
QEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCB1aUVsZW1lbnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihf
X2JyaWRnZSBpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCB1aUVsZW1l
bnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OwogICAgIGlmICh1aUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjcmVhdGUodWlFbGVtZW50KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0x
OTc1LDcgKzE5NTYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogICAgIE5TQXR0cmlidXRl
ZFN0cmluZyogc3RyaW5nID0gbmlsOwogCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0
dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHN0cmluZyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6bWFya2VyUmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIGlm
ICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkKQEAg
LTE5OTAsOSArMTk3MSw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhCiAKICAgICBpZCBwYXJh
bWV0ZXIgPSBuaWw7CiAgICAgaWYgKGluY2x1ZGVTcGVsbENoZWNrKQotICAgICAgICBwYXJhbWV0
ZXIgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVy
IG51bWJlcldpdGhCb29sOmluY2x1ZGVTcGVsbENoZWNrXSwgQCJBWFNwZWxsQ2hlY2siLCAoX19i
cmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCksIEAiQVhUZXh0
TWFya2VyUmFuZ2UiLCBuaWxdOworICAgICAgICBwYXJhbWV0ZXIgPSBAeyBAIkFYU3BlbGxDaGVj
ayI6IGluY2x1ZGVTcGVsbENoZWNrID8gQFlFUyA6IEBOTywgQCJBWFRleHRNYXJrZXJSYW5nZSI6
IG1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIH07CiAgICAgZWxzZQotICAg
ICAgICBwYXJhbWV0ZXIgPSAoX19icmlkZ2UgaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCk7CisgICAgICAgIHBhcmFtZXRlciA9IG1hcmtlclJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpOwogCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgc3Ry
aW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0
ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyIgZm9yUGFyYW1ldGVyOnBhcmFt
ZXRlcl07CkBAIC0yMDA3LDcgKzE5ODgsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBm
b3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
XTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
IiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwogICAgIGlm
ICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjAyMiw3ICsyMDAzLDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29u
dGFpbnNBdHRyaWJ1dGUKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSW5kZXhGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6KF9fYnJpZGdlIGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIE5T
TnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhJbmRleEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gW2luZGV4TnVtYmVyIGludFZhbHVlXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0yMDMyLDcgKzIwMTMsNyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiBtYXJrZXIpCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtl
clZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9y
UGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlkIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbdmFsaWROdW1iZXIgYm9vbFZh
bHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0yMDQzLDcgKzIwMjQs
NyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZvckluZGV4IiBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51
bWJlcldpdGhJbnRlZ2VyOnRleHRJbmRleF1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1Myw3
ICsyMDM0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyIl07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDYz
LDcgKzIwNDQsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlciJdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA3Miw4
ICsyMDUzLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAg
aWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWExlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA4Miw4ICsy
MDYzLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdl
KTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYUmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjA5Miw4ICsyMDczLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJrZXIKIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBwcmV2aW91c1dv
cmRTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6
KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXBy
ZXZpb3VzV29yZFN0YXJ0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1dvcmRTdGFydE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1dvcmRT
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
Y3JlYXRlKHByZXZpb3VzV29yZFN0YXJ0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTAyLDggKzIwODMsOCBAQCBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZp
b3VzV29yZFN0YXJ0VGV4dE1hcgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIG5leHRXb3JkRW5kTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2Jy
aWRnZSBDRlR5cGVSZWYpbmV4dFdvcmRFbmRNYXJrZXIpOworICAgIGlkIG5leHRXb3JkRW5kTWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRXb3Jk
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUobmV4dFdvcmRFbmRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTIsOCArMjA5Myw4IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRU
ZXh0TWFya2VyRm9yCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0
ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtl
clJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFn
cmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMjIsOCArMjEwMyw4IEBAIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwYXJhZ3JhcGhUZXh0TWFya2VyCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3Vz
UGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2Jy
aWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZilwcmV2aW91
c1BhcmFncmFwaFN0YXJ0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3Vz
UGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTMyLDgg
KzIxMTMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZQogUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dFBhcmFncmFwaEVuZE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0UGFy
YWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2Ug
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpbmV4dFBhcmFncmFw
aEVuZE1hcmtlcik7CisgICAgaWQgbmV4dFBhcmFncmFwaEVuZE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dFBh
cmFncmFwaEVuZE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjE0Miw4ICsyMTIzLDggQEAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4
dE1hcmsKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFNlbnRlbmNlVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE1Miw4ICsyMTMzLDggQEAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNl
VGV4dE1hcmtlclIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZilwcmV2aW91c1BhcmFncmFwaFN0
YXJ0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzU2VudGVuY2VTdGFy
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxNjIsOCArMjE0Myw4IEBAIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJl
dmlvdXNTZW50ZW5jZVN0YXJ0VGV4CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpbmV4dFBhcmFncmFwaEVuZE1hcmtlcik7Cisg
ICAgaWQgbmV4dFBhcmFncmFwaEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIg
Zm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0UGFyYWdyYXBoRW5kTWFya2Vy
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGNiZDE0Njli
OTI4OGVjNjRlZDZjNmE1N2MxM2ZiNjdiZjVmNzBiOTQuLjYxY2RmMGVjMTRhN2VjODc3NTMxMTMy
NTNlZTViNzY5M2E4ZTE3NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRI
YXNIYWRVc2VySW50ZXJhY3Rpb24oKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKK3ZvaWQg
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJl
Y2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyIpKTsKICAgICAKQEAgLTIwMDUsNyArMjAwNSw3
IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKLXZvaWQgVGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJiB3ZWJWaWV3Q2F0
ZWdvcnkpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0
cmluZyYmIHdlYlZpZXdDYXRlZ29yeSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeSIpKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaAppbmRleCBlODRmNWViNzQ5YTI0MDJiYjk4NWEwMTYzNjRjODFhNjYy
OWQ5YmI2Li5jN2E5NTY0MzQ0NjMyOTRiMTU1YzVjMDUwMDI0ZGVmNDdmY2I3MWY1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBUZXN0SW52b2Nh
dGlvbl9oCi0jZGVmaW5lIFRlc3RJbnZvY2F0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgpAQCAtNTMsMTcgKzUy
LDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SXNQaXhlbFRlc3QoY29uc3Qgc3RkOjpzdHJp
bmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIAotICAgIHZvaWQgc2V0Q3VzdG9tVGltZW91dChXVEY6
OlNlY29uZHMgZHVyYXRpb24pIHsgbV90aW1lb3V0ID0gZHVyYXRpb247IH0KKyAgICB2b2lkIHNl
dEN1c3RvbVRpbWVvdXQoU2Vjb25kcyBkdXJhdGlvbikgeyBtX3RpbWVvdXQgPSBkdXJhdGlvbjsg
fQogICAgIHZvaWQgc2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGJvb2wgdmFsdWUpIHsgbV9k
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgPSB2YWx1ZTsgfQogCi0gICAgV1RGOjpTZWNvbmRzIHNo
b3J0VGltZW91dCgpIGNvbnN0OworICAgIFNlY29uZHMgc2hvcnRUaW1lb3V0KCkgY29uc3Q7CiAK
ICAgICB2b2lkIGludm9rZSgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnZUJvZHkpOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcFdlYlByb2Nlc3NVbnJlc3BvbnNpdmVu
ZXNzKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBvdXRwdXRUZXh0KGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBvdXRwdXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgdm9pZCBkaWRCZWdpblN3aXBlKCk7CiAgICAgdm9pZCB3aWxsRW5kU3dpcGUoKTsKQEAgLTg3
LDkgKzg2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0UHJldmFsZW50UmVzb3VyY2UoKTsK
ICAgICB2b2lkIGRpZFNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlkU2V0
SGFzSGFkVXNlckludGVyYWN0aW9uKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYmKTsKICAgICB2b2lkIGRp
ZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCk7CiAKICAgICB2b2lkIGRpZFJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFscygpOwpAQCAtMTM4LDEyICsxMzcsMTIgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBUZXN0T3B0aW9ucyBtX29wdGlvbnM7CiAgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IG1fdXJsOwotICAgIFdURjo6U3RyaW5nIG1fdXJsU3RyaW5nOworICAgIFN0cmluZyBt
X3VybFN0cmluZzsKICAgICBSdW5Mb29wOjpUaW1lcjxUZXN0SW52b2NhdGlvbj4gbV93YWl0VG9E
dW1wV2F0Y2hkb2dUaW1lcjsKIAogICAgIHN0ZDo6c3RyaW5nIG1fZXhwZWN0ZWRQaXhlbEhhc2g7
CiAKLSAgICBXVEY6OlNlY29uZHMgbV90aW1lb3V0OworICAgIFNlY29uZHMgbV90aW1lb3V0Owog
ICAgIGJvb2wgbV9kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgeyBmYWxzZSB9OwogCiAgICAgLy8g
SW52b2NhdGlvbiBzdGF0ZQpAQCAtMTczLDUgKzE3MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIFRlc3RJbnZvY2F0aW9uX2gKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1
NDhmZTczMTMwNjY0NjhmMmRhYTc2YzIxNTAwZTBhMmE0MDg0MWJmLi42ZjMyOWU3NWI5NzE3ZjMw
Y2M4N2FjOWNmYzMxY2ZjOTY4M2FmMDE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC01Miw2ICs1Miw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMTAx
LDEwICsxMDIsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6
ZSgpCiAgICAgU3RyaW5nIHJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIgPSBTdHJpbmcoZHVt
cFJlbmRlclRyZWVUZW1wKSArICcvJyArICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIjsKICAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6IG5pbF07CiAgICAgU3RyaW5nIGZ1bGxCcm93c2luZ1Nlc3Np
b25SZXNvdXJjZUxvZyA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIgKyAnLycgKyAiZnVs
bF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0IjsKLSAgICBOU0RpY3Rpb25hcnkg
KnJlc291cmNlTG9nUGxpc3QgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
QW5kS2V5czogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sIEAidmVyc2lvbiIsIG5pbF07Cisg
ICAgTlNEaWN0aW9uYXJ5ICpyZXNvdXJjZUxvZ1BsaXN0ID0gQHsgQCJ2ZXJzaW9uIjogQCgxKSB9
OwogICAgIGlmICghW3Jlc291cmNlTG9nUGxpc3Qgd3JpdGVUb0ZpbGU6ZnVsbEJyb3dzaW5nU2Vz
c2lvblJlc291cmNlTG9nIGF0b21pY2FsbHk6WUVTXSkKICAgICAgICAgV1RGQ3Jhc2goKTsKLSAg
ICBbcmVzb3VyY2VMb2dQbGlzdCByZWxlYXNlXTsKIH0KIAogV0tDb250ZXh0UmVmIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQoKQpAQCAtMzMyLDEyICszMzIsOCBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgaWYgKCFwYXJlbnRW
aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSBfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6cGFyZW50Vmll
dy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+
ICpuc0RvbWFpbnMpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKLSAgICAgICAg
ZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zRG9tYWlucy5jb3VudCk7Ci0gICAgICAg
IGZvciAoTlNTdHJpbmcgKmRvbWFpbiA6IG5zRG9tYWlucykKLSAgICAgICAgICAgIGRvbWFpbnMu
dW5jaGVja2VkQXBwZW5kKGRvbWFpbik7Ci0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRp
ZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhkb21haW5zKTsKKyAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIG1fY3VycmVudEludm9jYXRp
b24tPmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhtYWtlVmVjdG9yPFN0cmluZz4o
ZG9tYWlucykpOwogICAgIH1dOwogfQogCkBAIC0zNDcsMTIgKzM0Myw4IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKICAgICBpZiAoIXBhcmVudFZpZXcp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6cGFyZW50Vmlldy0+
cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpu
c0RvbWFpbnMpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKLSAgICAgICAgZG9t
YWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zRG9tYWlucy5jb3VudCk7Ci0gICAgICAgIGZv
ciAoTlNTdHJpbmcgKmRvbWFpbiA6IG5zRG9tYWlucykKLSAgICAgICAgICAgIGRvbWFpbnMudW5j
aGVja2VkQXBwZW5kKGRvbWFpbik7Ci0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJl
Y2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICBbZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6
XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIG1fY3VycmVudEludm9j
YXRpb24tPmRpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhtYWtlVmVjdG9yPFN0cmlu
Zz4oZG9tYWlucykpOwogICAgIH1dOwogfQogCkBAIC0zODcsNyArMzc5LDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKICAgICAgICAgICAgIGNhdGVnb3J5ID0g
IldlYkJyb3dzZXIiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShjYXRlZ29yeSk7Cisg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoV1RG
TW92ZShjYXRlZ29yeSkpOwogICAgIH1dOwogfQogCkBAIC00OTQsMTAgKzQ4Niw3IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6Omluc3RhbGxDdXN0b21NZW51QWN0aW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCBkaXNtaXNzZXNBCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd2VkTWVudUFj
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGFjdGlvbnMpCiB7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBhdXRvIGFjdGlvbk5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
PE5TU3RyaW5nICo+IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFjdGlvbnMuc2l6ZSgpXSk7Ci0g
ICAgZm9yIChhdXRvJiBhY3Rpb24gOiBhY3Rpb25zKQotICAgICAgICBbYWN0aW9uTmFtZXMgYWRk
T2JqZWN0OmFjdGlvbl07Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIHNldEFs
bG93ZWRNZW51QWN0aW9uczphY3Rpb25OYW1lcy5nZXQoKV07CisgICAgW21fbWFpbldlYlZpZXct
PnBsYXRmb3JtVmlldygpIHNldEFsbG93ZWRNZW51QWN0aW9uczpjcmVhdGVOU0FycmF5KGFjdGlv
bnMpLmdldCgpXTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFjdGlvbnMpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4
IGJjM2I2MzVlN2FhMGI2MmEzMzg5ZjdjN2QyZmRlYTA0YjRhZDk4NWYuLmUyOTgzOGJhODI4ZmI0
YmQ5MDg1N2FiNmJlZjJmZDQ2NTlmYjQyMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCAtIChOU0Fy
cmF5ICopaW50ZXJwb2xhdGVkRXZlbnRzOihOU0RpY3Rpb25hcnkgKilpbnRlcnBvbGF0aW9uc0Rp
Y3Rpb25hcnkKICAgICB3aGlsZSAodGltZSA8IGVuZFRpbWUpIHsKICAgICAgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqbmV3RXZlbnQgPSBbZW5kRXZlbnQgbXV0YWJsZUNvcHldOwogICAgICAgICBk
b3VibGUgdGltZVJhdGlvID0gKHRpbWUgLSBzdGFydFRpbWUpIC8gKGVuZFRpbWUgLSBzdGFydFRp
bWUpOwotICAgICAgICBuZXdFdmVudFtISURFdmVudFRpbWVPZmZzZXRLZXldID0gW05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6KHRpbWUpXTsKKyAgICAgICAgbmV3RXZlbnRbSElERXZlbnRUaW1l
T2Zmc2V0S2V5XSA9IEAodGltZSk7CiAgICAgICAgIAogICAgICAgICBOU0VudW1lcmF0b3IgKnN0
YXJ0RW51bWVyYXRvciA9IFtzdGFydFRvdWNoZXMgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgICAg
IE5TRGljdGlvbmFyeSAqc3RhcnRUb3VjaDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQppbmRleCA1ZTMzZjFmNTYzODgzNmJmYjZmNjA2NDhi
MTA3OTg4NWE0Njg0ZjIxLi42NDE3ODJjYTk3ZTFkYWZiOTAwOTE5ZGIxOWIzNDc0YTU1NDM4OGU1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdN
YWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFj
Lm1tCkBAIC0yMjMsMTAgKzIyMywxMCBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2lu
ZG93U2NhbGVJZk5lZWRlZChmbG9hdCBuZXdTY2FsZSkKIAogICAgIC8vIEluc3RlYWQgb2YgcmUt
Y29uc3RydWN0aW5nIHRoZSBjdXJyZW50IHdpbmRvdywgbGV0J3MgZmFrZSByZXNpemUgaXQgdG8g
ZW5zdXJlIHRoYXQgdGhlIHNjYWxlIGNoYW5nZSBnZXRzIHBpY2tlZCB1cC4KICAgICBmb3JjZVdp
bmRvd0ZyYW1lc0NoYW5nZWQoKTsKKwogICAgIC8vIENoYW5naW5nIHRoZSBzY2FsaW5nIGZhY3Rv
ciBvbiB0aGUgd2luZG93IGRvZXMgbm90IHRyaWdnZXIgTlNXaW5kb3dEaWRDaGFuZ2VCYWNraW5n
UHJvcGVydGllc05vdGlmaWNhdGlvbi4gV2UgbmVlZCB0byBzZW5kIHRoZSBub3RpZmljYXRpb24g
bWFudWFsbHkuCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG5vdGlmaWNhdGlv
blVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6MV0pOwotICAgIFtub3RpZmljYXRpb25Vc2VySW5mbyBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6Y3VycmVudFNjYWxlXSBmb3JLZXk6TlNCYWNraW5nUHJvcGVy
dHlPbGRTY2FsZUZhY3RvcktleV07Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpOU1dpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9w
ZXJ0aWVzTm90aWZpY2F0aW9uIG9iamVjdDptX3dpbmRvdyB1c2VySW5mbzpub3RpZmljYXRpb25V
c2VySW5mby5nZXQoKV07CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7IE5TQmFja2lu
Z1Byb3BlcnR5T2xkU2NhbGVGYWN0b3JLZXk6IEAoY3VycmVudFNjYWxlKSB9OworICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6TlNX
aW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllc05vdGlmaWNhdGlvbiBvYmplY3Q6bV93aW5k
b3cgdXNlckluZm86dXNlckluZm9dOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9yY2VX
aW5kb3dGcmFtZXNDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVz
dENvbnRyb2xsZXJNYWMubW0KaW5kZXggOGM1OTU1NTE2MTdmZTAzOTVhYWU0Nzc5NzZiOTdmNDhm
ZmU2OWZiNi4uNDk4ZTM3MmYyMDQzNDMwZWNiOWU3ZTI4OTNlMDQzNmRlNmVhNTYwOSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTQ0
LDcgKzQ0LDYgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRy
YXMuaD4KIAogQGludGVyZmFjZSBOU1NvdW5kICgpCiArICh2b2lkKV9zZXRBbGVydFR5cGU6KE5T
VUludGVnZXIpYWxlcnRUeXBlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGE0NGNmZDBjMThkNTg0YmQ0OTUyMmExZjQ4
YmRkYzU0M2NhOTY4YzguLmU5NTZlZWQ5MmEwYTU4NzgzNjZlYzUzMDA5NzIyNDE2OTg4NTY3OWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxl
ck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6
YWN0aXZhdGVBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNvcHlUZXh0KEpTU3RyaW5nUmVmIHRleHQpCiB7CiAg
ICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJv
YXJkOwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gb3duZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6QFtOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSBvd25lcjpuaWxdOwogICAgIFtw
YXN0ZWJvYXJkIHNldFN0cmluZzp0ZXh0LT5zdHJpbmcoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5
cGVTdHJpbmddOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9X
ZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDFiNjI4NmNmOTMxMjNlYmY5MDEz
YzYxMjYyYTE2NjJiNmQ5OTBlYzEuLjBkMzA0ZmMyODRhMjg4M2NmZDBmNzJlMmY5NjYwNTBjZjI1
ZWRiMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RS
dW5uZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktp
dFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCkBAIC04Miw3ICs4Miw3IEBAICsgKHZvaWQpcmVsZWFz
ZUxvY2FsUGFzdGVib2FyZHMKIC8vIG9mIHRoZSB1c3VhbCBXZWJTY3JpcHRPYmplY3QgdGhhdCBp
cyBwYXNzZWQgYXJvdW5kCiAtIChOU0ludGVnZXIpZGVjbGFyZVR5cGU6KE5TU3RyaW5nICopdHlw
ZSBvd25lcjooaWQpbmV3T3duZXIKIHsKLSAgICByZXR1cm4gW3NlbGYgZGVjbGFyZVR5cGVzOltO
U0FycmF5IGFycmF5V2l0aE9iamVjdDp0eXBlXSBvd25lcjpuZXdPd25lcl07CisgICAgcmV0dXJu
IFtzZWxmIGRlY2xhcmVUeXBlczpAW3R5cGVdIG93bmVyOm5ld093bmVyXTsKIH0KIAogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395905</attachid>
            <date>2020-04-08 20:28:01 -0700</date>
            <delta_ts>2020-04-09 17:01:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210138-20200408202800.patch</filename>
            <type>text/plain</type>
            <size>475033</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODQwNzQ4NTdkNTNmYThlMThjNWUyNGM2NzE1Zjc2YmU0NmJkYmFjLi4wNDhmOTc3ZGNlNTQ5NGRh
NTNjODUyYTBkNjQ5MDEzYmQ5Njc4YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNC0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051
bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0V2l0aG91dENvcHkpOiBVc2UgQCgpLgorICAgICAgICAodmFsdWVUb051bWJlcik6IERp
dHRvLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAoLVtUZXN0T2Jq
ZWN0IGNhbGxiYWNrOl0pOiBVc2UgQFtdLCBAKCksIGFuZCBAe30uCisgICAgICAgICgtW1RleHRY
WVogY2xpY2tdKTogRGl0dG8uCisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOiBEaXR0
by4KKwogMjAyMC0wNC0wOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9JTlRMIGRlZmluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYmM3OTQ5OWQ3YWIz
MTgzMGI0NmQ5ZmEzYzY5ZDRlZDk1NzIxM2U2Li40MjAyNGZhYzE3ZmQ1MzNmMmExZDUxMDZiMmMy
M2IwNTdiYWFhNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTA4ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXks
IE5TRGljdGlvbmFyeSwgYW5kIE5TTnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgVmVjdG9yQ29jb2EuaC4KKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1NYWMuY21ha2U6IERpdHRvLgorCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0
cmFzLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogd3RmL2NvY29hL1VS
TENvY29hLm1tOiBEaXR0by4KKworICAgICAgICAqIHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oOiBB
ZGRlZC4gQ29udGFpbnMgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZlY3RvcgorICAgICAgICBmdW5j
dGlvbiB0ZW1wbGF0ZXMgZm9yIGNvbnZlcnRpbmcgTlNBcnJheSB0byBhbmQgZnJvbSBWZWN0b3Iu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDogQWRkZWQgbWFrZU5TQXJyYXlFbGVt
ZW50IGFuZCBtYWtlVmVjdG9yRWxlbWVudAorICAgICAgICBmdW5jdGlvbnMsIG1ha2luZyBjcmVh
dGVOU0FycmF5IGFuZCBtYWtlVmVjdG9yIGNvbXBhdGlibGUgd2l0aCBTdHJpbmcuCisgICAgICAg
ICogd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW06CisgICAgICAgIChXVEY6Om1ha2VOU0Fy
cmF5RWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV1RGOjptYWtlVmVjdG9yRWxlbWVudCk6IEFk
ZGVkLgorCiAyMDIwLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgcXVlcnlTZWxlY3RvcigiI1x1MDAwMCIpIHNob3VsZCBtYXRjaCBhbiBlbGVtZW50IHdp
dGggSUQgVStGRkZECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTExZGRjN2RlZjM0MTAyZTU4NWI3MmZlZjY1ZmUy
ZjI4MmEzMzA1NC4uODA0ODUxNjZkNWFhN2Y5OWI0ZDc1Y2Y4M2M2ZjJjMTM4MDU4ZjBhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0wNC0wOCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rp
b25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkZWQgY3JlYXRlTlNBcnJh
eSBhbmQgbWFrZVZlY3Rvci4KKyAgICAgICAgLSBVc2UgY3JlYXRlTlNBcnJheSBhbmQgbWFrZVZl
Y3RvcjxTdHJpbmc+IGluIG1hbnkgcGxhY2VzIHdoZXJlIHdlIGNvbnZlcnQKKyAgICAgICAgICBi
ZXR3ZWVuIE5TQXJyYXkgYW5kIFZlY3RvciwgcmVwbGFjaW5nIG11bHRpcGxlIGV4aXN0aW5nIGZ1
bmN0aW9ucyB0aGF0IHdlcmUKKyAgICAgICAgICBkb2luZyB0aGUgc2FtZSBqb2IgYmVmb3JlOyBs
YXRlciBjYW4gdXNlIHRoZW0gZXZlbiBtb3JlLgorICAgICAgICAtIFVzZSBAW10gbWFueSBwbGFj
ZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU0FycmF5LgorICAgICAgICAtIFVz
ZSBAe30gbWFueSBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBOU0RpY3Rp
b25hcnkuCisgICAgICAgIC0gVXNlIEAoKSBtYW55IHBsYWNlcyB3aGVyZSB3ZSBjcmVhdGUgYW4g
YXV0b3JlbGVhc2VkIE5TTnVtYmVyLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IE1v
dmVkIEZsb2F0L0ludFJlY3RNYWMubW0gdG8gRmxvYXQvSW50UmVjdENvY29hLm1tLgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0SGVhZGluZ0xldmVsKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10u
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9zdHJpbmdGcm9tU3Rh
cnRNYXJrZXI6dG9FbmRNYXJrZXI6YXR0cmlidXRlZDpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZWxlbWVudHNGb3JSYW5nZTpdKTogVXNlIEBb
XS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlcnNG
b3JSYW5nZTpdKTogVXNlIEBbXS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VE
aWN0aW9uYXJ5KTogVXNlIEAoKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKG1ha2VWZWN0b3JFbGVt
ZW50KTogQWRlZCBvdmVybG9hZCBmb3IgQWNjZXNzaWJpbGl0eVNlYXJjaEtleS4KKyAgICAgICAg
KGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUpOgorICAgICAgICBVc2UgbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5Pi4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoYWNjZXNzaWJpbGl0eVRleHRDcml0ZXJpYUZvclBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUpOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAo
YWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYUZvclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUp
OiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZSk6IFVzZSBAKCkuCisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVM
ZXZlbCk6IFVzZSBAKCkuCisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZl
bCk6IFVzZSBAKCkuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBY3Rpb25OYW1lc10pOiBVc2UgQFtdLgorICAgICAgICAoY29udmVydFN0cmlu
Z3NUb05TQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgIFVzZSBAKCks
IEBbXSwgYW5kIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6Cisg
ICAgICAgIERpdHRvLgorCisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
OgorICAgICAgICAoK1tXZWJTY3JpcHRPYmplY3QgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOm9y
aWdpblJvb3RPYmplY3Q6cm9vdE9iamVjdDpdKToKKyAgICAgICAgVXNlIEAoKS4KKworICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JD
b250ZXh0KToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGRlZmF1bHRQYXJhZ3JhcGhT
dHlsZSk6IFVzZSBAW10uCisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0
ZXNGb3JFbGVtZW50KTogVXNlIEAoKS4KKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNz
TWV0YUVsZW1lbnRXaXRoTmFtZSk6IFVzZSBAKCkuCisgICAgICAgIChIVE1MQ29udmVydGVyOjpf
YWRkVGFibGVGb3JFbGVtZW50KTogVXNlIEAoKS4KKworICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1l
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJl
bnRSb290IGNvbnN0KTogVXNlIEBbXS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVU
eXBlUmVnaXN0cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDogQWRkZWQgbWFrZU5TQXJyYXlF
bGVtZW50IG92ZXJsb2FkIHNvIHdlIGNhbgorICAgICAgICBjb252ZXJ0IFZlY3RvcjxGbG9hdFJl
Y3Q+IGludG8gTlNBcnJheTxOU1ZhbHVlPi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0Lmg6IFNpbWlsYXJseSBmb3IgSW50UmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKTog
VXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6bWVkaWFEZXNjcmlwdGlvbkZvcktpbmQpOiBVc2UgQFtdLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3Nl
dEZvclVSTCk6IFVzZSBAKCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckl0ZW0pOiBVc2UgQCgpLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tQbGF5YWJp
bGl0eSk6IFVzZSBAW10uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCk6IFVzZSBAe30gYW5kIEAoKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6dmFsdWVG
dW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OnNldEZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHlGcm9tVmFsdWVGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6c2V0VG9WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OmNvcHlUb1ZhbHVlRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlWYWx1ZXNGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0S2V5VGltZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5S2V5VGltZXNGcm9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VGltaW5nRnVuY3Rpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weVRpbWluZ0Z1
bmN0aW9uc0Zyb20pOgorICAgICAgICBVc2UgQCgpLCBAW10sIG1vZGVybiBmb3IgbG9vcHMsIGF1
dG8sIGFuZCBhbGxvY2F0ZSB3aXRoIGNhcGFjaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbik6IFVzZSBAKCku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbTog
TW92ZWQgZnJvbSBtYWMvRmxvYXRSZWN0TWFjLm1tLgorICAgICAgICAoV2ViQ29yZTo6bWFrZU5T
QXJyYXlFbGVtZW50KTogQWRkZWQgc28gd2UgY2FuIGNvbnZlcnQgVmVjdG9yPEZsb2F0UmVjdD4K
KyAgICAgICAgaW50byBOU0FycmF5PE5TVmFsdWU+LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbTogTW92ZWQgZnJvbSBtYWMvSW50UmVjdE1hYy5tbS4K
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VOU0FycmF5RWxlbWVudCk6IFNpbWlsYXJseSBmb3IgSW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QpOiBVc2UgY2xhbXBUbyB0
byBiZSBjb25zaXN0ZW50IHdpdGggd2hhdAorICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0
UmVjdCkgZG9lcyAod2hpbGUgZml4aW5nIGNoZWNrLXdlYmtpdC1zdHlsZSBjb21wbGFpbnQpLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAg
ICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6IEFkZCBXZWJDb3JlIG5hbWVzcGFjZSBwcmVmaXg7
IG5lZWRlZCBkZXBlbmRpbmcgb24KKyAgICAgICAgaG93IHNvdXJjZXMgZ2V0IHVuaWZpZWQgKGFu
ZCB3YXMgYWZmZWN0aW5nIG15IGxvY2FsIGJ1aWxkIHdoZW4gaXQgdGVtcG9yYXJpbHkKKyAgICAg
ICAgaGFkIGFuIGFkZGl0aW9uYWwgc291cmNlIGZpbGUpLgorICAgICAgICAoLVtXZWJHTExheWVy
IGFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemU6dXNpbmdBbHBoYTpdKTogRGl0
dG8uCisgICAgICAgICgtW1dlYkdMTGF5ZXIgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxl
U3VyZmFjZV0pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250
Q2FjaGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250TW9kaWZpY2F0aW9uQXR0
cmlidXRlcyk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRU
eXBlcyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlm
aWVycyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKTogVXNlIEBbXS4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgtW1dBS1ZpZXcgc3Vidmlld3NdKTogRGl0dHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMpOiBVc2UgbWFrZVZl
Y3RvcjxTdHJpbmc+LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRQ
YXRobmFtZXNGb3JUeXBlIGNvbnN0KTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YWRkVHlwZXMpOiBVc2UgbWFrZVZlY3RvcjxT
dHJpbmc+LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyk6
IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5n
VXRpbGl0aWVzLmg6IFJlbW92ZWQKKyAgICAgICAgd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0
cmluZ0FycmF5LCByZXBsYWNlZCBieSBtYWtlVmVjdG9yPFN0cmluZz4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZVN0
cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4K
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KTogVXNlIEAoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6IFVzZSBAKCkuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICogX051bGxhYmxlICBjb25z
dCk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25zdCk6IFVzZSBAe30uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6IFVzZSBA
WUVTL0BOTy4KKwogMjAyMC0wNC0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIHF1ZXJ5U2VsZWN0b3IoIiNcdTAwMDAiKSBzaG91bGQgbWF0Y2ggYW4gZWxlbWVu
dCB3aXRoIElEIFUrRkZGRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOTEyNWY4ODAwNmQ4Y2EyMzkzZTA0ZjQwNzEx
MGJiNWM1YjFkZDBjLi5hODk0MWQ5M2ZhMDhlMjkwM2YzZjJhM2M0OWMxNmYwMTQ2ZDM1NjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1NyBAQAorMjAyMC0wNC0wOCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBOU0FycmF5LCBOU0RpY3Rp
b25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbTogUmVtb3ZlIHVuZWVkZWQgaW5jbHVkZS4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOiBEaXR0by4KKworICAgICAgICAq
IFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OnJlcGxhY2VkTlNDb25jcmV0ZVRhc2tfbGF1bmNoKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4K
KyAgICAgICAgKFdlYktpdDo6cmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0
VVJMX29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcik6CisgICAgICAgIERpdHRvLgorCisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OnRvU3VwcG9ydGVkTmV0d29ya3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXlt
ZW50UmVxdWVzdCk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogU2hhcmVkL21hYy9Q
YXN0ZWJvYXJkVHlwZXMubW06CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9y
RWRpdGluZyk6IFVzZSBAW10uCisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9y
VVJMKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2Vz
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0
aEFyY2hpdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JT
ZWxlY3Rpb24pOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250
ZW50UnVsZUxpc3RTdG9yZS5tbToKKyAgICAgICAgKC1bV0tDb250ZW50UnVsZUxpc3RTdG9yZSBn
ZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyczpdKTogVXNlIGNyZWF0ZU5TQXJy
YXkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAoLVtXS1Byb2Nlc3NQb29sIF9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NG
b3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEaXR0by4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQg
X2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0
ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dL
VXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5
OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVu
dFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVj
dGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0
OmNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJj
ZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJs
YWNrbGlzdDphc3NvY2lhdGVkVVJMOmNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2Vy
U2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVn
YWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJMOmNvbnRlbnRXb3JsZDpk
ZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8
U3RyaW5nPi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246XSk6IFVzZSBtYWtl
VmVjdG9yPFN0cmluZz4uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9jb3Jz
RGlzYWJsaW5nUGF0dGVybnNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczpdKTogVXNlIG1ha2VW
ZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rl
c3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udGVudHNPZlVzZXJJbnRlcmZhY2VJ
dGVtOl0pOiBVc2UgQCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uLm1tOgorICAgICAgICAoLVtfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24g
bm90aWZpY2F0aW9uc10pOiBVc2UgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbToKKyAgICAgICAgKC1bX1dLQ3VzdG9t
SGVhZGVyRmllbGRzIHRoaXJkUGFydHlEb21haW5zXSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAg
ICAgICAoLVtfV0tDdXN0b21IZWFkZXJGaWVsZHMgc2V0VGhpcmRQYXJ0eURvbWFpbnM6XSk6IFVz
ZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lc10pOiBVc2UgY3JlYXRlTlNBcnJh
eS4KKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldENhY2hlUGFydGl0
aW9uZWRVUkxTY2hlbWVzOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorICAgICAgICAoLVtf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzXSk6
IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gc2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOl0pOiBVc2UgbWFrZVZlY3RvcjxTdHJp
bmc+LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxk
SW50ZXJuYWwuaDoKKyAgICAgICAgKEFQSTo6dG9TdHJpbmdWZWN0b3IpOiBEZWxldGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAg
ICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTps
ZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAg
ICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6
bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDpiYXNlVVJMOnVzZXJDb250ZW50V29ybGQ6
XSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjph
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUpOiBVc2UgQFtdLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVc2UgbWFrZVZlY3RvcjxTdHJpbmc+
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbik6IFVzZSBAW10uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojpjb2xsZWN0S2V5Ym9hcmRMYXlvdXRDb21tYW5kc0ZvckV2ZW50KTogVXNlIEBbXS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6bGF1bmNoUHJvY2Vzcyk6IFVzZSBj
cmVhdGVOU0FycmF5LgorICAgICAgICAoV2ViS2l0Ojppc0phdmFVcGRhdGVyVVJMKTogVXNlIEBb
XS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpsYXVuY2hBcHBsaWNhdGlv
bkF0VVJMKTogVXNlIEB7fSBhbmQgY3JlYXRlTlNBcnJheS4KKyAgICAgICAgKFdlYktpdDo6aXNT
aWx2ZXJsaWdodFByZWZlcmVuY2VzVVJMKTogVXNlIEBbXS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0
OjpIaWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKTogVXNlIEAoKSBhbmQgZml4ZWQgYW4gb3Zlci1yZWxl
YXNlIG1pc3Rha2UuCisgICAgICAgIFRoaXMgY29kZSB3YXMgZG9pbmcgYWRvcHROUyBvbiB0aGUg
cmVzdWx0IG9mICtbTlNOdW1iZXJXaXRoSW50Ol0sIHdoaWNoIGlzIGluY29ycmVjdC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rp
b24ubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0
aW9uIGNvbnN0KTogVXNlIEBbXS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRTdHlsaW5n
QXRQb3NpdGlvbjppbkRpcmVjdGlvbjpdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyByZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2VsZWN0aW9uQ29tbWFuZHNXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5nVG9TZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpc3Rz
OnN0YWdlZERyYWdTb3VyY2U6XSk6CisgICAgICAgIEZpeGVkIGEgd2FzdGVmdWwgY2FsbCB0byBh
dXRvcmVsZWFzZSB3aGVyZSB3ZSBhcmUgYWRkaW5nIGFuIGl0ZW0gdG8gYSBkaWN0aW9uYXJ5LiBD
YWxsaW5nIGdldAorICAgICAgICBpcyBtb3JlIGVmZmljaWVudCBhbmQgc3RpbGwgY29ycmVjdC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06Cisg
ICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIGltYWdlUGlja2VyQ29udHJvbGxlcjpkaWRGaW5p
c2hQaWNraW5nTWVkaWFXaXRoSW5mbzpdKTogVXNlIEBbXS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW06CisgICAgICAgICgtW1dLQ29sb3JNYXRy
aXhWaWV3IGluaXRXaXRoRnJhbWU6Y29sb3JNYXRyaXg6XSk6IFJlbW92ZWQgdW5lZWRlZCBSZXRh
aW5QdHIKKyAgICAgICAgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpz
aG93KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRD
aGVja2VyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgIChXZWJL
aXQ6OlRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZCk6IFVzZSBtYWtlVmVjdG9yPFN0cmlu
Zz4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1ByaW50aW5nVmlldyBfYWRqdXN0UHJpbnRpbmdNYXJnaW5zRm9ySGVhZGVyQW5kRm9v
dGVyXSk6IFVzZSBAKCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbToKKyAgICAgICAgKGFycmF5RnJvbVJlY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tUZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOmRpZFdyYXBB
cm91bmQ6XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW06CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgbm90aWZ5QWNjZXNzaWJpbGl0eUNsaWVudHM6XSk6IFVz
ZSBAe30KKyAgICAgICAgYW5kIGZpeCBhIGJ1ZyB3aGVyZSB0aGlzIHdhcyBjcmVhdGluZyBhIGJh
Y2t3YXJkcyBkaWN0aW9uYXJ5LiBTbyB0aGlzIG5ldmVyCisgICAgICAgIGNvdWxkIGhhdmUgYmVl
biB3b3JraW5nIGJlZm9yZSwgbWFraW5nIG1lIHdvbmRlciBob3cgd2UgdGVzdCBpdC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNlYXJjaFRoZVdlYik6IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaDogUmVtb3ZlZCB0
b05TQXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NSW50ZXJuYWxzLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b05TQXJyYXkpOiBEZWxldGVkLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5t
bToKKyAgICAgICAgKC1bV0tET01Ob2RlIHRleHRSZWN0c10pOiBVc2UgY3JlYXRlTlNBcnJheS4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bToKKyAgICAgICAgKC1bV0tET01SYW5nZSB0ZXh0UmVjdHNdKTogRGl0dG8uCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcik6IFVzZSBA
e30uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjptYWtlUmVuZGVyTGF5ZXIpOiBVc2UgQFtdLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6IFVzZSBtYWtlVmVj
dG9yPFN0cmluZz4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKTogVXNlIEAoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcpOiBVc2UgQHt9LgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcp
OiBVc2UgQHt9LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbToKKyAgICAgICAgUmVtb3ZlZCBhbiB1bm5lZWRlZCBp
bmNsdWRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdE1hYy5tbTogRGl0dG8uCisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6IFVzZSBAW10uCisgICAgICAg
ICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0eUNoaWxkcmVuXSk6
IFVzZSBAW10uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Z2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9y
VGVzdGluZyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKIDIwMjAtMDQtMDggIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpjbG9uZSBzaG91bGQgdmFsaWRhdGUgaXRzIHBhcmFtZXRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwppbmRleCA4M2EwZDk1YzQ4MjA2NzFmNzNiNjFiYTdiNjYwNTYwYmQ0
YjFhNmRmLi5jZWQzNTlkMTRjZDlkZWVjNTE1YTQ1NTMwYzllMTlkZDgzMDk2MWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDQtMDggIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgTlNB
cnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdW1iZXIgaWRpb21zIHRocm91Z2hvdXQgV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dElPUzo6cnVuT3BlblBhbmVsKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQ
b3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6
CisgICAgICAgIFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaDoKKyAgICAgICAgQWRkZWQgI2lmIHNvIHRoYXQg
dGhpcyBjb3JyZWN0bHkgZG9lc24ndCBjb21waWxlIGFueXRoaW5nIG9uIE1hYy4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKCtbV2ViUERGVmlldyBzdXBw
b3J0ZWRNSU1FVHlwZXNdKTogVXNlIEBbXS4KKwogMjAyMC0wNC0wNCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBsaXZlIHJhbmdlcyBpbiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2MDRi
MTU5ODM5MjhlOTFkZjQ0MTk3MjZiMWU4MmJkMTQ3NmQ2ZDA4Li5jNWFiNmVlZjAwOTFkZWM3ZjNh
ZTRkYzcxYzBkMzJjNTgzMDJiMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTU3IEBACisyMDIwLTA0LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIFNpbXBsaWZ5IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5T
TnVtYmVyIGlkaW9tcyB0aHJvdWdob3V0IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoa2l0KTogRGVs
ZXRlZCBvdmVybG9hZCB0aGF0IHRha2VzIFZlY3RvcjxJbnRSZWN0Pi4KKyAgICAgICAgKC1bRE9N
Tm9kZSB0ZXh0UmVjdHNdKTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW0RPTVJhbmdl
IHRleHRSZWN0c10pOiBEaXR0by4KKworICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5t
bToKKyAgICAgICAgKHJhaXNlRE9NRXJyb3JFeGNlcHRpb24pOiBVc2UgQCgpLgorCisgICAgICAg
ICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgICgtW1dlYkJhY2tGb3J3
YXJkTGlzdCBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dKTogVXNlIEB7fS4KKworICAgICAgICAq
IEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKCtbV2ViSGlzdG9yeVByaXZhdGUgaW5p
dGlhbGl6ZV0pOiBVc2UgQHt9LgorICAgICAgICAoLVtXZWJIaXN0b3J5IF9zZW5kTm90aWZpY2F0
aW9uOmVudHJpZXM6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXBy
ZXNlbnRhdGlvbjpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKC1bV2ViSGlz
dG9yeUl0ZW0gZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgY3JlYXRlTlNBcnJheSBh
bmQgQCgpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tOgorICAgICAg
ICAoK1tXZWJVUkxzV2l0aFRpdGxlcyBhcnJheVdpdGhJRlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlw
ZV0pOiBVc2UgQFtdLgorICAgICAgICAoK1tXZWJVUkxzV2l0aFRpdGxlcyB3cml0ZVVSTHM6YW5k
VGl0bGVzOnRvUGFzdGVib2FyZDpdKTogVXNlIEBbXS4KKworICAgICAgICAqIE1pc2MvV2ViQ2Fj
aGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIHN0YXRpc3RpY3NdKTogVXNlIEBbXSwgQHt9LCBh
bmQgQCgpLgorICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAgICgr
W1dlYkNvcmVTdGF0aXN0aWNzIG1lbW9yeVN0YXRpc3RpY3NdKTogRGl0dG8uCisKKyAgICAgICAg
KiBNaXNjL1dlYktpdEVycm9ycy5tOgorICAgICAgICAoLVtOU0Vycm9yIF93ZWJraXRfaW5pdFdp
dGhEb21haW46Y29kZTpVUkw6XSk6IFVzZSBAKCkuCisgICAgICAgICgrW05TRXJyb3IgX3JlZ2lz
dGVyV2ViS2l0RXJyb3JzXSk6IFVzZSBAKCkuCisgICAgICAgICgtW05TRXJyb3IgX2luaXRXaXRo
UGx1Z2luRXJyb3JDb2RlOmNvbnRlbnRVUkw6cGx1Z2luUGFnZVVSTDpwbHVnaW5OYW1lOk1JTUVU
eXBlOl0pOiBVc2UgQCgpLgorCisgICAgICAgICogTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2ludDpmb250OnRleHRDb2xvcjpd
KTogVXNlIEB7fS4KKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl93aWR0aFdpdGhGb250Ol0pOiBV
c2UgQHt9LgorCisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBNaXNjL1dlYk5TUGFzdGVib2FyZEV4
dHJhcy5tbToKKyAgICAgICAgKCtbTlNQYXN0ZWJvYXJkIF93ZWJfZHJhZ1R5cGVzRm9yVVJMXSk6
IFVzZSBAW10uCisgICAgICAgICgtW05TUGFzdGVib2FyZCBfd2ViX3dyaXRlVVJMOmFuZFRpdGxl
OnR5cGVzOl0pOiBVc2UgQFtdLgorICAgICAgICAoK1tOU1Bhc3RlYm9hcmQgX3dlYl9zZXRGaW5k
UGFzdGVib2FyZFN0cmluZzp3aXRoT3duZXI6XSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBNaXNj
L1dlYk5TVVJMRXh0cmFzLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QpOiBVc2Ug
QHt9LgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHku
bW06CisgICAgICAgIChXS1BDSWRlbnRpZmllckluZm8pOiBVc2UgQCgpLgorCisgICAgICAgICog
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheSk6IFVz
ZSBAKCkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBQbHVnaW5zL1dl
YkJhc2VQbHVnaW5QYWNrYWdlLm1tOiBEaXR0by4KKworICAgICAgICAqIFBsdWdpbnMvV2ViUGx1
Z2luQ29udGFpbmVyQ2hlY2subW06CisgICAgICAgICgtW1dlYlBsdWdpbkNvbnRhaW5lckNoZWNr
IF9hY3Rpb25JbmZvcm1hdGlvbldpdGhVUkw6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBQbHVn
aW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJQbHVnaW5EYXRhYmFzZSBf
ZGVmYXVsdFBsdWdJblBhdGhzXSk6IFVzZSBAW10uCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpzaG93
KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOiBVc2UgQCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKTog
VXNlIEAoKS4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOiBV
c2UgbWFrZVZlY3RvcjxTdHJpbmc+LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9u
RGljdGlvbmFyeSBjb25zdCk6IFVzZSBAKCkuCisgICAgICAgIChraXQpOiBEZWxldGVkIG92ZXJs
b2FkIHRoYXQgdGFrZXMgVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChwbHVnaW5WaWV3KTogVXNl
IEB7fS4KKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOiBVc2Ug
Y3JlYXRlTlNBcnJheSwgQHt9LCBhbmQgQCgpLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOiBVc2UgY3JlYXRlTlNBcnJheS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOgorICAgICAg
ICAoLVtXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlbmFtZXM6XSk6IFVzZSBt
YWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgICgtW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
IGNob29zZUZpbGVuYW1lOmRpc3BsYXlTdHJpbmc6aWNvbkltYWdlOl0pOiBVc2UgQFtdLgorICAg
ICAgICAoLVtXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlbmFtZXM6ZGlzcGxh
eVN0cmluZzppY29uSW1hZ2U6XSk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNl
Q2xpY2spOgorICAgICAgICBDb21tZW50IG91dCBhbiB1bnVzZWQgYXJndW1lbnQuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfcmVjdHNGb3JS
YW5nZTpdKTogVXNlIGNyZWF0ZU5TQXJycmF5LgorICAgICAgICAoLVtXZWJGcmFtZSBfY29tcHV0
ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOnBhZ2VTaXplOl0pOiBVc2UgY3JlYXRlTlNB
cnJheSBhbmQgQFtdLgorICAgICAgICAoLVtXZWJGcmFtZSBjaGlsZEZyYW1lc10pOiBVc2UgQFtd
LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKCtbV2ViSFRN
TFZpZXcgX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBlc10pOiBVc2UgQFtdLgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOl0pOiBV
c2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBrbm93c1BhZ2VSYW5nZTpdKTogVXNlIEBb
XS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0p
OiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjb3B5Rm9udDpdKTogVXNlIEBbXS4K
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ludGVycHJldEtleUV2ZW50OnNhdmluZ0NvbW1hbmRz
Ol0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25UZXh0UmVjdHNd
KTogVXNlIGNyZWF0ZU5TQXJyYXkuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IHJlY3RzRm9yVGV4
dE1hdGNoZXNdKTogVXNlIGNyZWF0ZU5TQXJyYXkgYW5kIEBbXS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAg
ICAgICAgKCtbV2ViUERGUmVwcmVzZW50YXRpb24gcG9zdFNjcmlwdE1JTUVUeXBlc10pOiBVc2Ug
QFtdLgorICAgICAgICAoK1tXZWJQREZSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNd
KTogVXNlIEBbXS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAg
KC1bV2ViUERGVmlldyBlbGVtZW50QXRQb2ludDpdKTogVXNlIEB7fSBhbmQgQCgpLgorICAgICAg
ICAoLVtXZWJQREZWaWV3IHZpZXdTdGF0ZV0pOiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJQREZW
aWV3IHNlbGVjdGlvblRleHRSZWN0c10pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJQREZWaWV3
IHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbl0pOiBVc2UgQFtdLgorICAgICAgICAoLVtXZWJQ
REZWaWV3IF9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZlbnQ6XSk6IFVzZSBAKCkuCisgICAgICAg
ICgtW1dlYlBERlZpZXcgX29wZW5XaXRoRmluZGVyOl0pOiBVc2UgQHt9IGFuZCBAKCkuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBpbml0aWFsaXplXSk6IFVzZSBAKCkuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9z
ZXRVbnNpZ25lZEludFZhbHVlOmZvcktleTpdKTogVXNlIEAoKS4KKyAgICAgICAgKCtbV2ViUHJl
ZmVyZW5jZXMgX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZ10p
OiBVc2UgQCgpLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k6XSk6IFVzZSBAe30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKTog
VXNlIEAoKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIgX3BsYWNlUG9wdXBX
aW5kb3c6XSk6IFVzZSBAe30uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogVXNlIG1ha2VWZWN0b3I8U3Ry
aW5nPi4KKyAgICAgICAgKC1bV2ViVmlldyBfY29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtOl0p
OiBVc2UgQCgpLgorICAgICAgICAodG9TdHJpbmdWZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAo
K1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlz
dDpibGFja2xpc3Q6aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgVXNl
IG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hl
ZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3RlZEZy
YW1lczpdKToKKyAgICAgICAgVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKyAgICAgICAgKC1bV2Vi
VmlldyBfZWxlbWVudEF0V2luZG93UG9pbnQ6XSk6IFVzZSBAe30uCisgICAgICAgICgtW1dlYlZp
ZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXSk6IFVzZSBAW10uCisgICAgICAgICgtW1dl
YlZpZXcgcGFzdGVib2FyZFR5cGVzRm9yRWxlbWVudDpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1b
V2ViVmlldyByZWN0c0ZvclRleHRNYXRjaGVzXSk6IFVzZSBAW10uCisgICAgICAgICgtW1dlYlZp
ZXcgX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTpdKTogVXNlIEBbXS4KKyAgICAgICAgKC1bV2Vi
VmlldyBfc2V0Rm9udFdoaXRlbGlzdDpdKTogVXNlIG1ha2VWZWN0b3I8U3RyaW5nPi4KKwogMjAy
MC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVHJh
Y2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KaW5kZXggZjYwZDFmYjMzZTQ2YzUzNzMzYzA5MDMxMjM5ZDhmNjliNGFiMTNkOC4uYzkx
ZTZlYTI3OGFiMTk2YTYxZWJmZmFjNGM4YzA4MDRkZjczMTE3MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNDYsNyArNDYsNiBAQAogI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgotI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KQEAgLTc0Miw3ICs3NDEsNyBAQCBzdGF0aWMgSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sg
dmFsdWVUb09iamVjdFdpdGhvdXRDb3B5KEpTR2xvYmFsQ29udGV4dFJlZiBjbwogICAgICAgICAg
ICAgLy8gTm9ybWFsaXplIHRoZSBudW1iZXIsIHNvIGl0IHdpbGwgdW5pcXVlIGNvcnJlY3RseSBp
biB0aGUgaGFzaCBtYXAgLQogICAgICAgICAgICAgLy8gaXQncyBuaWNlciBub3QgdG8gbGVhayB0
aGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbCEKICAgICAgICAgICAgIHZhbHVlID0g
SlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVl
LCAwKSk7Ci0gICAgICAgICAgICBwcmltaXRpdmUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTpKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIDApXTsKKyAgICAgICAgICAgIHByaW1p
dGl2ZSA9IEAoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCAwKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSkgewogICAgICAgICAgICAg
Ly8gV291bGQgYmUgbmljZSB0byB1bmlxdWUgc3RyaW5ncywgdG9vLgogICAgICAgICAgICAgYXV0
byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUs
IDApKTsKQEAgLTgzNyw3ICs4MzYsNyBAQCBpZCB2YWx1ZVRvTnVtYmVyKEpTR2xvYmFsQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAogICAgICAg
ICByZXR1cm4gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2YWx1ZSkgPyBAWUVTIDogQE5POwog
CiAgICAgZG91YmxlIHJlc3VsdCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6KmV4Y2VwdGlv
biA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgOiByZXN1bHRdOwor
ICAgIHJldHVybiBAKCpleGNlcHRpb24gPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1
aWV0X05hTigpIDogcmVzdWx0KTsKIH0KIAogaWQgdmFsdWVUb1N0cmluZyhKU0dsb2JhbENvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IGVmYWYzMGRk
NDRlNjJjM2Y5MTdmYjZiZWU2ZWIxYjhmMGFjNjE2NTYuLjQyMmNiYTU3Zjk0MTUwNzczMDI3NDQy
OWExOGM0NDE4OWQ5NzMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCAtIChOU1N0cmluZyAqKXRlc3RBcmd1bWVudFR5
cGVzV2l0aEludDooaW50KWkgZG91YmxlOihkb3VibGUpZCBib29sZWFuOihCT09MKWIgcwogfQog
LSAodm9pZCljYWxsYmFjazooSlNWYWx1ZSAqKWZ1bmN0aW9uCiB7Ci0gICAgW2Z1bmN0aW9uIGNh
bGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDo0Ml1dXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6QFtAKDQyKV1d
OwogfQogLSAodm9pZClib2d1c0NhbGxiYWNrOih2b2lkKF4pKGludCkpZnVuY3Rpb24KIHsKQEAg
LTE5OSw3ICsxOTksNyBAQCAtICh2b2lkKWNsaWNrCiAgICAgICAgIHJldHVybjsKIAogICAgIEpT
VmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hhbmRsZXIgdmFsdWVdOwotICAgIFtmdW5jdGlv
biBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheV1dOworICAgIFtmdW5jdGlvbiBjYWxs
V2l0aEFyZ3VtZW50czpAW11dOwogfQogQGVuZAogCkBAIC0xMTcxLDEwICsxMTcxLDggQEAgc3Rh
dGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKICAgICAgICAgSlNDb250ZXh0ICpjb250
ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwogICAgICAgICBjb250ZXh0W0AiaGFuZGxl
VGhlRGljdGlvbmFyeSJdID0gXihOU0RpY3Rpb25hcnkgKmRpY3QpIHsKICAgICAgICAgICAgIE5T
RGljdGlvbmFyeSAqZXhwZWN0ZWREaWN0ID0gQHsKLSAgICAgICAgICAgICAgICBAImZvbyIgOiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSwKLSAgICAgICAgICAgICAgICBAImJhciIgOiBAewot
ICAgICAgICAgICAgICAgICAgICBAImJheiI6IFtOU051bWJlciBudW1iZXJXaXRoSW50OjJdCi0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEAiZm9vIjogQCgxKSwKKyAgICAgICAg
ICAgICAgICBAImJhciI6IEB7IEAiYmF6IjogQCgyKSB9CiAgICAgICAgICAgICB9OwogICAgICAg
ICAgICAgY2hlY2tSZXN1bHQoQCJyZWN1cnNpdmVseSBjb252ZXJ0IG5lc3RlZCBkaWN0aW9uYXJp
ZXMiLCBbZGljdCBpc0VxdWFsVG9EaWN0aW9uYXJ5OmV4cGVjdGVkRGljdF0pOwogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmEyNWU5MzRh
MTE2MjFkMzg4ODVjNTA4MDdiY2FhODk3YzI5YTg4Yy4uZTQzYjNiNGMyYTk4ZmY1YWE1M2U2ODQ4
MWMzYTMxMjQ2YzYwNmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NzcsNiArNDc3LDcgQEAKIAkJODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBU
eXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUNhc3RzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVGMUEyODQwRUUwMENDQkYyMiAv
KiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkNvdW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyNDE2NTcyNDNCQzJFNTAwMzJG
QUFFIC8qIFZlY3RvckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3RvckNvY29hLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2MzE5MUZDQjZBQjkwMDMyRUNENiAvKiBTdHJp
bmdIYXNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSGFzaGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODRCNzNFMjBERUEyODQwMDVCNzNC
MiAvKiBDRlhQQ0JyaWRnZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlhQQ0JyaWRnZVNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyog
U3RyaW5nVmlld0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3RyaW5nVmlld0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUy
NCw2ICsxNTI1LDcgQEAKIAkJCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtp
bmcuaCAqLywKIAkJCQlFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYgLyogU3lzdGVtVHJhY2luZ0Nv
Y29hLmNwcCAqLywKIAkJCQk1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0g
Ki8sCisJCQkJOTMyNDE2NTcyNDNCQzJFNTAwMzJGQUFFIC8qIFZlY3RvckNvY29hLmggKi8sCiAJ
CQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gY29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDZlODYz
MzJjZTIzZmYyZTMzZmMxNjM2NjUyNzMyZDgwNTlmNmRlZGIuLmI3NGEyNzcyOGVjNTUwMDc1NTg3
ZTBhNDgyNWMyMTgxZmI5NTkxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xOCw2
ICsxOCw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgIGNvY29hL05TVVJM
RXh0cmFzLmgKICAgICBjb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5oCiAgICAg
Y29jb2EvU29mdExpbmtpbmcuaAorICAgIGNvY29hL1ZlY3RvckNvY29hLmgKIAogICAgIGRhcndp
bi9XZWFrTGlua2luZy5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KaW5kZXggM2E0
ZmNhOTkxZjQ2YmZmYmE3NDJkNmI1OTEzY2RkZDg1YjFkZTUwNS4uNDdkZWU2Mjk1NmEzMzQ0ZjY5
NTEzOGZlNjgzYjg0YjZjNzgzMTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0K
QEAgLTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgIk5TVVJMRXh0cmFzLmgiCiAKICNpbXBvcnQgPHd0
Zi9GdW5jdGlvbi5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMSGVscGVycy5oPgogI2ltcG9ydCA8
d3RmL1VSTFBhcnNlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29j
b2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCAyM2VlOWU2ZThk
MGMxMjljZTUzZGVjOWE0ZjgzNzQ3NjQ0MGUwNjhjLi42YmRhZTgwYmQ2NzYxNmExNDg5MjFiZmY2
MzkwYmQwMTNiYTE5ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtMjYsNyArMjYs
NiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKLSNpbXBvcnQg
PHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgogI2lt
cG9ydCA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MjljMmYzYzE4
NDBlZTAxY2UwNGE5NmU3YmY3Mjg5ZTNiNDY5ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gU3BlY2lhbGl6ZSB0
aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zIGJ5IG92ZXJsb2FkaW5nIHRoZSBtYWtlTlNB
cnJheUVsZW1lbnQKKy8vIGZ1bmN0aW9ucyBhbmQgbWFrZVZlY3RvckVsZW1lbnQgZnVuY3Rpb25z
LiBUaGUgbWFrZU5TQXJyYXlFbGVtZW50IGZ1bmN0aW9uIHRha2VzCisvLyBhIGNvbnN0JiB0byBh
IHZlY3RvciBlbGVtZW50IGFuZCBjYW4gcmV0dXJuIGVpdGhlciBhIFJldGFpblB0cjxpZD4gb3Ig
YW4gaWQKKy8vIGlmIHRoZSB2YWx1ZSBpcyBhdXRvcmVsZWFzZWQuIFRoZSBtYWtlVmVjdG9yRWxl
bWVudCBmdW5jdGlvbiB0YWtlcyBhbiBpZ25vcmVkCisvLyBwb2ludGVyIHRvIHRoZSB2ZWN0b3Ig
ZWxlbWVudCB0eXBlLCBtYWtpbmcgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cCB3b3JrLCBhbmQg
YW4KKy8vIGlkIGZvciB0aGUgYXJyYXkgZWxlbWVudCwgYW5kIHJldHVybnMgYW4gT3B0aW9uYWw8
VD4gb2YgdGhlIHRoZSB2ZWN0b3IgZWxlbWVudCwKKy8vIGFsbG93aW5nIHVzIHRvIGZpbHRlciBv
dXQgYXJyYXkgZWxlbWVudHMgdGhhdCBhcmUgbm90IG9mIHRoZSBleHBlY3RlZCB0eXBlLgorLy8K
Ky8vICAgIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFZlY3RvckVsZW1l
bnRUeXBlJiB2ZWN0b3JFbGVtZW50KTsKKy8vICAgICAgICAtb3ItCisvLyAgICBpZCBtYWtlTlNB
cnJheUVsZW1lbnQoY29uc3QgVmVjdG9yRWxlbWVudFR5cGUmIHZlY3RvckVsZW1lbnQpOworLy8K
Ky8vICAgIE9wdGlvbmFsPFZlY3RvckVsZW1lbnRUeXBlPiBtYWtlVmVjdG9yRWxlbWVudChjb25z
dCBWZWN0b3JFbGVtZW50VHlwZSosIGlkIGFycmF5RWxlbWVudCk7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFZlY3RvclR5cGU+IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0FycmF5KGNvbnN0IFZl
Y3RvclR5cGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvckVsZW1lbnRUeXBlPiBWZWN0b3I8
VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3IoTlNBcnJheSAqKTsKKworLy8gSW1wbGVtZW50
YXRpb24gZGV0YWlscyBvZiB0aGUgZnVuY3Rpb24gdGVtcGxhdGVzIGFib3ZlLgorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNBcnJheShj
b25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpCit7CisgICAgYXV0byBzaXplID0gdmVjdG9yLnNpemUo
KTsKKyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OnNpemVdKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiB2ZWN0b3IpCisg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6Z2V0UHRyKG1ha2VOU0FycmF5RWxlbWVudChlbGVtZW50
KSldOworICAgIHJldHVybiBhcnJheTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxl
bWVudFR5cGU+IFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICph
cnJheSkKK3sKKyAgICBWZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IHZlY3RvcjsKKyAgICB2ZWN0
b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcnJheS5jb3VudCk7CisgICAgZm9yIChpZCBlbGVt
ZW50IGluIGFycmF5KSB7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBWZWN0b3JFbGVtZW50VHlw
ZSogdHlwZWROdWxsID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8gdmVjdG9yRWxlbWVudCA9
IG1ha2VWZWN0b3JFbGVtZW50KHR5cGVkTnVsbCwgZWxlbWVudCkpCisgICAgICAgICAgICB2ZWN0
b3IudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKnZlY3RvckVsZW1lbnQpKTsKKyAgICB9CisgICAg
cmV0dXJuIHZlY3RvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6bWFr
ZVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGMyYWRmYmU2ODAyNWFlYWFmZmQ2
ZTY2ZDNmMWEwYzc5NGJkNGRiMGMuLmEyMzcwYzc5YjY4YjQyMzA2NDZhZTQ3ZDRhZmMzZTZlNTU0
NGE0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDU0LDYgKzQ1NCwxMyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CiAg
ICAgc3RhdGljIFN0cmluZyBmbHVzaChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
LCB2b2lkKikgeyByZXR1cm4geyBjaGFyYWN0ZXJzLCBsZW5ndGggfTsgfQogfTsKIAorI2lmZGVm
IF9fT0JKQ19fCisKK1dURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5
RWxlbWVudChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxTdHJp
bmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0cmluZyosIGlkKTsKKworI2VuZGlmCisKIC8v
IERlZmluaXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKIGlubGluZSBTdHJpbmc6OlN0cmlu
ZyhTdHJpbmdJbXBsJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2Nv
Y29hL1N0cmluZ0NvY29hLm1tIGIvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2Nv
YS5tbQppbmRleCAxYmZjNTI4YTIxZmE1NDRhYjVjNDM2MzQ0NjM1NDZlYjY5OGI4NzdjLi45NThi
Y2YwN2I4NjY0NzA0MWIzMzYyNjEwOGM4NzZlM2Q5NDY3MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY29jb2EvU3RyaW5nQ29jb2EubW0KQEAgLTQ4LDQgKzQ4LDE2IEBAIFN0cmluZzo6U3RyaW5n
KE5TU3RyaW5nICpzdHIpCiAgICAgfQogfQogCitSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxl
bWVudChjb25zdCBTdHJpbmcmIHZlY3RvckVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0TlMo
KF9fYnJpZGdlX3RyYW5zZmVyIGlkKXZlY3RvckVsZW1lbnQuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFr
UmVmKCkpOworfQorCitPcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0
cmluZyosIGlkIGFycmF5RWxlbWVudCkKK3sKKyAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNLaW5k
T2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHsgeyBhcnJheUVsZW1lbnQgfSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGMyM2U0OTQ3MDQ4Zjk4ZmNmNDhlMWFhM2NkZjBhNWFiOTA5MjJjNWYuLjYy
MmI0M2FkMDlmYzQzNzQyZDRiNWUxZmJkM2E4NjczNDJjMDUxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC0zMDcsMTYgKzMwNywxOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAogCi0gICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FzY2FkZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29h
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpAQCAtMzM1LDcgKzMzNyw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0Zsb2F0UG9pbnRNYWMubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRSZWN0TWFj
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTM0Myw3ICszNDQsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRS
ZWN0TWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFNpemVNYWMubW0KICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggZmZjNjFiNDg2NTUyMGRmYTc3ZWRhNGJhNGQwOTc2MmQ2MmVlYjMxNi4uMGJh
ZmQzNmZhNjU4Nzc2MDIzNThmN2ZlZjlhN2RiNTQyYzFkNmJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0zMTUsNiArMzE1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0
cnkuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRmxvYXRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBAIC0zMjQsNiArMzI1LDcg
QEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
UG9vbENvY29hLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2Nv
YS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlLm1tCkBAIC0zNjcsNyArMzY5LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0Zsb2F0UmVjdE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1h
Yy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0zNzUsNyArMzc2LDYgQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lu
dFJlY3RNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXplTWFjLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2FkNTNjZjVkMmQ3NzhmZDhjNmJk
NmFhMjY2ZTBlNzE4NGIwMTcwNS4uN2FjZGM0ZGMyYzYxMGQ1OTExNTcyZmRmMzc2OWJjZmE0NzY0
ODVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTI3NjksMTEgKzEyNzY5LDExIEBACiAJCUIyNzUzNTQ4MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50U2l6ZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEEwQjA1
MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IENvbG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Mjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0UmVj
dE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI3NTM1NEMwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEZsb2F0UmVjdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjc1MzU0RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0U2l6ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEltYWdlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSW50UG9pbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNzUz
NTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFJlY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50UmVjdENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyog
SW50U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJ
bnRTaXplTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU1MjBCMDUz
ODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTUzMEIw
NTM4MTQwMDJDRTY0RiAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTE0Nyw3ICsyNTE0Nyw2
IEBACiAJCQkJNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgKi8sCiAJCQkJMkRFNzAwMjIxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5oICovLAogCQkJCUIyNzUzNTRCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9h
dFBvaW50TWFjLm1tICovLAotCQkJCUIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1h
Yy5tbSAqLywKIAkJCQlCMkFGRkM3NDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhY2hlTWFjLm1t
ICovLAogCQkJCUIyQUZGQzc1MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCAqLywKQEAgLTI1MTU2LDcgKzI1MTU1LDYgQEAKIAkJCQlCMjc1MzU4RDBCMDUzQTY2
MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50TWFjLm1tICovLAotCQkJCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0TWFj
Lm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplTWFjLm1tICov
LAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFjLm1t
ICovLAogCQkJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUNvcmVU
ZXh0LmNwcCAqLywKQEAgLTI1NTEzLDYgKzI1NTExLDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi8sCiAJCQkJRjQ4RDJB
QTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8sCisJCQkJQjI3NTM1NEMwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1tICovLAogCQkJCTFDMzk2OUNGMUI3NDIx
MUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi8sCiAJCQkJQzI0NThFNjExRkU4
OTc5RTAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8sCiAJCQkJQjJBRkZDNzgwRDAw
QTVDMTAwMzAwNzREIC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gKi8sCkBAIC0yNTUyNSw2ICsyNTUy
NCw3IEBACiAJCQkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0gKi8sCiAJCQkJQ0RBNTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNV
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCUNEQTU5NTk3MjE0NkRGNzgwMEE4NDE4NSAvKiBIRVZD
VXRpbGl0aWVzQ29jb2EubW0gKi8sCisJCQkJQjI3NTM1NTAwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFJlY3RDb2NvYS5tbSAqLywKIAkJCQkyRDBCNEFBOTE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJm
YWNlLmggKi8sCiAJCQkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5tbSAq
LywKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1t
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCAxNDlhNmYy
Njk4NzAzZTkzYWM3MTE2MWY5MjNjMGU5YTRmMWRhOGE2Li5hZDQ3MWNjMjg2OGUyMzBhY2M0NjFi
MzM1ZjM0NDNiNWYzZjczZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQpAQCAtMjEzNiw3ICsyMTM2LDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRCbG9ja3F1b3RlTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clMKICAgICBp
bnQgcXVvdGVMZXZlbCA9IGJsb2NrcXVvdGVMZXZlbChyZW5kZXJlcik7CiAgICAgCiAgICAgaWYg
KHF1b3RlTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2li
aWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpx
dW90ZUxldmVsXSByYW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0
ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCB2YWx1ZTpAKHF1b3RlTGV2ZWwp
IHJhbmdlOnJhbmdlXTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJp
YnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCByYW5nZTpyYW5nZV07CiB9
CkBAIC0yMTUwLDcgKzIxNTAsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEhl
YWRpbmdMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaQogICAgIGludCBw
YXJlbnRIZWFkaW5nTGV2ZWwgPSBwYXJlbnRPYmplY3QtPmhlYWRpbmdMZXZlbCgpOwogICAgIAog
ICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJp
YnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1ZTpbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpwYXJlbnRIZWFkaW5nTGV2ZWxdIHJhbmdlOnJhbmdlXTsKKyAgICAgICAgW2F0
dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIHZh
bHVlOkAocGFyZW50SGVhZGluZ0xldmVsKSByYW5nZTpyYW5nZV07CiAgICAgZWxzZQogICAgICAg
ICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5IZWFkaW5n
TGV2ZWwgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgLSAoTlNBcnJheSAq
KXRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbgogICAgIGlmICghc3RhcnRNYXJrZXIgfHwgIWVu
ZE1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czpzdGFydE1hcmtlciwgZW5kTWFya2VyLCBuaWxdOworICAgIHJldHVy
biBAW3N0YXJ0TWFya2VyLCBlbmRNYXJrZXJdOwogfQogCiAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKXRleHRNYXJrZXJGb3JQb3NpdGlvbjooTlNJbnRlZ2VyKXBvc2l0aW9uCkBAIC0y
NDY4LDcgKzI0NjgsNyBAQCAtIChpZClfc3RyaW5nRnJvbVN0YXJ0TWFya2VyOihXZWJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopc3RhcnRNYXJrZXIgdG9FbmRNYXJrZQogICAgIGlmICghc3RhcnRN
YXJrZXIgfHwgIWVuZE1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBOU0Fy
cmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6W05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czpzdGFydE1hcmtlciwgZW5kTWFya2VyLCBuaWxdIGF0dHJpYnV0ZWQ6YXR0
cmlidXRlZF07CisgICAgTlNBcnJheSogYXJyYXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOkBbc3RhcnRNYXJrZXIsIGVuZE1hcmtlcl0gYXR0cmlidXRlZDphdHRyaWJ1dGVkXTsK
ICAgICBDbGFzcyByZXR1cm5DbGFzcyA9IGF0dHJpYnV0ZWQgPyBbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBjbGFzc10gOiBbTlNNdXRhYmxlU3RyaW5nIGNsYXNzXTsKICAgICBpZCByZXR1cm5W
YWx1ZSA9IFtbKE5TU3RyaW5nICopW3JldHVybkNsYXNzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CiAgICAgCkBAIC0yNTg2LDcgKzI1ODYsNyBAQCAtIChOU0FycmF5ICopZWxlbWVudHNGb3JS
YW5nZTooTlNSYW5nZSlyYW5nZQogICAgIGlmICghc3RhcnRNYXJrZXIgfHwgIWVuZE1hcmtlcikK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBOU0FycmF5KiBhcnJheSA9IFtzZWxmIGFy
cmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydE1h
cmtlciwgZW5kTWFya2VyLCBuaWxdIGF0dHJpYnV0ZWQ6Tk9dOworICAgIE5TQXJyYXkqIGFycmF5
ID0gW3NlbGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0TWFya2VyLCBlbmRNYXJr
ZXJdIGF0dHJpYnV0ZWQ6Tk9dOwogICAgIE5TTXV0YWJsZUFycmF5KiBlbGVtZW50cyA9IFtOU011
dGFibGVBcnJheSBhcnJheV07CiAgICAgZm9yIChpZCBlbGVtZW50IGluIGFycmF5KSB7CiAgICAg
ICAgIGlmICghW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgY2xhc3NdXSkKQEAgLTI4NTIsNyArMjg1Miw3IEBAIC0gKE5TQXJyYXkgKil0ZXh0TWFya2Vy
c0ZvclJhbmdlOihSZWZQdHI8UmFuZ2U+KXJhbmdlCiAgICAgV2ViQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIGVuZCA9IFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlOnJhbmdlIGlzU3RhcnQ6Tk8gY2FjaGU6c2VsZi5heEJhY2tpbmdPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKV07CiAgICAgaWYgKCFzdGFydCB8fCAhZW5kKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0LCBlbmQs
IG5pbF07CisgICAgcmV0dXJuIEBbc3RhcnQsIGVuZF07CiB9CiAKIC0gKE5TU3RyaW5nICopYWNj
ZXNzaWJpbGl0eUV4cGFuZGVkVGV4dFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCA2ODg3ODJjZmRlZDdhZTUz
N2Q0YTc0YjI2YjJjYTg0OTUyMTQxMzJiLi5iMTVjZDA1ODA1MmU2YmQ2Y2YzNGQxNTM0ZmFmYjgx
MWZjZDBhM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTQ0NSw3ICs0NDUsNyBAQCBzdGF0aWMgTlNEaWN0aW9u
YXJ5ICp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBBWFRleAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNoYW5nZSA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XTsKICAgICBbY2hhbmdlIHNldE9iamVj
dDpAKHBsYXRmb3JtRWRpdFR5cGVGb3JXZWJDb3JlRWRpdFR5cGUodHlwZSkpIGZvcktleTpOU0Fj
Y2Vzc2liaWxpdHlUZXh0RWRpdFR5cGVdOwogICAgIGlmIChsZW5ndGggPiBBWFZhbHVlQ2hhbmdl
VHJ1bmNhdGlvbkxlbmd0aCkgewotICAgICAgICBbY2hhbmdlIHNldE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpsZW5ndGhdIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFs
dWVMZW5ndGhdOworICAgICAgICBbY2hhbmdlIHNldE9iamVjdDpAKGxlbmd0aCkgZm9yS2V5Ok5T
QWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZUxlbmd0aF07CiAgICAgICAgIHRleHQgPSBbdGV4
dCBzdWJzdHJpbmdUb0luZGV4OkFYVmFsdWVDaGFuZ2VUcnVuY2F0aW9uTGVuZ3RoXTsKICAgICB9
CiAgICAgW2NoYW5nZSBzZXRPYmplY3Q6dGV4dCBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENo
YW5nZVZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRl
eCAxYWU2YWE5YzU4ZTRmZTQxZjVhZGQ1OGRiNTY1YTUzYTVjMjc5Yzg4Li4xYzZiMTU1OWE2ZjA5
YzA5NmNmMzFjYWIxMzA0NThiZTczZmJmNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbXBvcnQgIlZpc2libGVVbml0cy5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9S
TShNQUMpCiAjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CkBAIC02OTEsNiAr
NjkyLDEzIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc2VhcmNoS2V5KSA/IHNlYXJjaEtleSA6IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFu
eVR5cGU7CiB9CiAKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBtYWtl
VmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5KiwgaWQgYXJyYXlFbGVt
ZW50KQoreworICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNs
YXNzXSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IGFjY2Vz
c2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoYXJyYXlFbGVtZW50KSB9IH07Cit9CisKIEFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFy
Y2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqcGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSkKIHsKICAgICBOU1N0cmluZyAqZGlyZWN0aW9uUGFyYW1ldGVy
ID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhEaXJlY3Rpb24iXTsK
QEAgLTcyOSwxNiArNzM3LDkgQEAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXQKICAgICAKICAgICBp
ZiAoW3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQog
ICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLmFwcGVuZChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
Rm9yU3RyaW5nKHNlYXJjaEtleVBhcmFtZXRlcikpOwotICAgIGVsc2UgaWYgKFtzZWFyY2hLZXlQ
YXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0gICAgICAgIHNpemVf
dCBzZWFyY2hLZXlDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oW3NlYXJjaEtleVBhcmFtZXRl
ciBjb3VudF0pOwotICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc2VhcmNoS2V5Q291bnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNl
YXJjaEtleUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpzZWFyY2hLZXkgPSBb
c2VhcmNoS2V5UGFyYW1ldGVyIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgICAgICBpZiAoW3Nl
YXJjaEtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgICAg
IGNyaXRlcmlhLnNlYXJjaEtleXMudW5jaGVja2VkQXBwZW5kKGFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlGb3JTdHJpbmcoc2VhcmNoS2V5KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCisgICAgZWxz
ZSBpZiAoW3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0p
CisgICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXk+KHNlYXJjaEtleVBhcmFtZXRlcik7CisKICAgICByZXR1cm4gY3JpdGVyaWE7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMzY0MDQzMzhk
NjU3MzM2MGRlMmVhMGU3MjlhYWI2OGQ5ZTU5YmQ2NS4uYjQwM2QzZjZjNTE2ZmI2YmQ2MGZhOWNi
Y2ZhZmM1YTQ0NDE1MmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KQEAgLTc4LDcgKzc4LDcgQEAKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgRU5BQkxFKFRSRUVfREVC
VUdHSU5HKQogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNjQ1LDE0ICs2
NDUsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEs
IEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uPiBhYwogICAgIGlmIChbcmVwbGFjZW1lbnRTdHJp
bmdQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgb3Bl
cmF0aW9uLnJlcGxhY2VtZW50VGV4dCA9IHJlcGxhY2VtZW50U3RyaW5nUGFyYW1ldGVyOwogCi0g
ICAgaWYgKFtzZWFyY2hTdHJpbmdzUGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xh
c3NdXSkgewotICAgICAgICBzaXplX3Qgc2VhcmNoU3RyaW5nc0NvdW50ID0gc3RhdGljX2Nhc3Q8
c2l6ZV90Pihbc2VhcmNoU3RyaW5nc1BhcmFtZXRlciBjb3VudF0pOwotICAgICAgICBjcml0ZXJp
YS5zZWFyY2hTdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VhcmNoU3RyaW5nc0NvdW50
KTsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqc2VhcmNoU3RyaW5nIGluIHNlYXJjaFN0cmluZ3NQ
YXJhbWV0ZXIpIHsKLSAgICAgICAgICAgIGlmIChbc2VhcmNoU3RyaW5nIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3RyaW5n
cy51bmNoZWNrZWRBcHBlbmQoc2VhcmNoU3RyaW5nKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBp
ZiAoW3NlYXJjaFN0cmluZ3NQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11d
KQorICAgICAgICBjcml0ZXJpYS5zZWFyY2hTdHJpbmdzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHNl
YXJjaFN0cmluZ3NQYXJhbWV0ZXIpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGNyaXRl
cmlhLCBvcGVyYXRpb24pOwogfQpAQCAtNjY1LDE0ICs2NTksOCBAQCBzdGF0aWMgQWNjZXNzaWJp
bGl0eVNlYXJjaFRleHRDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhRm9y
UGFyYW1ldAogICAgIE5TU3RyaW5nICpzdGFydCA9IFtwYXJhbXMgb2JqZWN0Rm9yS2V5Ok5TQWNj
ZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb21dOwogICAgIE5TU3RyaW5nICpkaXJlY3Rpb24g
PSBbcGFyYW1zIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9u
XTsKIAotICAgIGlmIChbc2VhcmNoU3RyaW5ncyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNz
XV0pIHsKLSAgICAgICAgc2l6ZV90IHNlYXJjaFN0cmluZ3NDb3VudCA9IHN0YXRpY19jYXN0PHNp
emVfdD4oW3NlYXJjaFN0cmluZ3MgY291bnRdKTsKLSAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3Ry
aW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlYXJjaFN0cmluZ3NDb3VudCk7Ci0gICAgICAg
IGZvciAoTlNTdHJpbmcgKnNlYXJjaFN0cmluZyBpbiBzZWFyY2hTdHJpbmdzKSB7Ci0gICAgICAg
ICAgICBpZiAoW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQot
ICAgICAgICAgICAgICAgIGNyaXRlcmlhLnNlYXJjaFN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHNl
YXJjaFN0cmluZyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKFtzZWFyY2hTdHJpbmdzIGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoU3Ry
aW5ncyA9IG1ha2VWZWN0b3I8U3RyaW5nPihzZWFyY2hTdHJpbmdzKTsKIAogICAgIGlmIChbc3Rh
cnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICBpZiAoW3N0YXJ0
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tQmVnaW5d
KQpAQCAtMTAxOSw5ICsxMDA3LDkgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICAvLyBz
ZXQgc3VwZXIvc3ViIHNjcmlwdGluZwogICAgIFZlcnRpY2FsQWxpZ24gYWxpZ25tZW50ID0gc3R5
bGUudmVydGljYWxBbGlnbigpOwogICAgIGlmIChhbGlnbm1lbnQgPT0gVmVydGljYWxBbGlnbjo6
U3ViKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0Fj
Y2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRo
SW50OigtMSldLCByYW5nZSk7CisgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgQCgtMSks
IHJhbmdlKTsKICAgICBlbHNlIGlmIChhbGlnbm1lbnQgPT0gVmVydGljYWxBbGlnbjo6U3VwZXIp
Ci0gICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
MV0sIHJhbmdlKTsKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlLCBAKDEpLCByYW5nZSk7
CiAgICAgZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3Np
YmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICAKQEAgLTEw
NzQsNyArMTA2Miw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90
ZUxldmVsKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTCiAgICAgaW50IHF1b3RlTGV2
ZWwgPSBvYmotPmJsb2NrcXVvdGVMZXZlbCgpOwogICAgIAogICAgIGlmIChxdW90ZUxldmVsKQot
ICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90
ZUxldmVsQXR0cmlidXRlIHZhbHVlOltOU051bWJlciBudW1iZXJXaXRoSW50OnF1b3RlTGV2ZWxd
IHJhbmdlOnJhbmdlXTsKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOk5TQWNjZXNz
aWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSB2YWx1ZTpAKHF1b3RlTGV2ZWwpIHJhbmdl
OnJhbmdlXTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpO
U0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogfQpA
QCAtMTE1Myw3ICsxMTQxLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFk
aW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmkKICAgICB9CiAgICAg
CiAgICAgaWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0
cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOltOU051bWJlciBudW1iZXJXaXRoSW50OnBh
cmVudEhlYWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOworICAgICAgICBbYXR0clN0cmluZyBhZGRB
dHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgdmFsdWU6QChwYXJlbnRIZWFkaW5nTGV2ZWwpIHJh
bmdlOnJhbmdlXTsKICAgICBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0
ZTpAIkFYSGVhZGluZ0xldmVsIiByYW5nZTpyYW5nZV07CiB9CkBAIC0xMzEyLDE3ICsxMzAwLDE3
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAgICAgLy8gQWxsIGVs
ZW1lbnRzIHNob3VsZCBnZXQgU2hvd01lbnUgYW5kIFNjcm9sbFRvVmlzaWJsZS4KICAgICAvLyBC
dXQgY2VydGFpbiBlYXJsaWVyIFZvaWNlT3ZlciB2ZXJzaW9ucyBkbyBub3Qgc3VwcG9ydCBzY3Jv
bGwgdG8gdmlzaWJsZSwgYW5kIGl0IGNvbmZ1c2VzIHRoZW0gdG8gc2VlIGl0IGluIHRoZSBsaXN0
LgotICAgIHN0YXRpYyBOU0FycmF5ICpkZWZhdWx0RWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgTlNB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9uLCBuaWxdOworICAgIHN0YXRpYyBOU0Fy
cmF5ICpkZWZhdWx0RWxlbWVudEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFj
dGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9uXSByZXRhaW5dOwogCiAg
ICAgLy8gQWN0aW9uIGVsZW1lbnRzIGFsbG93IFByZXNzLgogICAgIC8vIFRoZSBvcmRlciBpcyBp
bXBvcnRhbnQgdG8gVm9pY2VPdmVyLCB3aGljaCBleHBlY3RzIHRoZSAnZGVmYXVsdCcgYWN0aW9u
IHRvIGJlIHRoZSBmaXJzdCBhY3Rpb24uIEluIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCBhY3Rpb24g
c2hvdWxkIGJlIHByZXNzLgotICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25FbGVtZW50QWN0aW9u
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVByZXNz
QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Ny
b2xsVG9WaXNpYmxlQWN0aW9uLCBuaWxdOworICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25FbGVt
ZW50QWN0aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9uXSBy
ZXRhaW5dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2FuY2VsLgog
ICAgIHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVsZW1lbnRB
Y3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0aW9uXSBy
ZXRhaW5dOwogCiAgICAgLy8gU2xpZGVyIGVsZW1lbnRzIGFsbG93IEluY3JlbWVudC9EZWNyZW1l
bnQuCi0gICAgc3RhdGljIE5TQXJyYXkgKnNsaWRlckFjdGlvbnMgPSBbW2RlZmF1bHRFbGVtZW50
QWN0aW9ucyBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOk5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5RGVj
cmVtZW50QWN0aW9uLCBuaWxdXSByZXRhaW5dOworICAgIHN0YXRpYyBOU0FycmF5ICpzbGlkZXJB
Y3Rpb25zID0gW1tkZWZhdWx0RWxlbWVudEFjdGlvbnMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9t
QXJyYXk6QFtOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eURl
Y3JlbWVudEFjdGlvbl1dIHJldGFpbl07CiAKICAgICBOU0FycmF5ICphY3Rpb25zOwogICAgIGlm
IChiYWNraW5nT2JqZWN0LT5zdXBwb3J0c1ByZXNzQWN0aW9uKCkpCkBAIC0xODg4LDE0ICsxODc2
LDYgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKICAgICB9CiB9CiAKLXN0YXRpYyBOU011dGFi
bGVBcnJheSAqY29udmVydFN0cmluZ3NUb05TQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZl
Y3RvcikKLXsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6dmVjdG9yLnNpemUoKV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdHJp
bmcgOiB2ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6c3RyaW5nXTsKLSAgICByZXR1
cm4gYXJyYXk7Ci19Ci0KIC0gKGlkKXRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbgogewogICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNlbGVj
dGlvbigpOwpAQCAtMjQwMiw5ICsyMzgyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WExvYWRlZCJdKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpi
YWNraW5nT2JqZWN0LT5pc0xvYWRlZCgpXTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIkFYTGF5b3V0Q291bnQiXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5sYXlvdXRDb3VudCgpXTsKKyAgICAg
ICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmxheW91dENvdW50KCkpOwogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQ
cm9ncmVzc0F0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6YmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCldOworICAg
ICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNz
KCkpOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5wcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0
cmlidXRlXSkKQEAgLTI0MTgsNyArMjM5OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICAgICAgaW50IGxlbmd0aCA9IGJhY2tpbmdPYmplY3QtPnRleHRM
ZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25l
ZEludDpsZW5ndGhdOworICAgICAgICAgICAgcmV0dXJuIEAobGVuZ3RoKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZFRleHRBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRU
ZXh0ID0gYmFja2luZ09iamVjdC0+c2VsZWN0ZWRUZXh0KCk7CkBAIC0yNDQ3LDcgKzI0MjcsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmIChs
aW5lTnVtYmVyIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZU51bWJlcl07CisgICAgICAgICAg
ICByZXR1cm4gQChsaW5lTnVtYmVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjUwNiwxNiAr
MjQ4NiwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
aWYgKGJhY2tpbmdPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlk
ZXJUaHVtYikKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmJh
Y2tpbmdPYmplY3QtPnBhcmVudE9iamVjdCgpLT52YWx1ZUZvclJhbmdlKCldOwogICAgICAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNIZWFkaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6YmFja2luZ09iamVjdC0+aGVhZGluZ0xldmVsKCldOworICAgICAg
ICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aGVhZGluZ0xldmVsKCkpOwogCiAgICAgICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IGJhY2tpbmdPYmplY3Qt
PmlzTWVudUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1N3aXRjaCgpIHx8IGJhY2tpbmdPYmpl
Y3QtPmlzVG9nZ2xlQnV0dG9uKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYmFja2luZ09iamVj
dC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSkgewogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5QnV0dG9uU3RhdGU6Ok9mZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6MF07CisgICAgICAgICAgICAgICAgcmV0dXJuIEAoMCk7CiAgICAgICAgICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T246Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdOworICAgICAgICAgICAgICAgIHJldHVybiBA
KDEpOwogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkOgot
ICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQCgyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0y
NTM1LDcgKzI1MTUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYkl0ZW0oKSkKLSAgICAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5pc1Nl
bGVjdGVkKCldOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aXNTZWxlY3Rl
ZCgpKTsKIAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNDb2xvcldlbGwoKSkgewogICAg
ICAgICAgICAgaW50IHIsIGcsIGI7CkBAIC0yNjkxLDcgKzI2NzEsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxl
Q29sdW1uKCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpiYWNraW5nT2JqZWN0LT5jb2x1bW5JbmRleCgpXTsK
KyAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmNvbHVtbkluZGV4KCkpOwogCiAg
ICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwg
dGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93CiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0K
QEAgLTI3NDIsNyArMjcyMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogCiAgICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5zLCBidXQgTWFj
IEFYIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0aGUgbGVhc3Qu
CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5Q29sdW1uc0F0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgICAgICAgICAgcmV0dXJuIEBbXTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXSkgewpAQCAt
Mjc2MCwxMyArMjc0MCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJvd3NDb3B5LnNpemUoKTsKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgY291bnQ7ICsraykKICAgICAgICAgICAgICAgICBpZiAo
cm93c0NvcHlba10tPndyYXBwZXIoKSA9PSBzZWxmKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprXTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEAoayk7CiAKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJhY2tpbmdPYmplY3QtPnJvd0luZGV4KCldOwor
ICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cm93SW5kZXgoKSk7CiAgICAgfQog
CiAgICAgLy8gVGhlIHJvd3MgdGhhdCBhcmUgY29uc2lkZXJlZCBpbnNpZGUgdGhpcyByb3cuCkBA
IC0yODAxLDcgKzI3ODEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgaW50IGxldmVsID0gYmFja2luZ09iamVjdC0+aGllcmFyY2hpY2FsTGV2ZWwoKTsK
ICAgICAgICAgaWYgKGxldmVsID4gMCkKICAgICAgICAgICAgIGxldmVsIC09IDE7Ci0gICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsZXZlbF07CisgICAgICAgIHJldHVybiBA
KGxldmVsKTsKICAgICB9CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5pc0V4cGFuZGVkKCldOwpAQCAtMjgz
Miw5ICsyODEyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
fQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDpiYWNraW5nT2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07Cisg
ICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmJsb2NrcXVvdGVMZXZlbCgpKTsKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUYWJsZUxldmVsIl0pCi0gICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT50YWJsZUxl
dmVsKCldOworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT50YWJsZUxldmVsKCkpOwog
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7CkBAIC0yODUx
LDcgKzI4MzEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZXJ2ZXNB
c1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV0gJiYgYmFja2luZ09iamVjdC0+aXNNZW51QnV0
dG9uKCkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdWlFbGVtZW50ID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKmJhY2tpbmdPYmplY3QpLm1lbnVGb3JNZW51
QnV0dG9uKCk7CiAgICAgICAgIGlmICh1aUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OnVpRWxlbWVudC0+d3JhcHBlcigpXTsKKyAgICAgICAgICAg
IHJldHVybiBAW3VpRWxlbWVudC0+d3JhcHBlcigpXTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0
cmlidXRlXSkgewpAQCAtMjkyMSwxNyArMjkwMSwxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFQb3NJblNldEF0dHJpYnV0ZV0pCi0gICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5nT2JqZWN0LT5wb3NJblNldCgpXTsK
KyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cG9zSW5TZXQoKSk7CiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBU2V0U2l6ZUF0
dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpiYWNraW5n
T2JqZWN0LT5zZXRTaXplKCldOworICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5zZXRT
aXplKCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlHcmFiYmVkQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5pc0FSSUFHcmFiYmVkKCldOwogCi0gICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0
dHJpYnV0ZV0pIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZHJvcEVmZmVjdHMgPSBiYWNraW5n
T2JqZWN0LT5kZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKTsKLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRTdHJpbmdzVG9OU0FycmF5KGRyb3BFZmZlY3RzKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0
ZV0pCisgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGJhY2tpbmdPYmplY3QtPmRldGVybWlu
ZUFSSUFEcm9wRWZmZWN0cygpKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmli
dXRlXSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnBsYWNlaG9sZGVyVmFsdWUoKTsK
QEAgLTMwMTYsNyArMjk5NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RE9NQ2xhc3NMaXN0QXR0cmlidXRlXSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xp
c3Q7CiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmNsYXNzTGlzdChjbGFzc0xpc3QpOwotICAgICAg
ICByZXR1cm4gY29udmVydFN0cmluZ3NUb05TQXJyYXkoY2xhc3NMaXN0KTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZU5TQXJyYXkoY2xhc3NMaXN0KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAg
IC8vIFRoaXMgYWxsb3dzIHVzIHRvIGNvbm5lY3QgdG8gYSBwbHVnaW4gdGhhdCBjcmVhdGVzIGEg
c2hhZG93IG5vZGUgZm9yIGVkaXRpbmcgKGxpa2UgUERGcykuCkBAIC00MTAxLDcgKzQwNzksNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3Byb3RlY3RlZFNlbGYgdmlzaWJsZVBvc2l0aW9uRm9y
VGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKICAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0
LT5saW5lRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7CiAgICAgICAgIH0pOwotICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cmVzdWx0XTsKKyAgICAgICAgcmV0dXJuIEAocmVz
dWx0KTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRl
eHRNYXJrZXJSYW5nZUZvckxpbmUiXSkgewpAQCAtNDMyOSw3ICs0MzA3LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIH0pOwogICAgICAgICBpZiAobGVu
Z3RoIDwgMCkKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpsZW5ndGhdOworICAgICAgICByZXR1cm4gQChsZW5ndGgpOwogICAg
IH0KIAogICAgIC8vIFVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSAoc28gZmFyKS4KQEAgLTQz
NzksNyArNDM1Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5kb0FYTGluZUZvckluZGV4
KFtudW1iZXIgaW50VmFsdWVdKTsKICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoVW5zaWduZWRJbnQ6bGluZU51bWJlcl07CisgICAgICAgICAgICByZXR1cm4gQChs
aW5lTnVtYmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzogKE5TU3RyaW5nICopa0FYUmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpp
bmRleCBkZTNhNDNkZWYwYjk3OGMwNzgxM2Q4MDA0NzJlOWY5OWFlZjc4NGNlLi5lOTA2MjIxY2E5
OGMzZGFmYzczMzMwZTU4MmE0ZDFmNjZkYmY4OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC01ODYsNyArNTg2LDcgQEAgKyAoaWQpX2Nv
bnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOihKU0M6OkpTVmFsdWUpdmFsdWUgb3JpZ2luUm9vdE9iamVj
dDooUm9vdE9iamVjdCoKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUocm9v
dE9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hc051bWJlcigp
XTsKKyAgICAgICAgcmV0dXJuIEAodmFsdWUuYXNOdW1iZXIoKSk7CiAKICAgICBpZiAodmFsdWUu
aXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dmFs
dWUuYXNCb29sZWFuKCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQppbmRleCA1MDcyZDZiMzJhYzc1
ZDcxY2I4ZmJlNTM4Y2U4N2UxNTYzOTcyNmEzLi5lNThlYWVkZWMwMDdlNGI5OWM2ODI3MTQ3MjVk
ZTFhMjVkNTA5NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpAQCAtMjgsNyArMjgsOCBAQAog
CiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCiAKLSNpbXBvcnQgPFdlYkNvcmUvRmxv
YXRSZWN0Lmg+CisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oPgogCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hl
Y2tlci5oPgpAQCAtNDcsMTIgKzQ4LDcgQEAgdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGUKIAogVmVj
dG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JD
b250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCiB7Ci0gICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0
QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KGNvbnRleHQpOwotICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsKLSAgICBh
bHRlcm5hdGl2ZVN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0ZXh0QWx0ZXJuYXRpdmVz
LmFsdGVybmF0aXZlU3RyaW5ncy5jb3VudCk7Ci0gICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGlu
IHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzKQotICAgICAgICBhbHRlcm5hdGl2
ZVN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7Ci0gICAgcmV0dXJuIGFsdGVybmF0aXZl
U3RyaW5nczsKKyAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KG1fY29udGV4dENvbnRyb2xs
ZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KS5hbHRlcm5hdGl2ZVN0cmluZ3MpOwog
fQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGE1NDNhYzJkMWFl
MmFjMzhmOGNkMjdmYjI1N2ZlMmQxNjI0MGRjZWYuLjRmNDYzNTI4MGQ2NDU4MTQzOWFmN2NiNTJh
ZTYxNWM4ZTEzM2Y1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KQEAgLTUzOSw3ICs1MzksNyBAQCBzdGF0aWMgTlNQYXJhZ3JhcGhTdHlsZSAq
ZGVmYXVsdFBhcmFncmFwaFN0eWxlKCkKICAgICBpZiAoIWRlZmF1bHRQYXJhZ3JhcGhTdHlsZSkg
ewogICAgICAgICBkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBbW1BsYXRmb3JtTlNQYXJhZ3JhcGhT
dHlsZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XTsKICAgICAgICAgW2RlZmF1
bHRQYXJhZ3JhcGhTdHlsZSBzZXREZWZhdWx0VGFiSW50ZXJ2YWw6MzZdOwotICAgICAgICBbZGVm
YXVsdFBhcmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOltOU0FycmF5IGFycmF5XV07CisgICAgICAg
IFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUgc2V0VGFiU3RvcHM6QFtdXTsKICAgICB9CiAgICAgcmV0
dXJuIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZTsKIH0KQEAgLTEwMjcsNyArMTAyNyw3IEBAIE5TRGlj
dGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogICAgIGZsb2F0IHN0cm9rZVdpZHRoID0gMC4wOwogICAgIGlmIChfY2Fj
aGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZVdpZHRoLCBzdHJva2VXaWR0aCkpIHsKICAgICAgICAgZmxvYXQgdGV4dFN0cm9r
ZVdpZHRoID0gc3Ryb2tlV2lkdGggLyAoW2ZvbnQgcG9pbnRTaXplXSAqIDAuMDEpOwotICAgICAg
ICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRleHRTdHJva2VX
aWR0aF0gZm9yS2V5Ok5TU3Ryb2tlV2lkdGhBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW2F0dHJz
IHNldE9iamVjdDpAKHRleHRTdHJva2VXaWR0aCkgZm9yS2V5Ok5TU3Ryb2tlV2lkdGhBdHRyaWJ1
dGVOYW1lXTsKICAgICB9CiAgICAgaWYgKHN0cm9rZUNvbG9yKQogICAgICAgICBbYXR0cnMgc2V0
T2JqZWN0OnN0cm9rZUNvbG9yIGZvcktleTpOU1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZV07CkBA
IC0xMDQyLDcgKzEwNDIsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVk
QXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIGlmIChV
SUZsb2F0SXNaZXJvKGtlcm5WYWwpKQogICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6
QDAuMCBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07IC8vIGF1dG8gYW5kIG5vcm1hbCwgdGhl
IG90aGVyIHBvc3NpYmxlIHZhbHVlcywgYXJlIGJvdGggImtlcm5pbmcgZW5hYmxlZCIKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOmtlcm5WYWxdIGZvcktleTpOU0tlcm5BdHRyaWJ1dGVOYW1lXTsKKyAg
ICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAoa2VyblZhbCkgZm9yS2V5Ok5TS2VybkF0
dHJpYnV0ZU5hbWVdOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBO
U0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCkKIAogICAgIGZsb2F0IGJhc2VsaW5lT2Zmc2V0ID0gMC4wOwogICAg
IGlmIChfY2FjaGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbiwgYmFzZWxpbmVPZmZzZXQpKQotICAgICAgICBbYXR0cnMgc2V0T2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmJhc2VsaW5lT2Zmc2V0XSBmb3JLZXk6TlNC
YXNlbGluZU9mZnNldEF0dHJpYnV0ZU5hbWVdOworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAo
YmFzZWxpbmVPZmZzZXQpIGZvcktleTpOU0Jhc2VsaW5lT2Zmc2V0QXR0cmlidXRlTmFtZV07CiAK
ICAgICBTdHJpbmcgdGV4dFNoYWRvdyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVs
ZW1lbnQsIENTU1Byb3BlcnR5VGV4dFNoYWRvdyk7CiAgICAgaWYgKHRleHRTaGFkb3cubGVuZ3Ro
KCkgPiA0KSB7CkBAIC0xNTU2LDcgKzE1NTYsNyBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9j
ZXNzTWV0YUVsZW1lbnRXaXRoTmFtZShOU1N0cmluZyAqbmFtZSwgTlNTdHJpbmcgKmNvbnRlbgog
ICAgICAgICBpZiAodmVyc2lvbk51bWJlciA+IDAuMCkgewogICAgICAgICAgICAgLy8gPz8/IHRo
aXMgc2hvdWxkIGJlIGtleWVkIG9mZiBvZiB2ZXJzaW9uIG51bWJlciBpbiBmdXR1cmUKICAgICAg
ICAgICAgIFtfZG9jdW1lbnRBdHRycyByZW1vdmVPYmplY3RGb3JLZXk6TlNDb252ZXJ0ZWREb2N1
bWVudEF0dHJpYnV0ZV07Ci0gICAgICAgICAgICBbX2RvY3VtZW50QXR0cnMgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnZlcnNpb25OdW1iZXJdIGZvcktleTpOU0NvY29hVmVy
c2lvbkRvY3VtZW50QXR0cmlidXRlXTsKKyAgICAgICAgICAgIFtfZG9jdW1lbnRBdHRycyBzZXRP
YmplY3Q6QCh2ZXJzaW9uTnVtYmVyKSBmb3JLZXk6TlNDb2NvYVZlcnNpb25Eb2N1bWVudEF0dHJp
YnV0ZV07CiAgICAgICAgIH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIH0gZWxzZSBp
ZiAoTlNPcmRlcmVkU2FtZSA9PSBbQCJHZW5lcmF0b3IiIGNvbXBhcmU6bmFtZSBvcHRpb25zOk5T
Q2FzZUluc2Vuc2l0aXZlU2VhcmNoXSkgewpAQCAtMTY3Miw4ICsxNjcyLDggQEAgdm9pZCBIVE1M
Q29udmVydGVyOjpfYWRkVGFibGVGb3JFbGVtZW50KEVsZW1lbnQgKnRhYmxlRWxlbWVudCkKICAg
ICB9CiAgICAgCiAgICAgW190ZXh0VGFibGVzIGFkZE9iamVjdDp0YWJsZS5nZXQoKV07Ci0gICAg
W190ZXh0VGFibGVTcGFjaW5ncyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
Y2VsbFNwYWNpbmdWYWxdXTsKLSAgICBbX3RleHRUYWJsZVBhZGRpbmdzIGFkZE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTpjZWxsUGFkZGluZ1ZhbF1dOworICAgIFtfdGV4dFRhYmxl
U3BhY2luZ3MgYWRkT2JqZWN0OkAoY2VsbFNwYWNpbmdWYWwpXTsKKyAgICBbX3RleHRUYWJsZVBh
ZGRpbmdzIGFkZE9iamVjdDpAKGNlbGxQYWRkaW5nVmFsKV07CiAgICAgW190ZXh0VGFibGVSb3dz
IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6MF1dOwogICAgIFtfdGV4dFRh
YmxlUm93QXJyYXlzIGFkZE9iamVjdDpbTlNNdXRhYmxlQXJyYXkgYXJyYXldXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggYzBmMzFjMmViYzlkZGVlOWRjOTk0OGNhZjY4
MDQzZTkxZmQ5MDNiNC4uYTIwN2NiMDliODA2MWU3ZDE5NDk5NTQ1ZmNkMTVjYWZmZDNkNDMxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTczMCw3ICs3MzAsNyBAQCBOU0Fy
cmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogCiAgICAg
Ly8gVGhlcmUgYXJlIG5vIHBocmFzZXMgd2l0aCBhbHRlcm5hdGl2ZXMsIHNvIHRoZXJlIGlzIGp1
c3Qgb25lIGludGVycHJldGF0aW9uLgogICAgIGlmIChtYXJrZXJzSW5Sb290LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpwbGFpblRleHQocmFuZ2VP
ZlJvb3RDb250ZW50cyldOworICAgICAgICByZXR1cm4gQFtwbGFpblRleHQocmFuZ2VPZlJvb3RD
b250ZW50cyldOwogCiAgICAgLy8gVGhlIG51bWJlciBvZiBpbnRlcnByZXRhdGlvbnMgd2lsbCBi
ZSBpMSAqIGkyICogLi4uICogaU4sIHdoZXJlIGlYIGlzIHRoZSBudW1iZXIgb2YgaW50ZXJwcmV0
YXRpb25zIGZvciB0aGUgWHRoIHBocmFzZSB3aXRoIGFsdGVybmF0aXZlcy4KICAgICBzaXplX3Qg
aW50ZXJwcmV0YXRpb25zQ291bnQgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCmluZGV4IGE4N2NmNWM0ZThmODU2
ZGY3Yzc5MDAxMTQzZjNjNzQ0YzdmZjgwNmEuLjJiM2ZlMDU1ODRmOTY0ZTA5OTc2ODQ2YWExMjk4
MDc2ZWE0YmUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01J
TUVUeXBlUmVnaXN0cnlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjQsMTAgKzI0LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKIAotI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmg+CisjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oPgorI2ltcG9ydCA8d3RmL2Nv
Y29hL1ZlY3RvckNvY29hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMTYgKzM5
LDcgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogCiBWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIE5T
QXJyYXkgKnN0cmluZ3NBcnJheSA9IFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBp
bmdzXSBleHRlbnNpb25zRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZV07Ci0gICAgVmVjdG9y
PFN0cmluZz4gc3RyaW5nc1ZlY3RvciA9IFZlY3RvcjxTdHJpbmc+KCk7Ci0gICAgdW5zaWduZWQg
Y291bnQgPSBbc3RyaW5nc0FycmF5IGNvdW50XTsKLSAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAg
ICAgIE5TRW51bWVyYXRvciogZW51bWVyYXRvciA9IFtzdHJpbmdzQXJyYXkgb2JqZWN0RW51bWVy
YXRvcl07Ci0gICAgICAgIE5TU3RyaW5nKiBzdHJpbmc7Ci0gICAgICAgIHdoaWxlICgoc3RyaW5n
ID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF0pICE9IG5pbCkKLSAgICAgICAgICAgIHN0cmluZ3NW
ZWN0b3IuYXBwZW5kKHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiBzdHJpbmdzVmVjdG9yOwor
ICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmluZz4oW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hh
cmVkTWFwcGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTp0eXBlXSk7CiB9CiAKIFN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50LmgKaW5kZXggNDU1YmIyNTFhMjRkNGU2NmM3NTU5ZjAyMGE5ZjM5ZjUwM2Q3Y2ZmZi4uNzVj
OTI4ZGE3YWEzNzQ2NmIxNDZjMWM3OGVjMTAwYjY1MGNmMzE5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNp
bmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNpZiBQ
TEFURk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNH
ZW9tZXRyeS5oPgotI2VuZGlmCi0KICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BvaW50
IENHUG9pbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRSZWN0LmgKaW5kZXggMzMxNzBlYmM0NTZiZTg0NmIzMTdhYzEzNGMzMTUwNDVkNzY1ZTNmYy4u
MWI2ZDQ5M2U5MjZiZmVhYWE5MjllMjY0MjhiY2QwN2FiYTI5ZThjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKQEAgLTI3OSw1ICsyNzksOCBAQCBX
RUJDT1JFX0VYUE9SVCBJbnRSZWN0IHJvdW5kZWRJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwog
CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKLX0KKyNpZmRlZiBfX09CSkNfXworV0VCQ09SRV9F
WFBPUlQgaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IEZsb2F0UmVjdCYpOworI2VuZGlmCiAK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCmluZGV4IGQz
NDg4MGEyYjI1NDdhMjgwY2IwZDdkMmY5NzMyMjUyM2RmYTZkZTIuLjE2YzkyMzYxNmNkNWRhNmM0
ODgyYmM3M2U2OWE3ZjI5Y2UxMDdjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UG9pbnQuaApAQCAtMjgsMTUgKzI4LDEwIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgPGNtYXRoPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JK
Q19fCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KLSNlbmRpZgotCiAjaWYgVVNF
KENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dQb2ludCBDR1BvaW50OwogI2VuZGlmCiAKLQogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmIE9TKERBUldJTikKICNpZmRlZiBOU0dFT01FVFJZX1RZ
UEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdC5oCmluZGV4IDEyMmRkNTA1M2IwMjFiNWUxZTM5YzAwODNkZTFlMjQwYjU5
OGQ1ZTQuLjAzYzVhYWY0OGIwZmMzODJjMWQ5MGEwZGFiMjk2ZGNiZjAxZDFjYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKQEAgLTI1MCw1ICsyNTAsOCBA
QCBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNSZWN0Jik7
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBJbnRSZWN0Jik7CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNpZmRl
ZiBfX09CSkNfXworV0VCQ09SRV9FWFBPUlQgaWQgbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IElu
dFJlY3QmKTsKKyNlbmRpZgogCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggZWU3YzZjMGFkZmQ3ZDNkZWJkYmRj
NWRiOTVkZGI1MWQzMWI4MDk1NS4uNzU2ODM0MWM3NzZkMmUwMDZiYWQwYzBhYzQzZjg1YjZhNzcw
OWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaApAQCAt
MjksMTAgKzI5LDYgQEAKICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKLSNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KLSNp
bXBvcnQgPEZvdW5kYXRpb24vTlNHZW9tZXRyeS5oPgotI2VuZGlmCi0KICNpZiBVU0UoQ0cpCiB0
eXBlZGVmIHN0cnVjdCBDR1NpemUgQ0dTaXplOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggODNiNjQyMTcyZTE5ZTY3YmU5
ZWFiZDlhNmY5OWFiYzM0OTA0OGYyMC4uOGY4NDdiODI3MzMwODZlODJiMmY0ZWYwNTVjMzBhMjUy
Y2ZlOGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
SXRlbS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvTGFuZ3VhZ2Uu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQpA
QCAtMTMyLDEwICsxMzMsOCBAQCB2b2lkIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRh
dGVPcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGlmICghbV9z
aG91bGRTZWxlY3RPcHRpb25BdXRvbWF0aWNhbGx5KQogICAgICAgICByZXR1cm47CiAKLSAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zTGFuZ3VhZ2VzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKS5z
aXplKCldKTsKLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogdXNlclByZWZlcnJlZExhbmd1YWdl
cygpKQotICAgICAgICBbbnNMYW5ndWFnZXMgYWRkT2JqZWN0OihOU1N0cmluZyopbGFuZ3VhZ2Vd
OwotICAgIE5TQXJyYXkqIGZpbHRlcmVkT3B0aW9ucyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rp
b25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OlttX21lZGlhU2Vs
ZWN0aW9uR3JvdXAgb3B0aW9uc10gZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJl
ZExhbmd1YWdlczpuc0xhbmd1YWdlcy5nZXQoKV07CisgICAgTlNBcnJheSogZmlsdGVyZWRPcHRp
b25zID0gW1BBTDo6Z2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlv
bk9wdGlvbnNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXQorICAgICAg
ICBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOmNyZWF0ZU5T
QXJyYXkodXNlclByZWZlcnJlZExhbmd1YWdlcygpKS5nZXQoKV07CiAKICAgICBpZiAoIVtmaWx0
ZXJlZE9wdGlvbnMgY291bnRdICYmIGNoYXJhY3RlcmlzdGljcy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTE0NCwxMSArMTQzLDcgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAg
ICBpZiAoIVtmaWx0ZXJlZE9wdGlvbnMgY291bnRdKQogICAgICAgICBmaWx0ZXJlZE9wdGlvbnMg
PSBbbV9tZWRpYVNlbGVjdGlvbkdyb3VwIG9wdGlvbnNdOwogCi0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBuc0NoYXJhY3RlcmlzdGljcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjaGFyYWN0ZXJpc3RpY3Muc2l6ZSgpXSk7Ci0gICAgZm9y
IChhdXRvJiBjaGFyYWN0ZXJpc3RpYyA6IGNoYXJhY3RlcmlzdGljcykKLSAgICAgICAgW25zQ2hh
cmFjdGVyaXN0aWNzIGFkZE9iamVjdDooTlNTdHJpbmcgKiljaGFyYWN0ZXJpc3RpY107Ci0KLSAg
ICBOU0FycmF5KiBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyA9IFtQQUw6OmdldEFWTWVkaWFT
ZWxlY3Rpb25Hcm91cENsYXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRl
cmVkT3B0aW9ucyB3aXRoTWVkaWFDaGFyYWN0ZXJpc3RpY3M6bnNDaGFyYWN0ZXJpc3RpY3MuZ2V0
KCldOworICAgIE5TQXJyYXkqIG9wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzID0gW1BBTDo6Z2V0
QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJy
YXk6ZmlsdGVyZWRPcHRpb25zIHdpdGhNZWRpYUNoYXJhY3RlcmlzdGljczpjcmVhdGVOU0FycmF5
KGNoYXJhY3RlcmlzdGljcykuZ2V0KCldOwogICAgIGlmIChvcHRpb25zV2l0aENoYXJhY3Rlcmlz
dGljcyAmJiBbb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgY291bnRdKQogICAgICAgICBmaWx0
ZXJlZE9wdGlvbnMgPSBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGljczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KaW5kZXggNWE2MmExZTQ2N2Q4NTY2ZDJiNmIzNDIyZDY0Yjk0ODI0ZDljNjhkMy4u
OGE3NzE2MmQ2MzAzZWVmZjMzNzY2ODBlMzdkYTk0MGExMTk2Mzc5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC02OTcsNyArNjk3LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKIH0KIAogI2lmIEVO
QUJMRShBVkZfQ0FQVElPTlMpCi1zdGF0aWMgY29uc3QgTlNBcnJheSogbWVkaWFEZXNjcmlwdGlv
bkZvcktpbmQoUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCBraW5kKQorCitzdGF0aWMgY29u
c3QgTlNBcnJheSAqbWVkaWFEZXNjcmlwdGlvbkZvcktpbmQoUGxhdGZvcm1UZXh0VHJhY2s6OlRy
YWNrS2luZCBraW5kKQogewogICAgIHN0YXRpYyBib29sIG1hbnVhbFNlbGVjdGlvbk1vZGUgPSBN
VEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKSAmJiBNVEVuYWJsZUNhcHRpb24yMDE1QmVo
YXZpb3JQdHIoKSgpOwogICAgIGlmIChtYW51YWxTZWxlY3Rpb25Nb2RlKQpAQCAtNzA1LDE4ICs3
MDYsMTggQEAgc3RhdGljIGNvbnN0IE5TQXJyYXkqIG1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKFBs
YXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCkKIAogICAgIC8vIEZJWE1FOiBNYXRjaCB0
aGVzZSB0byBjb3JyZWN0IHR5cGVzOgogICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNr
OjpDYXB0aW9uKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZN
ZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5
LCBuaWxdOworICAgICAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmli
ZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IF07CiAKICAgICBpZiAoa2luZCA9PSBQbGF0
Zm9ybVRleHRUcmFjazo6U3VidGl0bGUpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0Zv
ckFjY2Vzc2liaWxpdHksIG5pbF07CisgICAgICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgXTsKIAogICAgIGlm
IChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNrOjpEZXNjcmlwdGlvbikKLSAgICAgICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3Jp
YmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVz
Y3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIG5pbF07CisgICAgICAgIHJldHVy
biBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vz
c2liaWxpdHksIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JB
Y2Nlc3NpYmlsaXR5IF07CiAKICAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6Rm9y
Y2VkKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNo
YXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBuaWxdOworICAgICAgICBy
ZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
IF07CiAKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJh
Y3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOwor
ICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxv
Z0ZvckFjY2Vzc2liaWxpdHkgXTsKIH0KICAgICAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCkBAIC03NTQsOCArNzU1LDgg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRl
eHRUcmFja1N0YXRlKCkKICAgICAgICAgfQogICAgIH0KIH0KLSNlbmRpZgogCisjZW5kaWYKIAog
c3RhdGljIE5TVVJMICpjYW5vbmljYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CkBAIC03ODUsNyAr
Nzg2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVB
VkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IG9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0pOyAgICAKIAotICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRSZW1vdGVSZWZlcmVu
Y2VUb0xvY2FsIHwgQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkTG9jYWxSZWZlcmVu
Y2VUb1JlbW90ZV0gZm9yS2V5OkFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXldOwor
ICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpAKEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlv
bkZvcmJpZFJlbW90ZVJlZmVyZW5jZVRvTG9jYWwgfCBBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rp
b25Gb3JiaWRMb2NhbFJlZmVyZW5jZVRvUmVtb3RlKSBmb3JLZXk6QVZVUkxBc3NldFJlZmVyZW5j
ZVJlc3RyaWN0aW9uc0tleV07CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
aGVhZGVyRmllbGRzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKIApAQCAtOTg5LDcgKzk5MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCkKIAogICAgIGNvbnN0IE5TVGltZUludGVydmFs
IGF2UGxheWVyT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAotICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBzdWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2Vi
VlRUXSwgbmlsXSk7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IHN1YnR5cGVzID0gYWRvcHROUyhb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAKGtDTVN1YnRpdGxlRm9ybWF0VHlwZV9X
ZWJWVFQpLCBuaWxdKTsKICAgICBtX2xlZ2libGVPdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVN1YnR5cGVz
Rm9yTmF0aXZlUmVwcmVzZW50YXRpb246c3VidHlwZXMuZ2V0KCldKTsKICAgICBbbV9sZWdpYmxl
T3V0cHV0LmdldCgpIHNldFN1cHByZXNzZXNQbGF5ZXJSZW5kZXJpbmc6WUVTXTsKIApAQCAtMTAy
OCw3ICsxMDI5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
aGVja1BsYXlhYmlsaXR5KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBhdXRv
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogCi0gICAgW21fYXZBc3NldC5nZXQoKSBs
b2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6
QCJwbGF5YWJsZSIsIEAidHJhY2tzIiwgbmlsXSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgIFtt
X2F2QXNzZXQuZ2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AicGxheWFi
bGUiLCBAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6QXNzZXRQbGF5YWJpbGl0eUtub3du
KTsKQEAgLTIxNzEsNyArMjE3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogI2lmIFVTRShWSURFT1RPT0xCT1gpCiAgICAg
TlNEaWN0aW9uYXJ5KiBhdHRyaWJ1dGVzID0gbmlsOwogI2Vsc2UKLSAgICBOU0RpY3Rpb25hcnkq
IGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JB
XSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF07CisgICAgTlNEaWN0aW9u
YXJ5KiBhdHRyaWJ1dGVzID0gQHsga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAo
a0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKICNlbmRpZgogICAgIG1fdmlkZW9PdXRwdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgpIGlu
aXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOmF0dHJpYnV0ZXNdKTsKICAgICBBU1NFUlQobV92
aWRlb091dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5k
ZXggZDk3Y2NiM2JkYWJhZTUzMzU3ZDUyODE5Yzc4ODIxNzE5ZjE1ZWI3Zi4uNDgxNmIwMDRmMTQ4
MTgwZmI5MDE1NzkxOWNlYmU3YjVlZGRmNTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYS5tbQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdLRXhwbGljaXRCZWdpblRpbWVGbGFnID0gQCJX
S1BsYXRmb3JtQ0FBbmltYXRpb25FeHBsaWNpdEJlZ2luVGltZUZsYWciOworY29uc3RleHByIE5T
U3RyaW5nICogY29uc3QgV0tFeHBsaWNpdEJlZ2luVGltZUZsYWcgPSBAIldLUGxhdGZvcm1DQUFu
aW1hdGlvbkV4cGxpY2l0QmVnaW5UaW1lRmxhZyI7CiAKIGJvb2wgaGFzRXhwbGljaXRCZWdpblRp
bWUoQ0FBbmltYXRpb24gKmFuaW1hdGlvbikKIHsKQEAgLTM2Miw4ICszNjIsNyBAQCB2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0QWRkaXRpdmUoYm9vbCB2YWx1ZSkKIAogUGxhdGZv
cm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
Ojp2YWx1ZUZ1bmN0aW9uKCkgY29uc3QKIHsKLSAgICBDQVZhbHVlRnVuY3Rpb24qIHZmID0gW21f
YW5pbWF0aW9uIHZhbHVlRnVuY3Rpb25dOwotICAgIHJldHVybiBmcm9tQ0FWYWx1ZUZ1bmN0aW9u
VHlwZShbdmYgbmFtZV0pOworICAgIHJldHVybiBmcm9tQ0FWYWx1ZUZ1bmN0aW9uVHlwZShbW21f
YW5pbWF0aW9uIHZhbHVlRnVuY3Rpb25dIG5hbWVdKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OnNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUgdmFsdWUpCkBA
IC0zNzUsMTQgKzM3NCwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJv
bVZhbHVlKGZsb2F0IHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1h
dGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVl
XV07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQo
KSkgc2V0RnJvbVZhbHVlOkAodmFsdWUpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OnNldEZyb21WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7
CiAgICAgaWYgKCFpc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIFtz
dGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21W
YWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlXV07CiB9CiAKQEAgLTM5
MCwzMiArMzg4LDE5IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9tVmFs
dWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRp
b24oKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZS54KCldLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS55KCldLAot
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS56KCldLAotICAgICAgICBu
aWxdOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0
KCkpIHNldEZyb21WYWx1ZTphcnJheV07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRp
b24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOkBbIEAodmFsdWUueCgpKSwgQCh2
YWx1ZS55KCkpLCBAKHZhbHVlLnooKSkgXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpzZXRGcm9tVmFsdWUoY29uc3QgQ29sb3ImIHZhbHVlKQogewogICAgIGlmICghaXNC
YXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBOU0FycmF5KiBhcnJheSA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlLnJlZCgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dmFsdWUuZ3JlZW4oKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVl
LmJsdWUoKV0sCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmFscGhh
KCldLAotICAgICAgICBuaWxdOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4o
bV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTphcnJheV07CisgICAgW3N0YXRpY19jYXN0
PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOkBbQCh2
YWx1ZS5yZWQoKSksIEAodmFsdWUuZ3JlZW4oKSksIEAodmFsdWUuYmx1ZSgpKSwgQCh2YWx1ZS5h
bHBoYSgpKV1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZh
bHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogb3BlcmF0aW9uLCBpbnQgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KQogewotICAgIFJldGFpblB0cjxpZD4gdmFsdWUgPSBQbGF0Zm9ybUNBRmls
dGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24ob3BlcmF0aW9uLCBpbnRlcm5hbEZpbHRlclBy
b3BlcnR5SW5kZXgpOworICAgIGF1dG8gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVy
VmFsdWVGb3JPcGVyYXRpb24ob3BlcmF0aW9uLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgp
OwogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkp
IHNldEZyb21WYWx1ZTp2YWx1ZS5nZXQoKV07CiB9CiAKQEAgLTQyMyw4ICs0MDgsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZv
cm1DQUFuaW1hdGlvbiYgdmFsdQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigpIHx8ICF2
YWx1ZS5pc0Jhc2ljQW5pbWF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENBQmFzaWNB
bmltYXRpb24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+
KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdl
dCgpKTsKKyAgICBhdXRvIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1h
dGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0
aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0
aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W290aGVyQW5pbWF0aW9uIGZyb21WYWx1ZV1dOwogfQog
CkBAIC00MzIsMTQgKzQxNiwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0
VG9WYWx1ZShmbG9hdCB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVd
XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRUb1ZhbHVlOkAodmFsdWUpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OnNldFRvVmFsdWUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewogICAg
IGlmICghaXNCYXNpY0FuaW1hdGlvbigpKQogICAgICAgICByZXR1cm47Ci0KICAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltO
U1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6dmFsdWVdXTsKIH0KIApAQCAtNDQ3LDMyICs0
MzAsMTkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUoY29uc3Qg
RmxvYXRQb2ludDNEJiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOgotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS54KCldLAot
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS55KCldLAotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS56KCldLAotICAgICAgICBuaWxdOwotICAg
IFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRv
VmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6QFsgQCh2YWx1ZS54KCkpLCBAKHZhbHVlLnkoKSksIEAo
dmFsdWUueigpKSBdXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRv
VmFsdWUoY29uc3QgQ29sb3ImIHZhbHVlKQogewogICAgIGlmICghaXNCYXNpY0FuaW1hdGlvbigp
KQogICAgICAgICByZXR1cm47Ci0KLSAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnJl
ZCgpXSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuZ3JlZW4oKV0s
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmJsdWUoKV0sCi0gICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmFscGhhKCldLAotICAgICAgICBu
aWxdOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0
KCkpIHNldFRvVmFsdWU6YXJyYXldOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9u
Kj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6QFtAKHZhbHVlLnJlZCgpKSwgQCh2YWx1
ZS5ncmVlbigpKSwgQCh2YWx1ZS5ibHVlKCkpLCBAKHZhbHVlLmFscGhhKCkpXV07CiB9CiAKIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogb3BlcmF0aW9uLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KQogewotICAg
IFJldGFpblB0cjxpZD4gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JP
cGVyYXRpb24ob3BlcmF0aW9uLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOworICAgIGF1
dG8gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24ob3Bl
cmF0aW9uLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwogICAgIFtzdGF0aWNfY2FzdDxD
QUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6dmFsdWUuZ2V0
KCldOwogfQogCkBAIC00ODEsNyArNDUxLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKICAg
ICBpZiAoIWlzQmFzaWNBbmltYXRpb24oKSB8fCAhdmFsdWUuaXNCYXNpY0FuaW1hdGlvbigpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9
IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0byBvdGhlckFuaW1h
dGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRpY19j
YXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbb3Ro
ZXJBbmltYXRpb24gdG9WYWx1ZV1dOwogfQogCkBAIC00OTIsOSArNDYyLDkgQEAgdm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1
ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCi0gICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV1dXTsKKyAg
ICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNp
emUoKV07CisgICAgZm9yIChhdXRvIG51bWJlciA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OkAobnVtYmVyKV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIApAQCAtNTAzLDExICs0
NzMsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKGNvbnN0IFZl
Y3RvcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mIHZhbAogICAgIGlmIChhbmltYXRpb25UeXBlKCkg
IT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJh
eSA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlLnNpemUoKTsgKytpKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENBVHJhbnNmb3JtM0Q6dmFsdWVbaV1dXTsKLQorICAgIGF1dG8gYXJyYXkgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1
dG8mIG1hdHJpeCA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENBVHJhbnNmb3JtM0Q6bWF0cml4XV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJh
bWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIApA
QCAtNTE2LDE2ICs0ODQsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFs
dWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JiB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9u
VHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJh
eSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgewotICAgICAgICBOU0FycmF5KiBvYmplY3QgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6dmFsdWVbaV0ueCgpXSwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlW2ldLnkoKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTp2YWx1ZVtpXS56KCldLAotICAgICAgICAgICAgbmlsXTsKLSAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpvYmplY3RdOwotICAgIH0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBwb2ludCA6
IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkBbQChwb2ludC54KCkpLCBAKHBvaW50
LnkoKSksIEAocG9pbnQueigpKV1dOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0
aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKQEAgLTUzNCwx
NyArNDk1LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8Q29sb3I+JiB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBOU0FycmF5KiBvYmplY3QgPSBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVb
aV0ucmVkKCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVb
aV0uZ3JlZW4oKV0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZVtpXS5ibHVlKCldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFs
dWVbaV0uYWxwaGEoKV0sCi0gICAgICAgICAgICBuaWxdOwotICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0Om9iamVjdF07Ci0gICAgfQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIGNvbG9yIDogdmFs
dWUpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QFtAKGNvbG9yLnJlZCgpKSwgQChjb2xvci5n
cmVlbigpKSwgQChjb2xvci5ibHVlKCkpLCBAKGNvbG9yLmFscGhhKCkpXV07CiAgICAgW3N0YXRp
Y19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVz
OmFycmF5XTsKIH0KIApAQCAtNTUzLDEyICs1MDYsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4m
CiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IFJldGFpblB0cjxpZD4gdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JP
cGVyYXRpb24odmFsdWVzW2ldLmdldCgpLCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwot
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnZhbHVlLmdldCgpXTsKLSAgICB9CisgICAgYXV0byBh
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2YWx1ZXMuc2l6ZSgpXTsK
KyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVzKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OlBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbih2YWx1ZS5nZXQoKSwg
aW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KS5nZXQoKV07CiAgICAgW3N0YXRpY19jYXN0PENB
S2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsK
IH0KIApAQCAtNTY3LDM5ICs1MTcsMzUgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUgfHwgdmFsdWUuYW5pbWF0aW9uVHlwZSgpICE9
IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBv
dGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2Fz
dDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7Cisg
ICAgYXV0byBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
Pihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KHZhbHVlKS5tX2FuaW1hdGlvbi5n
ZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlv
bi5nZXQoKSkgc2V0VmFsdWVzOltvdGhlckFuaW1hdGlvbiB2YWx1ZXNdXTsKIH0KIAogdm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZhbHVlKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBh
cnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKQot
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6dmFsdWVb
aV1dXTsKLQorICAgIGF1dG8gYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNp
dHk6dmFsdWUuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8gdGltZSA6IHZhbHVlKQorICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OkAodGltZSldOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOmFycmF5XTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZv
cm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXIg
PSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOworICAgIGF1dG8gb3RoZXIg
PSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hPih2YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2Fz
dDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOltv
dGhlciBrZXlUaW1lc11dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0
VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+JiB2YWx1
ZSwgYm9vbCByZXZlcnNlKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUo
KTsgKytpKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnRvQ0FNZWRpYVRpbWluZ0Z1bmN0aW9u
KHZhbHVlW2ldLCByZXZlcnNlKV07Ci0KKyAgICBhdXRvIGFycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnZhbHVlLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBmdW5jdGlv
biA6IHZhbHVlKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnRvQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uKGZ1bmN0aW9uLCByZXZlcnNlKV07CiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmlt
YXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGltaW5nRnVuY3Rpb25zOmFycmF5XTsKIH0K
IAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIENBS2V5ZnJhbWVBbmlt
YXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0
PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKKyAg
ICBhdXRvIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0
PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAg
ICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRUaW1pbmdGdW5jdGlvbnM6W290aGVyIHRpbWluZ0Z1bmN0aW9uc11dOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
RmlsdGVyc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQppbmRleCBlMWFlNWQ5Yjc3MTIwNDMyMDZmY2Vm
YWQ0OWU0YWJmMDU2ODA3OGViLi4zYzRkY2UyYWIzYjJlMDkzNTRiOGI3NDRlOTEzYzMwNmY2MDc3
NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KQEAgLTMyNCw3ICsz
MjQsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVl
Rm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAob3BlcmF0aW9uKQog
ICAgICAgICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91
bnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNF
UElBOiB7CkBAIC0zNjMsNyArMzYzLDcgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FG
aWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAg
ICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAK
LSAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOworICAg
ICAgICB2YWx1ZSA9IEAoYW1vdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CkBAIC0zNzQsNyArMzc0LDcgQEAgUmV0YWlu
UHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihj
b25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAK
ICAgICAgICAgYW1vdW50ID0gZGVnMnJhZChhbW91bnQpOwotICAgICAgICB2YWx1ZSA9IFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOmFtb3VudF07CisgICAgICAgIHZhbHVlID0gQChhbW91bnQp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVS
VDogewpAQCAtNDUyLDcgKzQ1Miw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmls
dGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAg
IGlmIChvcGVyYXRpb24pCiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAg
ICAgCi0gICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsK
KyAgICAgICAgdmFsdWUgPSBAKGFtb3VudCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtNDYzLDcgKzQ2Myw3IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVy
czo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlm
IChvcGVyYXRpb24pCiAgICAgICAgICAgICBhbW91bnQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGRv
d25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpLCAw
KTsKICAgICAgICAgCi0gICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
YW1vdW50XTsKKyAgICAgICAgdmFsdWUgPSBAKGFtb3VudCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWZhMDdmNmQ4ZmZh
Yjg3ZGQ4OWQ5YWJjZjIwNmYxZDNiMGE5NjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRmxvYXRSZWN0Q29jb2EubW0KQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSBOb2tpYS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKworI2lmICFQTEFURk9STShN
QUMpCisjaW1wb3J0IDxVSUtpdC9VSUdlb21ldHJ5Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitpZCBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiByZWN0KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpyZWN0XTsKKyNlbHNlCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVj
dDpyZWN0XTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dF
T01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKKworRmxvYXRSZWN0OjpGbG9h
dFJlY3QoY29uc3QgTlNSZWN0JiByZWN0KQorICAgIDogbV9sb2NhdGlvbihyZWN0Lm9yaWdpbikK
KyAgICAsIG1fc2l6ZShyZWN0LnNpemUpCit7Cit9CisKK0Zsb2F0UmVjdDo6b3BlcmF0b3IgTlNS
ZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwg
aGVpZ2h0KCkpOworfQorCisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1M2Nh
ZmE1MmE5NTZhMzdmYmI2NTE0ZDUwMDY0Njk3YWQ4YzE0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSW50UmVjdC5oIgorCisjaWYg
IVBMQVRGT1JNKE1BQykKKyNpbXBvcnQgPFVJS2l0L1VJR2VvbWV0cnkuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2lkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBJbnRSZWN0
JiByZWN0KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpyZWN0XTsKKyNlbHNlCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVj
dDpyZWN0XTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dF
T01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKKworSW50UmVjdDo6b3BlcmF0
b3IgTlNSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHkoKSwgd2lk
dGgoKSwgaGVpZ2h0KCkpOworfQorCitJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNS
ZWN0JiByZWN0KQoreworICAgIGludCBsZWZ0ID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Zmxvb3IocmVj
dC5vcmlnaW4ueCkpOworICAgIGludCB0b3AgPSBjbGFtcFRvPGludD4oc3RkOjpmbG9vcihyZWN0
Lm9yaWdpbi55KSk7CisgICAgaW50IHJpZ2h0ID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Y2VpbChOU01h
eFgocmVjdCkpKTsKKyAgICBpbnQgYm90dG9tID0gY2xhbXBUbzxpbnQ+KHN0ZDo6Y2VpbChOU01h
eFkocmVjdCkpKTsKKyAgICByZXR1cm4geyBsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9t
IC0gdG9wIH07Cit9CisKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQppbmRleCBmNDZhNzE2ODBlZTg0Yjhm
NDM2ZWViNzdkMThlMjAyMjFiMmIxNTA1Li40MThiZDMzNWVhYTM4YzM4N2NiOWY5N2QyMzE4ODdk
YzU4NDdkZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIubW0KQEAgLTE2NSw3ICsxNjUsNyBAQCAtICh2b2lkKWRpc3BsYXkK
ICAgICAgICAgaWYgKF9sYXRjaGVkUGJ1ZmZlcikgewogCiAgICAgICAgICAgICBHQ0dMZW51bSB0
ZXh0dXJlID0gX2NvbnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpOwotICAgICAgICAgICAgZ2w6OkJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0
dXJlKTsKKyAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CiAgICAgICAgICAgICBpZiAo
IUVHTF9SZWxlYXNlVGV4SW1hZ2UoX2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1ZmZlciwgRUdMX0JB
Q0tfQlVGRkVSKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IuCiAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCAtICh2
b2lkKWFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemU6KFdlYkNvcmU6OkludFNp
emUpc2l6ZSB1c2luZ0FscGhhOgogICAgICAgICBFR0xfV0lEVEgsIHNpemUud2lkdGgoKSwKICAg
ICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWlnaHQoKSwKICAgICAgICAgRUdMX0lPU1VSRkFDRV9Q
TEFORV9BTkdMRSwgMCwKLSAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBHcmFwaGljc0NvbnRl
eHRHTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCwKKyAgICAgICAgRUdMX1RFWFRVUkVfVEFS
R0VULCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdl
dCwKICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCB1c2luZ0FscGhh
ID8gR0xfQkdSQV9FWFQgOiBHTF9SR0IsCiAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdM
X1RFWFRVUkVfUkdCQSwKICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgR0xfVU5TSUdO
RURfQllURSwKQEAgLTI1OCw3ICsyNTgsNyBAQCAtICh2b2lkKWJpbmRGcmFtZWJ1ZmZlclRvTmV4
dEF2YWlsYWJsZVN1cmZhY2UKICNlbGlmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSB0ZXh0dXJl
ID0gX2NvbnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpOwogCi0gICAgZ2w6OkJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBn
bDo6QmluZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1
cmVUYXJnZXQsIHRleHR1cmUpOwogCiAgICAgaWYgKF9sYXRjaGVkUGJ1ZmZlcikgewogICAgICAg
ICBpZiAoIUVHTF9SZWxlYXNlVGV4SW1hZ2UoX2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1ZmZlciwg
RUdMX0JBQ0tfQlVGRkVSKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0KaW5kZXggY2UzZjhkYjFjMTJhMDkwOWRiZjU1ZGM4
NWQ2NDkwZTljODg5YjYyZS4uNGYwOGNhMDZkMjRlOWRjM2ZhMDQzNDE4YzNjYmZjMjgyNzZlZTFk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRD
YWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9u
dENhY2hlSU9TLm1tCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IHN5c3RlbUZvbnRNb2RpZmljYXRpb25BdHRyaWJ1dGVzKEZvbnRTZWxlY3Rpb25WYWwK
ICAgICBbdHJhaXRzRGljdGlvbmFyeSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6c3RhdGljX2Nhc3Q8
TlNTdHJpbmcgKj4oa0NURm9udFVJRm9udERlc2lnblRyYWl0KV07CiAKICAgICBpZiAoaXRhbGlj
KQotICAgICAgICBbdHJhaXRzRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6a0NURm9udEl0YWxpY1RyYWl0XSBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4o
a0NURm9udFN5bWJvbGljVHJhaXQpXTsKKyAgICAgICAgW3RyYWl0c0RpY3Rpb25hcnkgc2V0T2Jq
ZWN0OkAoa0NURm9udEl0YWxpY1RyYWl0KSBmb3JLZXk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4o
a0NURm9udFN5bWJvbGljVHJhaXQpXTsKIAogICAgIHJldHVybiBAeyBzdGF0aWNfY2FzdDxOU1N0
cmluZyAqPihrQ1RGb250VHJhaXRzQXR0cmlidXRlKSA6IHRyYWl0c0RpY3Rpb25hcnkuZ2V0KCkg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
bG9hdFJlY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxv
YXRSZWN0TWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWQzNDhhY2NiYmU0
NDE4NTFlYWVhYWVjYWM5ZWRiNjZkZmUxMWYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
bG9hdFJlY3RNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQotI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUwotCi1GbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHIpIDog
bV9sb2NhdGlvbihyLm9yaWdpbiksIG1fc2l6ZShyLnNpemUpCi17Ci19Ci0KLUZsb2F0UmVjdDo6
b3BlcmF0b3IgTlNSZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gTlNNYWtlUmVjdCh4KCksIHko
KSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotfQotCi0jZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ludFJlY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW50UmVjdE1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5NjFl
YjgzNzA0OTU2OTE2M2U2OTFkNzAxMzIzZWNhMDU2MzYyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW50UmVjdE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NB
TUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwotCi1JbnRSZWN0OjpvcGVyYXRvciBOU1JlY3QoKSBjb25z
dAotewotICAgIHJldHVybiBOU01ha2VSZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7
Ci19Ci0KLUludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1JlY3QmIHJlY3QpCi17Ci0g
ICAgaW50IGwgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihyZWN0Lm9yaWdpbi54KSk7Ci0gICAg
aW50IHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihyZWN0Lm9yaWdpbi55KSk7Ci0gICAgaW50
IHIgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKE5TTWF4WChyZWN0KSkpOwotICAgIGludCBiID0g
c3RhdGljX2Nhc3Q8aW50PihjZWlsZihOU01heFkocmVjdCkpKTsKLSAgICByZXR1cm4gSW50UmVj
dChsLCB0LCByIC0gbCwgYiAtIHQpOwotfQotCi0jZW5kaWYKLSNlbmRpZgotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpp
bmRleCBjMGUxZjJkYTZiMzI5OGM3NjBhY2M1NTExZTQ2ZTg5MWJiMmNlOTlkLi5iYWEyNTU1MDhj
MzgwODZhYzYwYzRlMTAyOTFhMTNjNzM2MTUxZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTM5LDEzICszOSwx
NSBAQAogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlQYXN0ZWJvYXJkLmg+Ci0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0
U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3
dGYvTGlzdEhhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0
TGluay5oPgorCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICEoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQ
TEVUVikpKQogI2RlZmluZSBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9B
TkRfVEVBTV9EQVRBIChQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkpCiAjZGVmaW5lIE5TVVJMX1NVUFBPUlRTX1RJVExFICghUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpKQpAQCAtNzQsOCArNzYsNyBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBs
YXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewotICAgIGZvciAoTlNTdHJpbmcg
KnBhc3RlYm9hcmRUeXBlIGluIFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSkKLSAgICAg
ICAgdHlwZXMuYXBwZW5kKHBhc3RlYm9hcmRUeXBlKTsKKyAgICB0eXBlcyA9IG1ha2VWZWN0b3I8
U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCiBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQpAQCAtNTg3LDEwICs1ODgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAg
ICAgICAgICAgLy8gZXZlbnRzLCB3ZSBuZWVkIGFuIGFkZGl0aW9uYWwgaW4tbWVtb3J5IHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFycmF5IHRoYXQgY29udGFpbnMKICAg
ICAgICAgICAgIC8vIGFsbCBvZiB0aGUgY3VzdG9tIHR5cGVzLiBXZSB1c2UgdGhlIHRlYW1EYXRh
IHByb3BlcnR5LCBhdmFpbGFibGUgb24gTlNJdGVtUHJvdmlkZXIgb24gaU9TLCB0byBzdG9yZQog
ICAgICAgICAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiwgc2luY2UgdGhlIGNvbnRlbnRzIG9mIHRl
YW1EYXRhIGFyZSBpbW1lZGlhdGVseSBhdmFpbGFibGUgcHJpb3IgdG8gdGhlIGRyb3AuCi0gICAg
ICAgICAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqdHlwZXNBc05TQXJyYXkgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOwotICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5v
cmRlcmVkVHlwZXMoKSkKLSAgICAgICAgICAgICAgICBbdHlwZXNBc05TQXJyYXkgYWRkT2JqZWN0
OnR5cGVdOwotICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp0ZWFtRGF0YURpY3Rpb25hcnkgPSBA
eyBAKG9yaWdpbktleUZvclRlYW1EYXRhKSA6IGRhdGEub3JpZ2luKCksIEAoY3VzdG9tVHlwZXNL
ZXlGb3JUZWFtRGF0YSkgOiB0eXBlc0FzTlNBcnJheSB9OworICAgICAgICAgICAgTlNEaWN0aW9u
YXJ5ICp0ZWFtRGF0YURpY3Rpb25hcnkgPSBAeyBAKG9yaWdpbktleUZvclRlYW1EYXRhKSA6IGRh
dGEub3JpZ2luKCksIEAoY3VzdG9tVHlwZXNLZXlGb3JUZWFtRGF0YSkgOiBjcmVhdGVOU0FycmF5
KGRhdGEub3JkZXJlZFR5cGVzKCkpLmdldCgpIH07CiAgICAgICAgICAgICBpZiAoTlNEYXRhICp0
ZWFtRGF0YSA9IFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dGVh
bURhdGFEaWN0aW9uYXJ5IHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
IHsKICAgICAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRUZWFtRGF0
YTp0ZWFtRGF0YV07CiAgICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpzZXJpYWxpemVkU2hhcmVkQnVmZmVyLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKQEAgLTc1MywxMSArNzUxLDcgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdHkKICAgICBpZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KV0pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnR5cGVzLnNpemUoKV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiB0
eXBlIDogdHlwZXMpCi0gICAgICAgIFt0eXBlc0FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKil0
eXBlXTsKLQotICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
OnR5cGVzQXJyYXldOworICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzOmNyZWF0ZU5TQXJyYXkodHlwZXMpLmdldCgpXTsKIH0KIAogaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbQppbmRleCA3MTkzYjY1YmViZTQ5YTUwNDBkZDhkODExOGViYTBmZWY1YjJhODZh
Li5iODE2MzA4YjU5NmVjOTNmM2NjODQ5YTEyOWQwZTkzMTEyNWY4MjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQpAQCAtNTE4LDcgKzUxOCw3IEBAIC0gKE5TQXJyYXk8X19raW5kb2YgTlNJdGVtUHJvdmlk
ZXIgKj4gKilpdGVtUHJvdmlkZXJzCiAKIC0gKHZvaWQpc2V0SXRlbVByb3ZpZGVyczooTlNBcnJh
eTxfX2tpbmRvZiBOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKLSAgICBpdGVt
UHJvdmlkZXJzID0gaXRlbVByb3ZpZGVycyA/OiBbTlNBcnJheSBhcnJheV07CisgICAgaXRlbVBy
b3ZpZGVycyA9IGl0ZW1Qcm92aWRlcnMgPzogQFsgXTsKICAgICBpZiAoX2l0ZW1Qcm92aWRlcnMg
PT0gaXRlbVByb3ZpZGVycyB8fCBbX2l0ZW1Qcm92aWRlcnMgaXNFcXVhbFRvQXJyYXk6aXRlbVBy
b3ZpZGVyc10pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtWaWV3Lm1tCmluZGV4IGUzMzVkNzViZGNhNGZhNzllNWYzZGQwMjlhMDY4YzM0YjY3
ZDM2MWYuLjI0N2Y5MmZlOWFkMzNmMzM2OTRjMzkyYjVhMmI5Yjk2MGI1NmE4MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTI4NCwxNSArMjg0LDE1
IEBAIC0gKE5TQXJyYXkgKilzdWJ2aWV3cwogewogICAgIENGQXJyYXlSZWYgc3Vidmlld3MgPSBX
S1ZpZXdHZXRTdWJ2aWV3cyhbc2VsZiBfdmlld1JlZl0pOwogICAgIGlmICghc3Vidmlld3MpCi0g
ICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAWyBdOwogICAg
IAogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3Vidmlld3MpOwogICAgIGlm
IChjb3VudCA9PSAwKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICBy
ZXR1cm4gQFsgXTsKICAgICAKICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvdW50XTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbIF07CiAgICAgCiAg
ICAgQ0ZBcnJheUFwcGx5RnVuY3Rpb24oc3Vidmlld3MsIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwg
X1dBS0NvcHlXcmFwcGVyLCAodm9pZCopcmVzdWx0KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGM5NjRm
NDFmNDE5MWRkYTE0MWJiMmRkYzAyNDYxMGFjYTAyZjRmYzQuLjA3NjI3ZjFjYjQyNDc4YmQ2MzMx
OWRlNmNmYmEzM2Y3MzY5ZGRhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsMTAgKzU4
LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcykKIHsKLSAgICBOU0FycmF5ICpwYXN0ZWJvYXJkVHlwZXMgPSBb
bV9wYXN0ZWJvYXJkLmdldCgpIHR5cGVzXTsKLQotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IFtwYXN0ZWJvYXJkVHlwZXMgY291bnRdOyBpKyspCi0gICAgICAgIHR5cGVzLmFwcGVuZChb
cGFzdGVib2FyZFR5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgIHR5cGVzID0gbWFrZVZlY3Rv
cjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdKTsKIH0KIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCkBAIC05NSwxMyArOTMsMTIgQEAgaW50IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0CiB7Ci0gICAgTlNBcnJheSogcGF0aHMgPSBbbV9wYXN0ZWJv
YXJkLmdldCgpIHByb3BlcnR5TGlzdEZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIGlkIHBh
dGhzID0gW21fcGFzdGVib2FyZC5nZXQoKSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKICAgICBpZiAoW3BhdGhzIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsK
ICAgICAgICAgcGF0aG5hbWVzLmFwcGVuZCgoTlNTdHJpbmcgKilwYXRocyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3BhdGhzIGNvdW50
XTsgaSsrKQotICAgICAgICBwYXRobmFtZXMuYXBwZW5kKFtwYXRocyBvYmplY3RBdEluZGV4Omld
KTsKKyAgICBwYXRobmFtZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4ocGF0aHMpOwogfQogCiBzdGF0
aWMgYm9vbCBwYXN0ZWJvYXJkTWF5Q29udGFpbkZpbGVQYXRocyhOU1Bhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQpCkBAIC0zMTcsMjQgKzMxNCwxNiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKQogCiBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykK
IHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXN0
ZWJvYXJkVHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6
cGFzdGVib2FyZFR5cGVzW2ldXTsKLQotICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFk
ZFR5cGVzOnR5cGVzLmdldCgpIG93bmVyOm5pbF07CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQu
Z2V0KCkgYWRkVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVy
Om5pbF07CiB9CiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogewotICAgIGF1dG8gdHlwZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKGF1dG8mIHBhc3Rl
Ym9hcmRUeXBlIDogcGFzdGVib2FyZFR5cGVzKSB7Ci0gICAgICAgIGlmICghY2FuV3JpdGVQYXN0
ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpIHsKLSAgICAgICAgICAgIFt0eXBlcyByZW1vdmVB
bGxPYmplY3RzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFt0eXBl
cyBhZGRPYmplY3Q6cGFzdGVib2FyZFR5cGVdOworICAgICAgICBpZiAoIWNhbldyaXRlUGFzdGVi
b2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFttX3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOkBbXSBvd25lcjpuaWxdOwogICAgIH0KLSAgICByZXR1cm4gW21fcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6bmlsXTsKKyAgICByZXR1cm4g
W21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMp
LmdldCgpIG93bmVyOm5pbF07CiB9CiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5o
CmluZGV4IGFiZjJiZjEzMDhhZmRjZWRlZGI1M2E1MTE5MWNlZmM0MTFjZWJiYTUuLmNiYzY2NmU1
ZWM3YjA0Njg5ZDc3MDAyZDczMTE4ZWY1MjRiY2M4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKQEAgLTMyLDggKzMyLDQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVNYXRjaGVkLCBjb25zdCBTdHJpbmcmIHdpbGRj
YXJkU3RyaW5nKTsKIAotI2lmZGVmIF9fT0JKQ19fCi1XRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3Ry
aW5nPiB3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXkoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKTsKLSNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQotCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCBmMWY1NmIzMDg3ZDBl
MDkxMWYxODBlNTUzMjA2NmZiMGRhMWU2YTllLi43Y2QxYmQ4MGFlOWUzM2U3NTZmNjU5MTIyNDBm
N2VkNmNjMzNjNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3Ry
aW5nVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMubW0KQEAgLTU5LDE1ICs1OSw0IEBAIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJk
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3RyCiAg
ICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBhdHRl
cm5TdHJpbmcod2lsZGNhcmRTdHJpbmcpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUp
Lm1hdGNoKHN0cmluZykgIT0gLTE7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdW
ZWN0b3JGcm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICpuc1N0cmluZ0FycmF5
KQotewotICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ1ZlY3RvcjsKLSAgICBzdHJpbmdWZWN0b3Iu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbnNTdHJpbmdBcnJheSBjb3VudF0pOwotCi0gICAgZm9y
IChOU1N0cmluZyAqbnNTdHJpbmcgaW4gbnNTdHJpbmdBcnJheSkKLSAgICAgICAgc3RyaW5nVmVj
dG9yLnVuY2hlY2tlZEFwcGVuZChuc1N0cmluZyk7Ci0KLSAgICByZXR1cm4gc3RyaW5nVmVjdG9y
OwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbQppbmRleCAzODM2OGVjMjQ3ZGQwMDQ0YWI5ZGFhZThkZjY0MDU5MGRkMDIwMjhi
Li5jNzVkMjBmMGY3NzU2MTc5ZDRmOWQ4MDI4MWVjYTQ0OGVkMjAwYjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMxLDcg
KzMxLDYgQEAKIAogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQg
PHd0Zi9GdW5jdGlvbi5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx1
bmljb2RlL3VjaGFyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggMjMzNTRmNDc4NGRlMDkyZjA0ODdjMTg1NGZjNWIyNmE1
ZTIyMTFhYy4uNDRmZmRjMGI3NTNmM2Y3ZDI4ZmM2ZmQ0Nzg2OTlkNzJlNGVkZDdmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpA
QCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZp
ZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIEFTU0VSVCghbV92aWRlb0lucHV0
KTsKICAgICAKICAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJvcGVydGllcyA9IEB7Ci0g
ICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051bWJlciBudW1iZXJXaXRoSW50
OndpZHRoICogaGVpZ2h0ICogMTJdLAorICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkg
OiBAKHdpZHRoICogaGVpZ2h0ICogMTIpLAogICAgICAgICBBVlZpZGVvRXhwZWN0ZWRTb3VyY2VG
cmFtZVJhdGVLZXkgOiBAKDMwKSwKICAgICAgICAgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxL
ZXkgOiBAKDEyMCksCiAgICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkgOiBBVlZpZGVvUHJv
ZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdo
dCkKIAogICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7CiAgICAgICAgIEFWVmlk
ZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKLSAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6
IFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0sCisgICAgICAgIEFWVmlkZW9XaWR0aEtl
eTogQCh3aWR0aCksCisgICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IEAoaGVpZ2h0KSwKICAgICAg
ICAgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVz
CiAgICAgfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAxM2VkYzM1
NWE1MzU4MzZhNjY4NTAxMjc4ODM5YjI5MGY0NzgzNTJjLi5mMTc3ZTA5NjdhZjc1OWQ4NTljZGVi
NTg5NDg0OTZkMDVmMjQ2OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC00
NDIsNyArNDQyLDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vz
c2lvbigpCiAgICAgW3Nlc3Npb24oKSBhZGRJbnB1dDp2aWRlb0luLmdldCgpXTsKIAogICAgIG1f
dmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0
SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgYXV0byBzZXR0aW5nc0RpY3Rpb25hcnkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czogW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6YXZWaWRlb0NhcHR1cmVQaXhlbEJ1ZmZlckZvcm1hdCgpXSwg
a0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF0pOworICAgIGF1dG8gc2V0dGlu
Z3NEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6IEAoYXZWaWRlb0NhcHR1cmVQaXhlbEJ1ZmZlckZvcm1hdCgpKSwg
a0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF0pOwogCiAgICAgW21fdmlkZW9P
dXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCldOwogICAgIFtt
X3ZpZGVvT3V0cHV0IHNldEFsd2F5c0Rpc2NhcmRzTGF0ZVZpZGVvRnJhbWVzOllFU107CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5t
bQppbmRleCBmNjc2YTI0NTU4ZDg5ODBmZjIxMjUyMTM4NDQ0MWEzZjRlYmUzMTkxLi5jOTdhZWJk
N2RmOGYwYmFkMjY5MTQyYWVlM2Y1MmQzYmUwN2QzMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KQEAgLTE3NSw3ICsx
NzUsNyBAQCBDb29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqIF9OdWxsYWJsZSAoKSBjb25z
dAogICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtwcm9wZXJ0
aWVzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpjcmVhdGVkIC8gMTAwMC4w
IC0gTlNUaW1lSW50ZXJ2YWxTaW5jZTE5NzBdIGZvcktleTpAIkNyZWF0ZWQiXTsKKyAgICBbcHJv
cGVydGllcyBzZXRPYmplY3Q6QChjcmVhdGVkIC8gMTAwMC4wIC0gTlNUaW1lSW50ZXJ2YWxTaW5j
ZTE5NzApIGZvcktleTpAIkNyZWF0ZWQiXTsKICNlbmRpZgogCiAgICAgYXV0byogcG9ydFN0cmlu
ZyA9IHBvcnRTdHJpbmdGcm9tVmVjdG9yKHBvcnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCmluZGV4IGJkMGZkNjc1Mzg4MjViZTA4MWM3OTVjNDg3ZjI2MTAxZDhjMzRm
ZDUuLmM0YmQ1ZWZiYWNiYWRhMGNlYTJlODBmYzg1NzE4ZDZhMTY3NmUyZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0ci5jb250
YWlucygnPScpID8gY29va2llU3RyIDogY29va2llU3RyICsgIj0iOwogCiAgICAgTlNVUkwgKmNv
b2tpZVVSTCA9IHVybDsKLSAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6Y29va2llU3RyaW5nIGZvcktleTpAIlNldC1Db29r
aWUiXTsKKyAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IEB7IEAiU2V0LUNvb2tpZSI6
IGNvb2tpZVN0cmluZyB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TQXJyYXkgKnVuZmls
dGVyZWRDb29raWVzID0gW05TSFRUUENvb2tpZSBfcGFyc2VkQ29va2llc1dpdGhSZXNwb25zZUhl
YWRlckZpZWxkczpoZWFkZXJGaWVsZHMgZm9yVVJMOmNvb2tpZVVSTF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbQppbmRleCBkNmVlZWZkZDhjOTZkMzg4OWNmZTZkZTk0ZjI1ZDViY2FjZmVjZjcy
Li43NjZlYTNiODJmNTg1YWYxNmFmZGFiZTEyYWNhODcyODYyNDQwYmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VS
ZXF1ZXN0Q29jb2EubW0KQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6c2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0
ZURpc3Bvc2l0aW9uLCBuc1JlcXVlc3QuVVJMKSBmb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGlj
eVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiXTsKLSAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9pc1RvcFNpdGVdIGZvcktleTpAIl9rQ0ZIVFRQQ29v
a2llUG9saWN5UHJvcGVydHlJc1RvcExldmVsTmF2aWdhdGlvbiJdOworICAgIFtuc1JlcXVlc3Qg
X3NldFByb3BlcnR5Om1faXNUb3BTaXRlID8gQFlFUyA6IEBOTyBmb3JLZXk6QCJfa0NGSFRUUENv
b2tpZVBvbGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKICNlbmRpZgogCiAgICAg
Ly8gQ2Fubm90IGp1c3QgdXNlIHNldEFsbEhUVFBIZWFkZXJGaWVsZHMgaGVyZSwgYmVjYXVzZSBp
dCBkb2VzIG5vdCByZW1vdmUgaGVhZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA0M2RmNTJk
YWU1ZmEwMzg4NWQwNzA5YTdlNzRkMzhjODI4MjczZDJkLi42MjZmZWI1MjI4YzFkZjgyMTIwYzQ5
YzY4YWZjMWUwNDQyN2QyMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01Miw3ICs1Miw2IEBA
CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ha2VkUmVmLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IGVjYmI3OTc3NzZjMmI4Zjk3MTY1YzMz
OWVmMDRmZmJmNDk0YTY4ZDkuLjY4NGZkODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgxN2Y0YzJhZTg0
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0K
QEAgLTI5LDcgKzI5LDYgQEAKICNpbXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2ltcG9ydCAi
V0tTdHJpbmdDRi5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVndWxhckV4cHJlc3Npb24u
aD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRl
eCAxM2I5YWRhNjEwMmM2NDFlMjI3NzFhZWVhNDY0ZDFkMGJhZDY0NzYyLi4yNzAzYjI4YjFmMzY0
YzJjYjEzMWVjMTAxZGI3MDIxZGYwMmMyZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC01Niw2ICs1Niw3IEBACiAj
aW1wb3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
IGNvbnN0IENGU3RyaW5nUmVmIGtMU1BsdWdJbkJ1bmRsZUlkZW50aWZpZXJLZXkgPSBDRlNUUigi
TFNQbHVnSW5CdW5kbGVJZGVudGlmaWVyS2V5Iik7CiAKQEAgLTI1NiwxMiArMjU3LDcgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZWROU0NvbmNyZXRlVGFza19sYXVuY2goTlNUYXNrICpzZWxmLCBTRUwg
X2NtZCkKIHsKICAgICBTdHJpbmcgbGF1bmNoUGF0aCA9IHNlbGYubGF1bmNoUGF0aDsKIAotICAg
IFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzZWxmLmFyZ3VtZW50cy5jb3VudCk7Ci0gICAgZm9yIChOU1N0cmluZyAqYXJndW1l
bnQgaW4gc2VsZi5hcmd1bWVudHMpCi0gICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQo
YXJndW1lbnQpOwotCi0gICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaFBy
b2Nlc3MobGF1bmNoUGF0aCwgYXJndW1lbnRzKSkKKyAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2lu
Z2xldG9uKCkubGF1bmNoUHJvY2VzcyhsYXVuY2hQYXRoLCBtYWtlVmVjdG9yPFN0cmluZz4oc2Vs
Zi5hcmd1bWVudHMpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTlNDb25jcmV0ZVRhc2tfbGF1
bmNoKHNlbGYsIF9jbWQpOwpAQCAtMjcxLDE2ICsyNjcsOCBAQCBzdGF0aWMgTlNSdW5uaW5nQXBw
bGljYXRpb24gKigqTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2Nv
bmZpZwogCiBzdGF0aWMgTlNSdW5uaW5nQXBwbGljYXRpb24gKnJlcGxhY2VkTlNXb3Jrc3BhY2Vf
bGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2NvbmZpZ3VyYXRpb25fZXJyb3IoTlNXb3Jr
c3BhY2UgKnNlbGYsIFNFTCBfY21kLCBOU1VSTCAqdXJsLCBOU1dvcmtzcGFjZUxhdW5jaE9wdGlv
bnMgb3B0aW9ucywgTlNEaWN0aW9uYXJ5ICpjb25maWd1cmF0aW9uLCBOU0Vycm9yICoqZXJyb3Ip
CiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzOwogICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgaWYgKE5TQXJyYXkgKmFyZ3VtZW50c0FycmF5ID0gW2Nv
bmZpZ3VyYXRpb24gb2JqZWN0Rm9yS2V5Ok5TV29ya3NwYWNlTGF1bmNoQ29uZmlndXJhdGlvbkFy
Z3VtZW50c10pIHsKLSAgICAgICAgaWYgKFthcmd1bWVudHNBcnJheSBpc0tpbmRPZkNsYXNzOltO
U0FycmF5IGFycmF5XV0pIHsKLSAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmFyZ3VtZW50IGlu
IGFyZ3VtZW50c0FycmF5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKFthcmd1bWVudCBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKGFyZ3VtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBh
dXRvIGFyZ3VtZW50cyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbY29uZmlndXJhdGlvbiBvYmplY3RG
b3JLZXk6TlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzXSk7CiAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoUGx1Z2luUHJvY2Vzczo6
c2luZ2xldG9uKCkubGF1bmNoQXBwbGljYXRpb25BdFVSTChVUkwodXJsKS5zdHJpbmcoKSwgYXJn
dW1lbnRzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5k
ZXggZjIzMzhiOGNjMDE3NWMyZDA2ZTY3Yzk4YzM1NDQ1ODc2YjQ0NDk4ZC4uMzEzMDg4NjY1MjVm
NjE4YjhmNjE4YTZkNTc5ZGI4NzM2MDcwMGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMiwxMCArMzIsMTIgQEAKICNpbXBvcnQgIldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0
IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPgpAQCAt
MTMxLDE0ICsxMzMsNiBAQCBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01lcmNoYW50
Q2FwYWJpbGl0aWVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2VzcwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdG9TdXBwb3J0ZWROZXR3b3Jrcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkTmV0d29ya3MpCi17Ci0gICAgYXV0byByZXN1
bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c3Vw
cG9ydGVkTmV0d29ya3Muc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBzdXBwb3J0ZWROZXR3b3Jr
IDogc3VwcG9ydGVkTmV0d29ya3MpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OnN1cHBvcnRl
ZE5ldHdvcmtdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBQS1NoaXBwaW5nVHlw
ZSB0b1BLU2hpcHBpbmdUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpTaGlwcGluZ1R5cGUgc2hpcHBpbmdUeXBlKQogewogICAgIHN3aXRjaCAoc2hpcHBpbmdUeXBl
KSB7CkBAIC0yMTIsNyArMjA2LDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKICAgICBbcmVz
dWx0IHNldFJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6dG9QS0NvbnRhY3RGaWVsZHMocGF5
bWVudFJlcXVlc3QucmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07CiAgICAg
W3Jlc3VsdCBzZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczp0b1BLQ29udGFjdEZpZWxk
cyhwYXltZW50UmVxdWVzdC5yZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07
CiAKLSAgICBbcmVzdWx0IHNldFN1cHBvcnRlZE5ldHdvcmtzOnRvU3VwcG9ydGVkTmV0d29ya3Mo
cGF5bWVudFJlcXVlc3Quc3VwcG9ydGVkTmV0d29ya3MoKSkuZ2V0KCldOworICAgIFtyZXN1bHQg
c2V0U3VwcG9ydGVkTmV0d29ya3M6Y3JlYXRlTlNBcnJheShwYXltZW50UmVxdWVzdC5zdXBwb3J0
ZWROZXR3b3JrcygpKS5nZXQoKV07CiAgICAgW3Jlc3VsdCBzZXRNZXJjaGFudENhcGFiaWxpdGll
czp0b1BLTWVyY2hhbnRDYXBhYmlsaXRpZXMocGF5bWVudFJlcXVlc3QubWVyY2hhbnRDYXBhYmls
aXRpZXMoKSldOwogCiAgICAgW3Jlc3VsdCBzZXRTaGlwcGluZ1R5cGU6dG9QS1NoaXBwaW5nVHlw
ZShwYXltZW50UmVxdWVzdC5zaGlwcGluZ1R5cGUoKSldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNzAxMzI4MWVjMzRiYmY0YTU4ZTAyMzBmNGU4
ZjQ0OWNmNDlkNDQzMS4uZGZkNGI2MGViOWU4ZGYxZWFkYWYwMjQ3ZTliMmQyYjBkNDZjODI4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCkBAIC00Niwz
MiArNDYsMzIgQEAgc3RhdGljIGlubGluZSBOU0FycmF5ICpyZXRhaW4oTlNBcnJheSAqYXJyYXkp
CiAgICAgCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcoKQogewotICAgIHN0
YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldl
YkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2
ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZp
bGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJDb3Jl
OjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJk
VHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HLCBuaWxdKTsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFz
dGVib2FyZFR5cGUoKSwKKyAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJU
RlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVBOR10pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVi
b2FyZFR5cGVzOjpmb3JVUkwoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwg
V2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgIFdl
YlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgp
LCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6
OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBXZWJVUkxOYW1l
UGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAogTlNBcnJh
eSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0
eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeVRJ
RkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6
OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQ
Ym9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsK
KyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjps
ZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pOwogICAgIHJl
dHVybiB0eXBlczsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRo
QXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5
cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbmlsXSk7CisgICAgc3RhdGljIE5TQXJyYXkg
KnR5cGVzID0gcmV0YWluKEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5
cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZV0pOwogICAgIHJldHVybiB0eXBlczsKIH0KIAog
TlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JTZWxlY3Rpb24oKQogewotICAgIHN0YXRpYyBO
U0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldlYkFyY2hp
dmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2Vi
Q29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5pbF0p
OworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRU
eXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKTsKICAgICByZXR1cm4g
dHlwZXM7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCmluZGV4IDFkMDA4M2M1N2NiZWE5
N2RlYjdiOTBlZGNiMTc4ZDAzZmZlNDJkZTMuLjE2NGY2MGVjY2NjNWQ2NzYzZjVhOTNkMDczYzI4
YTI3NTIwZGJiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAj
aW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KIAogc3RhdGljIFdLRXJyb3JDb2RlIHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjpl
cnJvcl9jb2RlJiBlcnJvcikKIHsKQEAgLTkzLDEwICs5NCw3IEBAIC0gKHZvaWQpbG9va1VwQ29u
dGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRp
b25IYW5kCiAtICh2b2lkKWdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOih2
b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+KikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBf
Y29udGVudFJ1bGVMaXN0U3RvcmUtPmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZp
ZXJzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5PE5T
U3RyaW5nICo+ICpuc0lkZW50aWZpZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5OmlkZW50aWZpZXJzLnNpemUoKV07Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgaWRlbnRp
ZmllciA6IGlkZW50aWZpZXJzKQotICAgICAgICAgICAgW25zSWRlbnRpZmllcnMgYWRkT2JqZWN0
OmlkZW50aWZpZXJdOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuc0lkZW50aWZpZXJzKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlTlNBcnJheShpZGVudGlmaWVycykuZ2V0
KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDAzMjU4NDU3MWNiNjNkYmU2YjQ5YTc5NTNmNmU4
ZDZkN2U4M2UzNzUuLmY1ZWFjZWUwZThjZTNiMzE0OTM0NTQxMGY5YTI2MWQ1MjdlMzkxMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC02MTAsMTAg
KzYxMSw3IEBAIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0
YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdl
c09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogewog
ICAgIF9wcm9jZXNzUG9vbC0+YWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGlu
ZyhwaWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChWZWN0b3I8U3RyaW5nPiYmIGFjdGl2ZVBhZ2VzT3JpZ2lucykgewotICAgICAgICBOU011
dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYXJyYXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTphY3RpdmVQYWdlc09yaWdpbnMuc2l6ZSgpXSBhdXRvcmVsZWFzZV07
Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogYWN0aXZlUGFnZXNPcmlnaW5zKQotICAgICAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpvcmlnaW5dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhcnJheSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5TQXJyYXkoYWN0aXZl
UGFnZXNPcmlnaW5zKS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDU4OGE4NmI0MjBjNDAy
ZDE5NGI4MGU5YzY4NjA3M2Y3NzMwMWQ0NzIuLjhlMTBlZmZlYmU3NWFmMmU2ZWFiNWE3MTlhMzZm
ZGNjMTBjOGJmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlclNjcmlwdC5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiV0tVc2VyU2NyaXB0
SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLVXNl
clNjcmlwdAogCkBAIC04NCw3ICs4NSw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2Vi
Q29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6
Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3Qp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVz
ZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRl
VW5pcXVlVVJMKCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVj
dG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6Oldh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpA
QCAtOTQsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmlu
ZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJT
Y3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNl
KSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0
KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KQEAgLTExMCw3ICsxMTEsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6
OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3Jh
cHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0
cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIG1ha2VW
ZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMjAsNyArMTIxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2Ny
aXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFz
c29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6
OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVs
aXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3Jl
VXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTMw
LDcgKzEzMSw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICop
c291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluCiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlw
dCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM6OkluamVjdEluQWxsRnJhbWVzLCBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbiA/IFdl
YkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyA6IFdlYkNvcmU6
OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVs
aXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3Jl
VXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbiA/IFdlYkNvcmU6OldhaXRGb3JOb3RpZmlj
YXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyA6IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYzODc3MjM5YjBiNjVjMDc0Yjky
MzVhLi43MDhiNDk2YjdlMTlhMzBjOWIwMmE0ZTBlOWZiZGM1MjEwNzVhMGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEzNiw2ICsx
MzYsNyBAQAogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29h
Lmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTQzOCw3ICs0MzksNyBAQCAtICh2b2lkKV9zZXR1cFBhZ2VD
b25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0
aW9uCiAgICAgICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6
V2ViUGFnZUdyb3VwOjpjcmVhdGUoZ3JvdXBJZGVudGlmaWVyKS5wdHIoKSk7CiAgICAgfQogCi0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKFdl
YkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRp
b24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhtYWtlVmVjdG9yPFN0cmluZz4o
W19jb25maWd1cmF0aW9uIF9hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc10pKTsKIAogICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTdXBwcmVzc2VzSW5jcmVtZW50
YWxSZW5kZXJpbmcoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVy
aW5nXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggN2FhN2QxMWVhMDdjNmU0MjI2NTM3
YjFjZjAxYTM4MzBjOWNlMWRjMC4uOWJhYjhjOGQzNmQ2ZTgxNWYyODExNGNhMGJjZmIxNDQ5YzU2
ZDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTg5NywyMCAr
ODk4LDEyIEBAIC0gKFdLV2Vic2l0ZURhdGFTdG9yZSAqKV93ZWJzaXRlRGF0YVN0b3JlSWZFeGlz
dHMKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIHsK
LSAgICBhdXRvJiB2ZWN0b3IgPSBfcGFnZUNvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0
ZXJucygpOwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGF1dG8mIHBhdHRlcm4gOiB2
ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6cGF0dGVybl07Ci0gICAgcmV0dXJuIGFy
cmF5OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9wYWdlQ29uZmlndXJhdGlvbi0+Y29yc0Rp
c2FibGluZ1BhdHRlcm5zKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpX3NldENPUlNE
aXNhYmxpbmdQYXR0ZXJuczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhdHRlcm5zCiB7Ci0gICAg
VmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHBhdHRlcm5zLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpwYXR0ZXJuIGluIHBhdHRlcm5z
KQotICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHBhdHRlcm4pOwotICAgIF9wYWdlQ29u
ZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdURk1vdmUodmVjdG9yKSk7Cisg
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobWFrZVZlY3Rv
cjxTdHJpbmc+KHBhdHRlcm5zKSk7CiB9CiAKIC0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdvcms6
KEJPT0wpbG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggMTlmYTRmMGUxMDY4YTRjYTg2ZWM4OTg0YzJkYmE5
NTI0ZjUzNDI5OS4uOWFkMDNkNTkyYjgxZTMzM2FkZThlZTdiOTg4MTRjMjUxZTRmYTkzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rl
c3RpbmcubW0KQEAgLTY2LDcgKzY2LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRlbnRzT2ZV
c2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcgKil1c2VySW50ZXJmYWNlSXRlbQogICAgICAgICBh
dXRvKiB2YWxpZGF0aW9uQnViYmxlID0gX3BhZ2UtPnZhbGlkYXRpb25CdWJibGUoKTsKICAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+
bWVzc2FnZSgpIDogZW1wdHlTdHJpbmcoKTsKICAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmFs
aWRhdGlvbkJ1YmJsZSA/IHZhbGlkYXRpb25CdWJibGUtPmZvbnRTaXplKCkgOiAwOwotICAgICAg
ICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAq
KW1lc3NhZ2UsIEAiZm9udFNpemUiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpmb250U2l6
ZV0gfSB9OworICAgICAgICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2Fn
ZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9udFNpemUiOiBAKGZvbnRTaXplKSB9IH07CiAg
ICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLm1t
CmluZGV4IDI0ZDQ2NzhjOWU2ZGUzOGE4YzFjZGNmOWIwOTVjNWQxYTliNDZiZTcuLjI3YTEzNWIy
ZGZjMzFkZDBiMzk4MGY0YTdkNTg4MGMyNjZmNTMzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlv
bi5tbQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogCisjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KKwogQGltcGxlbWVudGF0aW9uIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbgog
CiAtICh2b2lkKWRlYWxsb2MKQEAgLTUyLDE0ICs1NCwxMCBAQCAtIChCT09MKW1hZGVIVFRQUwog
CiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopbm90aWZpY2F0aW9ucwogewotICAgIGNvbnN0IGF1
dG8mIHZlY3RvciA9IF9hY3Rpb24tPm5vdGlmaWNhdGlvbnMoKTsKKyAgICBhdXRvJiB2ZWN0b3Ig
PSBfYWN0aW9uLT5ub3RpZmljYXRpb25zKCk7CiAgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYXJy
YXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6
ZSgpXSBhdXRvcmVsZWFzZV07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBub3RpZmljYXRpb24gOiB2
ZWN0b3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6bm90aWZpY2F0aW9uXTsKLSAgICByZXR1
cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkodmVjdG9yKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0KaW5k
ZXggZGRlZjcxZjhlNDQzNTBlMjBiZjFiZDc2NGI4YTlhZTZmZGM2ZDIxYy4uNTBlZTg0NWJiZDU4
ZDFkMGU4MjEzZDRiYTkzZjVjZWU4NzhmOWU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgi
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLQ3VzdG9tSGVhZGVyRmllbGRzCiAKQEAgLTY4LDIw
ICs2OSwxMiBAQCAtICh2b2lkKXNldEZpZWxkczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5T
U3RyaW5nICo+ICopZmllbGRzCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0aGlyZFBhcnR5
RG9tYWlucwogewotICAgIGF1dG8mIGRvbWFpbnMgPSBfZmllbGRzLT50aGlyZFBhcnR5RG9tYWlu
cygpOwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpkb21haW5zLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmRvbWFpbl07Ci0gICAgcmV0dXJuIGFycmF5
OworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9maWVsZHMtPnRoaXJkUGFydHlEb21haW5zKCkp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0VGhpcmRQYXJ0eURvbWFpbnM6KE5TQXJy
YXk8TlNTdHJpbmcgKj4gKil0aGlyZFBhcnR5RG9tYWlucwogewotICAgIFZlY3RvcjxTdHJpbmc+
IGRvbWFpbnM7Ci0gICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRoaXJkUGFydHlE
b21haW5zLmNvdW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gaW4gdGhpcmRQYXJ0eURv
bWFpbnMpCi0gICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFpbik7Ci0gICAgX2Zp
ZWxkcy0+c2V0VGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgX2ZpZWxk
cy0+c2V0VGhpcmRQYXJ0eURvbWFpbnMobWFrZVZlY3RvcjxTdHJpbmc+KHRoaXJkUGFydHlEb21h
aW5zKSk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbQppbmRleCAxOGRhZTFjNTA1YTJkMDY4NzQwZDU1OWNmMGFkMzFlYTE3MmM3
YzA3Li5hZDM2NWJjYjFmNTFhZGIwNmU3NjI2MTYzM2UxODVkOGMxNWNhZWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkxlZ2Fj
eUdsb2JhbFNldHRpbmdzLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW1w
bGVtZW50YXRpb24gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uCiAKQEAgLTE3Niw1MSArMTc3
LDIyIEBAIC0gKHZvaWQpc2V0V2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcjooTlNVSW50ZWdlcilp
ZGVudGlmaWVyCiAKIC0gKE5TQXJyYXkgKiljYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcwogewot
ICAgIGF1dG8gc2NoZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmNhY2hlUGFydGl0
aW9uZWRVUkxTY2hlbWVzKCk7Ci0gICAgaWYgKHNjaGVtZXMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gQFtdOwotCi0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IHNjaGVtZSA6IHNjaGVtZXMpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nICop
c2NoZW1lXTsKLQotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShf
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
OihOU0FycmF5ICopY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMKIHsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBzY2hlbWVzOwotICAgIGZvciAoaWQgdXJsU2NoZW1lIGluIGNhY2hlUGFydGl0aW9uZWRV
UkxTY2hlbWVzKSB7Ci0gICAgICAgIGlmIChbdXJsU2NoZW1lIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBzY2hlbWVzLmFwcGVuZChTdHJpbmcoKE5TU3RyaW5n
ICopdXJsU2NoZW1lKSk7Ci0gICAgfQotICAgIAotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOworICAg
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
KG1ha2VWZWN0b3I8U3RyaW5nPihjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykpOwogfQogCiAt
IChOU0FycmF5ICopYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzCiB7Ci0gICAgYXV0byYgc2No
ZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lcygpOwotICAgIGlmIChzY2hlbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEBbXTsK
LQotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhD
YXBhY2l0eTpzY2hlbWVzLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiBzY2hlbWUgOiBzY2hlbWVz
KQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXNjaGVtZV07Ci0KLSAgICBy
ZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi0+YWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKCkpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKHZvaWQpc2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOihOU0FycmF5ICopYWx3
YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2NoZW1lczsK
LSAgICBzY2hlbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLmNvdW50KTsKLSAgICBmb3IgKGlkIHNjaGVtZSBpbiBhbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXMpIHsKLSAgICAgICAgaWYgKFtzY2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKLSAgICAgICAgICAgIHNjaGVtZXMuYXBwZW5kKChOU1N0cmluZyAqKXNjaGVtZSk7
Ci0gICAgfQotCi0gICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0QWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOworICAgIF9wcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24tPnNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyhtYWtlVmVjdG9yPFN0cmlu
Zz4oYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFs
LmgKaW5kZXggNzU5MWJlY2VlMTRmMDM0ODY2YjE3MTc0YjllNzMyNTM2OGYwYjQ0OS4uMjg2ZDJi
MzI0NjFjZGE4MjM1MmU5YmZiYWQyNTQ1YjY0ZTMyYzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxk
SW50ZXJuYWwuaApAQCAtMjcsMjYgKzI3LDYgQEAKIAogQGNsYXNzIFdLQ29udGVudFdvcmxkOwog
Ci1uYW1lc3BhY2UgQVBJIHsKLQotaW5saW5lIFZlY3RvcjxXVEY6OlN0cmluZz4gdG9TdHJpbmdW
ZWN0b3IoTlNBcnJheSAqaW5wdXQpCi17Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiB2ZWN0b3I7
Ci0KLSAgICBOU1VJbnRlZ2VyIHNpemUgPSBpbnB1dC5jb3VudDsKLSAgICBpZiAoIXNpemUpCi0g
ICAgICAgIHJldHVybiB2ZWN0b3I7Ci0KLSAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKTsKLSAgICBmb3IgKGlkIHN0cmluZyA6IGlucHV0KSB7Ci0gICAgICAgIGlmIChbc3Ry
aW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICB2ZWN0b3Iu
dW5jaGVja2VkQXBwZW5kKHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0K
LX0KLQogQGludGVyZmFjZSBfV0tVc2VyQ29udGVudFdvcmxkICgpIDxXS09iamVjdD4gewogQHBh
Y2thZ2UKICAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF9jb250ZW50V29ybGQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0KaW5kZXggNjQyM2JjYjk1Yzc2M2Y0MGY3NTRiMjllMDEzMWVhODRmYzBlMTNiOC4uNDZh
ZjhhZDJiYzQ5MjZmYWU4MTI5NGFlNmJhMjg5MzE3YTg0NzBjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS1Vz
ZXJTdHlsZVNoZWV0CiAKQEAgLTcxLDcgKzcyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4K
ICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVl
VVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhp
cy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXpl
V2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5n
KHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdh
Y3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
KyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+
KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJ
OjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgbWFrZVZlY3RvcjxTdHJpbmc+
KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBm
b3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtODQsNyArODUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6
KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbgogICAgIC8v
IEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVs
b3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdo
ZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQy
KCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxl
U2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNl
KSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZT
dHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6
OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSkgfSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCks
IG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA3NmRmZmZlNzNjY2Qw
NzM0YWMwZjkyMzcwMGFhZWY3NzcwNWJlYTk0Li40NmFmNzNiNDM3OWZjNzc2MWYwNGQzMjRiYzZi
YmFkN2RmZjE0ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtMTI2LDYgKzEyNiw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNpZiBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtMzY2OCw3ICszNjY5LDcgQEAgaWQgV2Vi
Vmlld0ltcGw6OmFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRl
LCBpZCBwYXJhbWV0ZXIpCiAKICAgICAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpj
aGlsZF07CisgICAgICAgIHJldHVybiBAW2NoaWxkXTsKICAgICB9CiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdKQogICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlOwpAQCAtNDA0MywxMSArNDA0NCw3IEBA
IGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5m
bz4gZHJhZ2dpbmdJbmZvKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzOwotCi0gICAgICAgIGZvciAoTlNTdHJp
bmcgKmZpbGUgaW4gZmlsZXMpCi0gICAgICAgICAgICBmaWxlTmFtZXMuYXBwZW5kKGZpbGUpOwot
ICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoZmlsZU5hbWVz
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAg
ICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKG1ha2VWZWN0b3I8
U3RyaW5nPihmaWxlcyksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25G
b3JVcGxvYWQpOwogICAgIH0KIAogICAgIFN0cmluZyBkcmFnZ2luZ1Bhc3RlYm9hcmROYW1lID0g
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lOwpAQCAtNDMzNSw3ICs0MzMyLDcg
QEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBpZiAoIW1fcHJvbWlzZWRVUkwuaXNFbXB0
eSgpKQogICAgICAgICBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1f
cHJvbWlzZWRVUkwpOwogCi0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0
aCBsYXN0UGF0aENvbXBvbmVudF1dOworICAgIHJldHVybiBAW1twYXRoIGxhc3RQYXRoQ29tcG9u
ZW50XV07CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiYmIGNv
bXBsZXRpb24pCkBAIC00NzQ5LDcgKzQ3NDYsNyBAQCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiBXZWJWaWV3SW1wbDo6Y29sbGVjdEtleWJvYXJkTGF5b3V0Q29tbWFuZHNGb3JFdgog
ICAgIGlmIChOU1RleHRJbnB1dENvbnRleHQgKmNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKICAg
ICAgICAgW2NvbnRleHQgaGFuZGxlRXZlbnRCeUtleWJvYXJkTGF5b3V0OmV2ZW50XTsKICAgICBl
bHNlCi0gICAgICAgIFttX3ZpZXcgaW50ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpldmVudF1dOworICAgICAgICBbbV92aWV3IGludGVycHJldEtleUV2ZW50czpAW2V2
ZW50XV07CiAKICAgICBtX2NvbGxlY3RlZEtleXByZXNzQ29tbWFuZHMgPSBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9j
ZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggYThhN2I2NWY0NmYwOTBlNzMwZmFjMjlkOWIxYTNk
MTFlMzQzNDdiZi4uNTZmN2VkMjQ4MjZmNDk3NDY3NjM5ZjAxY2YwOTgyMWU1ZWY2MmYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vz
c1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1Bs
dWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGludGVyZmFjZSBXS1BsYWNlaG9sZGVyTW9kYWxXaW5kb3cg
OiBOU1dpbmRvdyAKQEAgLTI1MSwxMSArMjUyLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6
OmxhdW5jaFByb2Nlc3MoY29uc3QgU3RyaW5nJiBsYXVuY2hQYXRoLCBjb25zdCBWZWN0b3I8U3QK
ICAgICBpZiAoIXNob3VsZExhdW5jaFByb2Nlc3MobV9wbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywg
bGF1bmNoUGF0aCwgYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJndW1lbnRzQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YXJndW1l
bnRzLnNpemUoKV0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUo
KTsgKytpKQotICAgICAgICBbYXJndW1lbnRzQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKWFy
Z3VtZW50c1tpXV07Ci0KLSAgICBbTlNUYXNrIGxhdW5jaGVkVGFza1dpdGhMYXVuY2hQYXRoOmxh
dW5jaFBhdGggYXJndW1lbnRzOmFyZ3VtZW50c0FycmF5LmdldCgpXTsKKyAgICBbTlNUYXNrIGxh
dW5jaGVkVGFza1dpdGhMYXVuY2hQYXRoOmxhdW5jaFBhdGggYXJndW1lbnRzOmNyZWF0ZU5TQXJy
YXkoYXJndW1lbnRzKS5nZXQoKV07CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAK
QEAgLTI2NSwxMCArMjYyLDEwIEBAIHN0YXRpYyBib29sIGlzSmF2YVVwZGF0ZXJVUkwoY29uc3Qg
UGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblByb2Nlc3NBdHRyaWJ1CiAgICAgaWYgKCFb
dXJsIGlzRmlsZVVSTF0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TQXJyYXkgKmph
dmFVcGRhdGVyQXBwTmFtZXMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAiSmF2YSBVcGRh
dGVyLmFwcCIsIEAiSmF2YVVwZGF0ZXIuYXBwIiwgbmlsXTsKKyAgICBOU0FycmF5ICpqYXZhVXBk
YXRlckFwcE5hbWVzID0gQFtAIkphdmEgVXBkYXRlci5hcHAiLCBAIkphdmFVcGRhdGVyLmFwcCJd
OwogCiAgICAgZm9yIChOU1N0cmluZyAqamF2YVVwZGF0ZXJBcHBOYW1lIGluIGphdmFVcGRhdGVy
QXBwTmFtZXMpIHsKLSAgICAgICAgTlNTdHJpbmcgKmphdmFVcGRhdGVyUGF0aCA9IFtOU1N0cmlu
ZyBwYXRoV2l0aENvbXBvbmVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooTlNTdHJpbmcg
KilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5tb2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVz
b3VyY2VzIiwgamF2YVVwZGF0ZXJBcHBOYW1lLCBuaWxdXTsKKyAgICAgICAgTlNTdHJpbmcgKmph
dmFVcGRhdGVyUGF0aCA9IFtOU1N0cmluZyBwYXRoV2l0aENvbXBvbmVudHM6QFsoTlNTdHJpbmcg
KilwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5tb2R1bGVJbmZvLnBhdGgsIEAiQ29udGVudHMvUmVz
b3VyY2VzIiwgamF2YVVwZGF0ZXJBcHBOYW1lXV07CiAgICAgICAgIGlmIChbdXJsLnBhdGggaXNF
cXVhbFRvU3RyaW5nOmphdmFVcGRhdGVyUGF0aF0pCiAgICAgICAgICAgICByZXR1cm4gWUVTOwog
ICAgIH0KQEAgLTI4OSwyMCArMjg2LDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWCiAgICAg
aWYgKCFzaG91bGRMYXVuY2hBcHBsaWNhdGlvbkF0VVJMKG1fcGx1Z2luUHJvY2Vzc0F0dHJpYnV0
ZXMsIHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFyZ3VtZW50c0FycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFyZ3VtZW50cy5zaXpl
KCldKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkK
LSAgICAgICAgW2FyZ3VtZW50c0FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKilhcmd1bWVudHNb
aV1dOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBOU0Rp
Y3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0OmFyZ3VtZW50c0FycmF5LmdldCgpIGZvcktleTpOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3Vy
YXRpb25Bcmd1bWVudHNdOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBAeyBOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25B
cmd1bWVudHM6IGNyZWF0ZU5TQXJyYXkoYXJndW1lbnRzKS5nZXQoKSB9OwogICAgIFtbTlNXb3Jr
c3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBsYXVuY2hBcHBsaWNhdGlvbkF0VVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOnVybFN0cmluZ10gb3B0aW9uczpOU1dvcmtzcGFjZUxhdW5jaEFzeW5jIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbiBlcnJvcjpudWxscHRyXTsKLSAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBpc1NpbHZlcmxp
Z2h0UHJlZmVyZW5jZXNVUkwoY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBOU1VSTCAq
c2lsdmVybGlnaHRQcmVmZXJlbmNlc1VSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGhDb21wb25l
bnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KE5TU3RyaW5nICopcGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291cmNlcy9TaWx2ZXJsaWdo
dCBQcmVmZXJlbmNlcy5hcHAiLCBuaWxdXTsKKyAgICBOU1VSTCAqc2lsdmVybGlnaHRQcmVmZXJl
bmNlc1VSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGhDb21wb25lbnRzOkBbKE5TU3RyaW5nICop
cGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRoLCBAIkNvbnRlbnRzL1Jlc291
cmNlcy9TaWx2ZXJsaWdodCBQcmVmZXJlbmNlcy5hcHAiXV07CiAKICAgICByZXR1cm4gW1tOU1VS
TCBVUkxXaXRoU3RyaW5nOnVybFN0cmluZ10gaXNFcXVhbDpzaWx2ZXJsaWdodFByZWZlcmVuY2Vz
VVJMXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IGRiMGFiYjgyMTZkNmNlNDE3
ZGI1OGNhNmVhOWQwZWVmNGE1YjMzYzkuLjJiODhjOWZjNzIyZTYwZGZhNTViMTdkOTgxMWZiZjky
YmZjMTk4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtNTMsOCArNTMsOCBAQCBI
aWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX21hbmFn
ZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrSU9I
SURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0RpY3Rpb25hcnkgKm1hdGNoaW5nRGljdGlvbmFy
eSA9IEB7Ci0gICAgICAgIEBrSU9ISURQcmltYXJ5VXNhZ2VQYWdlS2V5OiBhZG9wdE5TKFtOU051
bWJlciBudW1iZXJXaXRoSW50OmtDdGFwSGlkVXNhZ2VQYWdlXSkuZ2V0KCksCi0gICAgICAgIEBr
SU9ISURQcmltYXJ5VXNhZ2VLZXk6IGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6a0N0
YXBIaWRVc2FnZV0pLmdldCgpCisgICAgICAgIEBrSU9ISURQcmltYXJ5VXNhZ2VQYWdlS2V5OiBA
KGtDdGFwSGlkVXNhZ2VQYWdlKSwKKyAgICAgICAgQGtJT0hJRFByaW1hcnlVc2FnZUtleTogQChr
Q3RhcEhpZFVzYWdlKSwKICAgICB9OwogICAgIElPSElETWFuYWdlclNldERldmljZU1hdGNoaW5n
KG1fbWFuYWdlci5nZXQoKSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZiltYXRjaGluZ0RpY3Rp
b25hcnkpOwogICAgIElPSElETWFuYWdlclJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdDYWxsYmFjayht
X21hbmFnZXIuZ2V0KCksIGRldmljZUFkZGVkQ2FsbGJhY2ssIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IGZlNDkzZjk1MWU1YTM4YTcwNTVkODdk
NDg3MzEwOWMxZDg5ODk4YzUuLjU2NzEyNTU0YjZmNjJiODYwMTMwYjY3Mzc3ZTNmNDMzNmFiYzgy
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKFNlY0tl
eVJlZiwgTlNEYXRhICosIE5TRGF0YSAqLCBBdHRlc3RhdAogCiAgICAgICAgIGF1dG8gYXR0ZXN0
YXRpb25DZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShO
VUxMLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
QmFzZTY0RW5jb2RlZFN0cmluZzpjb25maWd1cmF0aW9uLmxvY2FsLT51c2VyQ2VydGlmaWNhdGVC
YXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJz
XSkuZ2V0KCkpKTsKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRl
ID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBD
RkRhdGFSZWYpYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3Ry
aW5nOmNvbmZpZ3VyYXRpb24ubG9jYWwtPmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQg
b3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0
KCkpKTsKLSAgICAgICAgY2FsbGJhY2soW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogKF9fYnJp
ZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3Rh
dGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpLCBuaWxdLCBOVUxMKTsKKyAgICAgICAgY2Fs
bGJhY2soQFsgKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksIChfX2Jy
aWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpXSwgTlVMTCk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDUyOWFjNDM0NjdiMWI2ZThjZmZiMTE0ZWMx
YTA3ODg1MDM3MjZhYjAuLmFmZmFhYzU2MDI2YmIxMjdkYmExZmVkZjZlNTNmY2ZkMGQyNzdmZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTE5LDggKzExOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Zp
c2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlv
blJlY3QuaD4gLy8gRklYTUU6IFdLMiBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0IGhlYWRlcnMh
Ci0jaW1wb3J0IDxwYWwvaW9zL01hbmFnZWRDb25maWd1cmF0aW9uU29mdExpbmsuaD4KKyNpbXBv
cnQgPFdlYktpdC9XZWJTZWxlY3Rpb25SZWN0Lmg+IC8vIEZJWE1FOiBXZWJLaXQgc2hvdWxkIG5v
dCBpbmNsdWRlIFdlYktpdExlZ2FjeSBoZWFkZXJzIQogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVT
UEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KQEAgLTEz
NSw2ICsxMzQsNyBAQAogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYv
V2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTY4LDYgKzE2OCw4IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2VuZGlmCiAKKyNpbXBv
cnQgPHBhbC9pb3MvTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0TGluay5oPgorCiAjaWYgSEFWRShM
SU5LX1BSRVZJRVcpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogc3RhdGljIE5TU3RyaW5nICogY29u
c3Qgd2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVuY2VLZXkgPSBAIldlYktpdFNob3dMaW5r
UHJldmlld3MiOwogI2VuZGlmCkBAIC0zMTg1LDcgKzMxODcsNyBAQCAtIChOU0RpY3Rpb25hcnkg
Kil0ZXh0U3R5bGluZ0F0UG9zaXRpb246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJl
Y3Rpb246KAogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDooaWQpZm9udC5nZXQoKSBmb3JLZXk6
TlNGb250QXR0cmlidXRlTmFtZV07CiAgICAgCiAgICAgaWYgKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
ZWJLaXQ6OkF0dHJpYnV0ZVVuZGVybGluZSkKLSAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5TVW5k
ZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChO
U1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5h
bWVdOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM5ODQsMTAgKzM5ODYsNyBAQCAtICh2
b2lkKXJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25Db21tYW5kc1dpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOUwogICAgICAgICB9CiAKICAgICAgICAgc3Ryb25nU2VsZi0+X3Bh
Z2UtPnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihbY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildIChhdXRvJiByZWN0cykgewotICAgICAgICAgICAgYXV0byByZWN0c0Fz
VmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OnJlY3RzLnNpemUoKV0pOwotICAgICAgICAgICAgZm9yIChhdXRvJiBmbG9hdFJlY3QgOiByZWN0
cykKLSAgICAgICAgICAgICAgICBbcmVjdHNBc1ZhbHVlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFs
dWVXaXRoQ0dSZWN0OmZsb2F0UmVjdF1dOwotICAgICAgICAgICAgY29tcGxldGlvbihyZWN0c0Fz
VmFsdWVzLmdldCgpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0
cykuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTc0MDAsNyArNzM5OSw3IEBA
IC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5nVG9T
ZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpCiAgICAgZm9yIChOU0l0ZW1Qcm92aWRlciAqaXRlbVBy
b3ZpZGVyIGluIGFkanVzdGVkSXRlbVByb3ZpZGVycykgewogICAgICAgICBhdXRvIGl0ZW0gPSBh
ZG9wdE5TKFtbVUlEcmFnSXRlbSBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6aXRlbVByb3Zp
ZGVyXSk7CiAgICAgICAgIFtpdGVtIF9zZXRQcml2YXRlTG9jYWxDb250ZXh0OkAoc3RhZ2VkRHJh
Z1NvdXJjZS5pdGVtSWRlbnRpZmllcildOwotICAgICAgICBbZHJhZ0l0ZW1zIGFkZE9iamVjdDpp
dGVtLmF1dG9yZWxlYXNlKCldOworICAgICAgICBbZHJhZ0l0ZW1zIGFkZE9iamVjdDppdGVtLmdl
dCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gZHJhZ0l0ZW1zOwpAQCAtODQzMCw3ICs4NDI5LDYg
QEAgLSAoTlNEaWN0aW9uYXJ5ICopX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJp
bmcgKil1c2VySW50ZXJmYWNlSXRlbQogICAgICAgICAgICAgICAgIEAiaXNJbWFnZSI6IFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlXSwKICAgICAg
ICAgICAgICAgICBAImltYWdlVVJMIjogX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkwuaXNW
YWxpZCgpID8gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFn
ZVVSTCkgOiBAIiIKICAgICAgICAgICAgIH0gfTsKLQogICAgICAgICBOU1N0cmluZyAqdXJsID0g
W19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgcHJldmlld0RhdGFdW1VJUHJldmlld0RhdGFMaW5rXTsK
ICAgICAgICAgcmV0dXJuIEB7IHVzZXJJbnRlcmZhY2VJdGVtOiBAewogICAgICAgICAgICAgQCJ1
cmwiOiB1cmwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXggMmY5MmJiNmU0YWMwYWU3NjM4MWRjZDkxNjExZDU2
Y2U5ZjI5YTZiMy4uZDhiMzAwNmI1ZDAxOTJiMDA5YzNkYWYxZTFmYjA1ZmU1YWRmODAwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxv
YWRQYW5lbC5tbQpAQCAtNjY2LDEyICs2NjYsMTIgQEAgLSAodm9pZClpbWFnZVBpY2tlckNvbnRy
b2xsZXI6KFVJSW1hZ2VQaWNrZXJDb250cm9sbGVyICopaW1hZ2VQaWNrZXIgZGlkRmluaXNoUGkK
IAogICAgIFtzZWxmIF9kaXNtaXNzRGlzcGxheUFuaW1hdGVkOllFU107CiAKLSAgICBbc2VsZiBf
cHJvY2Vzc01lZGlhSW5mb0RpY3Rpb25hcmllczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6aW5m
b10KKyAgICBbc2VsZiBfcHJvY2Vzc01lZGlhSW5mb0RpY3Rpb25hcmllczpAW2luZm9dCiAgICAg
ICAgIHN1Y2Nlc3NCbG9jazpeKE5TQXJyYXkgKnByb2Nlc3NlZFJlc3VsdHMsIE5TU3RyaW5nICpk
aXNwbGF5U3RyaW5nKSB7CiAgICAgICAgICAgICBBU1NFUlQoW3Byb2Nlc3NlZFJlc3VsdHMgY291
bnRdID09IDEpOwogICAgICAgICAgICAgX1dLRmlsZVVwbG9hZEl0ZW0gKnJlc3VsdCA9IFtwcm9j
ZXNzZWRSZXN1bHRzIG9iamVjdEF0SW5kZXg6MF07CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgIFtzZWxmIF9j
aG9vc2VGaWxlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cmVzdWx0LmZpbGVVUkxdIGRpc3Bs
YXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZV07Cisg
ICAgICAgICAgICAgICAgW3NlbGYgX2Nob29zZUZpbGVzOkBbcmVzdWx0LmZpbGVVUkxdIGRpc3Bs
YXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZV07CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBmYWlsdXJlQmxvY2s6XnsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tl
ci5tbQppbmRleCBmZTM5ZjgzN2JmNDQ0ZWVkM2E5ODBhYjk3ZmFmNDQ2M2I3MDg3MGRkLi5jZTY3
ODQyYzdmZTAzYjUxYzY2MGExODk2NTIyMzcyOWUxNTVmZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yUGlja2VyLm1tCkBAIC0x
MTIsOCArMTEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBjb2xvck1hdHJpeDooTlNBcnJheTxOU0FycmF5PFVJQ29sb3IKICAgICAgICAgICAgIFtidXR0
b25zIGFkZE9iamVjdDpidXR0b25dOwogICAgICAgICAgICAgW3NlbGYgYWRkU3VidmlldzpidXR0
b25dOwogICAgICAgICB9Ci0gICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBjb2xvckJ1dHRvbnNS
b3cgPSBidXR0b25zOwotICAgICAgICBbY29sb3JCdXR0b25zIGFkZE9iamVjdDpjb2xvckJ1dHRv
bnNSb3cuZ2V0KCldOworICAgICAgICBbY29sb3JCdXR0b25zIGFkZE9iamVjdDpidXR0b25zXTsK
ICAgICB9CiAgICAgX2NvbG9yQnV0dG9ucyA9IGNvbG9yQnV0dG9uczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggZmU0ZTg0NjY5ODBi
NzM1OGEwOWNhMTE5ZDJjMjM3MGNmNWQ5MTVmZC4uNzIzYjMyNmY0ZjRmMjg4ZGVmNGIwMzdjNjQ3
MjY1ZDVkOWI5OGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Nv
cnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvQ29ycmVj
dGlvblBhbmVsLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlv
bkluZGljYXRvclR5cGUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRl
eHRUeXBlKQogewpAQCAtNjUsMjggKzY2LDI1IEBAIENvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rp
b25QYW5lbCgpCiB2b2lkIENvcnJlY3Rpb25QYW5lbDo6c2hvdyhOU1ZpZXcgKnZpZXcsIFdlYlZp
ZXdJbXBsJiB3ZWJWaWV3SW1wbCwgQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewogICAgIGRpc21pc3NJbnRl
cm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCwgZmFsc2UpOwot
ICAgIAorCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBOU0ludGVnZXIg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSB3ZWJWaWV3SW1wbC5zcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpOwogCi0gICAgTlNTdHJpbmcqIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxh
Y2VkU3RyaW5nOwotICAgIE5TU3RyaW5nKiByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSBy
ZXBsYWNlbWVudFN0cmluZzsKKyAgICBOU1N0cmluZyAqcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5n
ID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0
cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworCiAgICAgbV92aWV3ID0gdmlldzsKICAgICBtX3Nw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAgICAgTlND
b3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBpbmRpY2F0b3JUeXBlID0gY29ycmVjdGlvbkluZGljYXRv
clR5cGUodHlwZSk7CiAgICAgCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5n
cyA9IDA7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5z
aXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJp
bmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKLSAgICB9CisgICAgUmV0YWlu
UHRyPE5TQXJyYXk+IGFsdGVybmF0aXZlU3RyaW5nczsKKyAgICBpZiAoIWFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0g
Y3JlYXRlTlNBcnJheShhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAKICAgICBOU1Nw
ZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl07Ci0gICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpp
bmRpY2F0b3JUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFs
dGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgIFtzcGVsbENoZWNrZXIgc2hvd0Nv
cnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxh
Y2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJp
bmdzLmdldCgpIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmll
dzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJp
bmcpIHsKICAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudCh3ZWJWaWV3SW1wbCwgYWNj
ZXB0ZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdB
c05TU3RyaW5nLCBpbmRpY2F0b3JUeXBlKTsKICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCBkNzg2ZjExZDM5M2M3ZTRiNzg4
YmNlYzM2N2VhZTA5NmY3Zjc1MmUxLi4wMTYxOWE1ODNhOWU2ODZkMDQ2NmEyNTAyZWI1MmE3Yzlm
NTBlOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFj
Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tl
clNQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogQGludGVyZmFjZSBOU1NwZWxsQ2hlY2tlciAoV2ViTlNT
cGVsbENoZWNrZXJEZXRhaWxzKQpAQCAtNDM1LDEzICs0MzYsMTAgQEAgdm9pZCBUZXh0Q2hlY2tl
cjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBj
b25zdCBTdHIKIAogdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwg
Y29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBhdXRvIGNvcnJlY3Rp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChh
dXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykKLSAgICAgICAgW2NvcnJlY3Rpb25z
IGFkZE9iamVjdDpndWVzc107CiAgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWwgPSBAewogICAgICAg
ICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwu
cmFuZ2VdLAogICAgICAgICBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24gOiBncmFtbWFyRGV0YWls
LnVzZXJEZXNjcmlwdGlvbiwKLSAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0
aW9ucy5nZXQoKSwKKyAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjcmVhdGVOU0FycmF5
KGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykuZ2V0KCksCiAgICAgfTsKICAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3Ry
aW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRldGFpbF07CiB9CkBAIC00NTksMTAgKzQ1Nyw3
IEBAIHZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKFNwZWxsRG9jdW1lbnRUYWcg
c3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyCiAgICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5n
OmNvbnRleHQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNU
ZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkgb3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVu
dFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZyBvcnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29yZENv
dW50OjBdOwogICAgICAgICBsYW5ndWFnZSA9IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJhbmdl
Ok5TTWFrZVJhbmdlKDAsIGNvbnRleHQubGVuZ3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0aG9n
cmFwaHk6b3J0aG9ncmFwaHldOwogICAgIH0KLSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkgPSBb
Y2hlY2tlciBndWVzc2VzRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkp
IGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpz
cGVsbERvY3VtZW50VGFnXTsKLQotICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIHN0cmluZ3NB
cnJheSkKLSAgICAgICAgZ3Vlc3Nlcy5hcHBlbmQoZ3Vlc3MpOworICAgIGd1ZXNzZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgw
LCB3b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZ10pOwogfQogCiB2b2lkIFRleHRDaGVja2Vy
OjpsZWFybldvcmQoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4IDAxZTQzMjE2
MGRmMjljMTNiMjRlMzBhZGFmZTFkM2ZmNWE0OTFjNjEuLjU5MDRjNDI3OWY4MWY5YmMzOWVmZmJk
ZWEwZjY2ODg4NjE2ZGQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQ
cmludGluZ1ZpZXcubW0KQEAgLTE0NSw4ICsxNDUsOCBAQCAtICh2b2lkKV9hZGp1c3RQcmludGlu
Z01hcmdpbnNGb3JIZWFkZXJBbmRGb290ZXIKICAgICAgICAgQVNTRVJUKCFbaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldKTsK
ICAgICAgICAgb3JpZ2luYWxUb3BNYXJnaW4gPSBbaW5mbyB0b3BNYXJnaW5dOwogICAgICAgICBv
cmlnaW5hbEJvdHRvbU1hcmdpbiA9IFtpbmZvIGJvdHRvbU1hcmdpbl07Ci0gICAgICAgIFtpbmZv
RGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6b3JpZ2luYWxU
b3BNYXJnaW5dIGZvcktleTpXZWJLaXRPcmlnaW5hbFRvcFByaW50aW5nTWFyZ2luS2V5XTsKLSAg
ICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTpvcmlnaW5hbEJvdHRvbU1hcmdpbl0gZm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRp
bmdNYXJnaW5LZXldOworICAgICAgICBbaW5mb0RpY3Rpb25hcnkgc2V0T2JqZWN0OkAob3JpZ2lu
YWxUb3BNYXJnaW4pIGZvcktleTpXZWJLaXRPcmlnaW5hbFRvcFByaW50aW5nTWFyZ2luS2V5XTsK
KyAgICAgICAgW2luZm9EaWN0aW9uYXJ5IHNldE9iamVjdDpAKG9yaWdpbmFsQm90dG9tTWFyZ2lu
KSBmb3JLZXk6V2ViS2l0T3JpZ2luYWxCb3R0b21QcmludGluZ01hcmdpbktleV07CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUKFtvcmlnaW5hbFRvcE1hcmdpbk51bWJlciBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKTsKICAgICAgICAgQVNTRVJUKFtbaW5mb0RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggMzk2OGVkYTYzZGVkZTI5MDVlYzJm
NzBlNTU5YzFiOGRhOTQ0MDI4ZS4uMzZhYmRmZDI0NjVlNGRmZDUxMDI0M2RmN2Y5YTc4YzEwYjkx
YTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRl
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVy
Q2xpZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNp
bXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogLy8gRklYTUU6IEltcGxlbWVudCBzY3JvbGxGaW5k
TWF0Y2hUb1Zpc2libGUuCiAvLyBGSVhNRTogVGhlIE5TVGV4dEZpbmRlciBvdmVybGF5IGRvZXNu
J3QgbW92ZSB3aXRoIHNjcm9sbGluZzsgd2Ugc2hvdWxkIGhhdmUgYSBtb2RlIHdoZXJlIHdlIG1h
bmFnZSB0aGUgb3ZlcmxheS4KQEAgLTI3MCwzMSArMjcxLDIxIEBAIC0gKHZvaWQpc2Nyb2xsRmlu
ZE1hdGNoVG9WaXNpYmxlOihpZCA8TlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5k
TWF0Y2g+CiAKICNwcmFnbWEgbWFyayAtIEZpbmRNYXRjaGVzQ2xpZW50CiAKLXN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gYXJyYXlGcm9tUmVjdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiBtYXRjaFJlY3RzKQotewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNNYXRj
aFJlY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
Om1hdGNoUmVjdHMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiByZWN0IDogbWF0Y2hSZWN0cykK
LSAgICAgICAgW25zTWF0Y2hSZWN0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpy
ZWN0XV07Ci0gICAgcmV0dXJuIG5zTWF0Y2hSZWN0czsKLX0KLQogLSAodm9pZClkaWRGaW5kU3Ry
aW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
Pj4mKXJlY3RzRm9yTWF0Y2hlcyBkaWRXcmFwQXJvdW5kOihCT09MKWRpZFdyYXBBcm91bmQKIHsK
ICAgICBpZiAoX2ZpbmRSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gcmVwbHlDYWxsYmFjayA9IF9maW5kUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0
KCk7Ci0gICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IHJlY3RzRm9yTWF0Y2hlcy5zaXplKCk7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtYXRjaE9iamVjdHMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWF0Y2hDb3VudF0pOworICAgIGF1
dG8gbWF0Y2hDb3VudCA9IHJlY3RzRm9yTWF0Y2hlcy5zaXplKCk7CisgICAgYXV0byBtYXRjaE9i
amVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
bWF0Y2hDb3VudF0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaENvdW50OyBp
KyspIHsKICAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IG5zTWF0Y2hSZWN0czsKLQogICAgICAg
ICBpZiAoX3VzZVBsYXRmb3JtRmluZFVJKQotICAgICAgICAgICAgbnNNYXRjaFJlY3RzID0gYXJy
YXlGcm9tUmVjdHMocmVjdHNGb3JNYXRjaGVzW2ldKTsKKyAgICAgICAgICAgIG5zTWF0Y2hSZWN0
cyA9IGNyZWF0ZU5TQXJyYXkocmVjdHNGb3JNYXRjaGVzW2ldKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbnNNYXRjaFJlY3RzID0gQFtdOwotICAgICAgICBSZXRhaW5QdHI8V0tUZXh0Rmlu
ZGVyTWF0Y2g+IG1hdGNoID0gYWRvcHROUyhbW1dLVGV4dEZpbmRlck1hdGNoIGFsbG9jXSBpbml0
V2l0aENsaWVudDpzZWxmIHZpZXc6X3ZpZXcgaW5kZXg6aSByZWN0czpuc01hdGNoUmVjdHMuZ2V0
KCldKTsKLSAgICAgICAgW21hdGNoT2JqZWN0cyBhZGRPYmplY3Q6bWF0Y2guZ2V0KCldOworICAg
ICAgICBbbWF0Y2hPYmplY3RzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tUZXh0RmluZGVyTWF0Y2gg
YWxsb2NdIGluaXRXaXRoQ2xpZW50OnNlbGYgdmlldzpfdmlldyBpbmRleDppIHJlY3RzOm5zTWF0
Y2hSZWN0cy5nZXQoKV0pLmdldCgpXTsKICAgICB9CiAKICAgICByZXBseUNhbGxiYWNrKG1hdGNo
T2JqZWN0cy5nZXQoKSwgZGlkV3JhcEFyb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1h
Yy5tbQppbmRleCAzYmQ5NDFjNzI4OTcxNzBlY2MxNTdiOWZlYjU3ZGE1MzcyOGU4MTMzLi43ZDIw
MjQ0MzBlNjVmMTJmNzMyOTc3MTY3NzFkNmE2NmIxYTk2ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWMubW0KQEAgLTM3OSwxMCArMzc5LDEwIEBAIC0gKHZvaWQpdXBkYXRlV2l0aElu
Zm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9y
bWF0CiAKIC0gKHZvaWQpbm90aWZ5QWNjZXNzaWJpbGl0eUNsaWVudHM6KE5TU3RyaW5nICopaW5m
bwogewotICAgIE5TRGljdGlvbmFyeTxOU0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Vc2VySW5m
b0tleSwgaWQ+ICp1c2VySW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UHJpb3JpdHlLZXksIEAoTlNBY2Nlc3Np
YmlsaXR5UHJpb3JpdHlIaWdoKSwKLSAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QW5ub3VuY2VtZW50
S2V5LCBpbmZvLCBuaWxdOwotICAgIE5TQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb25XaXRo
VXNlckluZm8oTlNBcHAsIE5TQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudFJlcXVlc3RlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8pOworICAgIE5TQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb25X
aXRoVXNlckluZm8oTlNBcHAsIE5TQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudFJlcXVlc3RlZE5v
dGlmaWNhdGlvbiwgQHsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UHJpb3JpdHlLZXk6IEAoTlNB
Y2Nlc3NpYmlsaXR5UHJpb3JpdHlIaWdoKSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QW5ub3Vu
Y2VtZW50S2V5OiBpbmZvLAorICAgIH0pOwogfQogCiAtICh2b2lkKW1vdmVTZWxlY3Rpb25CeURp
cmVjdGlvbjooY29uc3QgU3RyaW5nJilkaXJlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGQyZDkwZTMzZjIyMWNkZjY0MDYxMWU2
NDlhNWFhMTRmYzE4MTJkYTkuLjgzNDMwN2M2OTVlODViYmUzMjUwNWY4NTQ5YmE2MThlN2YyMjNk
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWFyY2hXaXRoU3BvdGxp
Z2h0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJQYWdlUHJveHk6OnNlYXJjaFRoZVdl
Yihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQg
PSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpA
W2xlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9h
cmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBlOmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
OwogICAgIAogICAgIE5TUGVyZm9ybVNlcnZpY2UoQCJTZWFyY2ggV2l0aCAlV2ViU2VhcmNoUHJv
dmlkZXJAIiwgcGFzdGVib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaAppbmRl
eCAxNTFiOWJjZTA4NjU4NzdhYjNiNjhiN2ExMWEwYWNjMGVlMDJlMWQ1Li43YTNkZTgzYjJiYWIy
ZmI0NjkxMDc3MWE0NmRlOTJiZjY0NjM2ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJu
YWxzLmgKQEAgLTEwOSw4ICsxMDksNCBAQCBXS0RPTVRleHQgKnRvV0tET01UZXh0KFdlYkNvcmU6
OlRleHQqKTsKIFdlYkNvcmU6OlJhbmdlKiB0b1dlYkNvcmVSYW5nZShXS0RPTVJhbmdlICopOwog
V0tET01SYW5nZSAqdG9XS0RPTVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7CiAKLS8vIC0tIEhlbHBl
cnMgLS0KLQotTlNBcnJheSAqdG9OU0FycmF5KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5h
bHMubW0KaW5kZXggZjQxZTk0YzJkYTVmZmRhYzk2OWUxMjY1NjY4YTJhM2I4N2EzMDA2My4uNjNj
ZGQyYmMyYmM0Yjc5OGI1ODc3MGI0MzFmM2ExNjRkOWMwZGFjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01JbnRlcm5hbHMubW0KQEAgLTE2MSwxMyArMTYxLDQgQEAgc3RhdGljIFdLRE9NVHlwZSB0
b1dLRE9NVHlwZShXZWJDb3JlVHlwZSBpbXBsLCBET01DYWNoZTxXZWJDb3JlVHlwZSwgV0tET01U
eXBlPiYKICAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwogfQogCi1OU0FycmF5ICp0
b05TQXJyYXkoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cykKLXsKLSAgICBz
aXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUg
dmFsdWVXaXRoUmVjdDpyZWN0c1tpXV1dOwotICAgIHJldHVybiBhcnJheTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0KaW5kZXggZjljNTcxZGVlYjkz
NWNlODhiNDM3YWZhNjVkN2ZmZTc2NTNiYjE5Mi4uY2Q4MDYxZWMxYjIwM2YwMzM0NjdmNTQwYjkz
N2QwYzFiNzFiODQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQpAQCAtMzAsNiArMzAsNyBA
QAogI2ltcG9ydCAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0RPTUludGVybmFscy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0RPTU5vZGUKIApAQCAtMTEyLDcgKzExMyw3
IEBAIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgX2ltcGwtPnRleHRSZWN0cyhyZWN0cyk7
Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9OU0FycmF5KHJlY3RzKTsKKyAgICByZXR1cm4gY3JlYXRl
TlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApAQCAtMTIxLDggKzEyMiw3
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTU5vZGUgKFdLUHJpdmF0ZSkKIAogLSAoV0tCdW5kbGVO
b2RlSGFuZGxlUmVmKV9jb3B5QnVuZGxlTm9kZUhhbmRsZVJlZgogewotICAgIGF1dG8gbm9kZUhh
bmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1w
bC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVha1JlZigpKTsKKyAgICBy
ZXR1cm4gdG9BUEkoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRl
KF9pbXBsLmdldCgpKS5sZWFrUmVmKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5n
ZS5tbQppbmRleCAyMmJlNDYyNmRhMzJjNjM1NTlkMTBhMDI4ZmFlYWYyZDJhNjVjNzZmLi5hYzZm
ZmIxZTk3OGM4Mzg4MTJhOGIxMWIzNzIyNDkxOGVlZTI4ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
UmFuZ2UubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldLRE9NSW50ZXJuYWxzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0
cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbXBsZW1lbnRhdGlv
biBXS0RPTVJhbmdlCiAKQEAgLTEzMCw3ICsxMzEsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3Rz
CiAgICAgX2ltcGwtPm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHM7CiAgICAgX2lt
cGwtPmFic29sdXRlVGV4dFJlY3RzKHJlY3RzKTsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b05TQXJy
YXkocmVjdHMpOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChXS0RPTVJhbmdlICopcmFuZ2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlD
aGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJhY3RlcnMgaW5EaXJlY3Rpb246KFdLRE9NUmFuZ2VE
aXJlY3Rpb24pZGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQppbmRleCAw
ZTg5NGZjNDczMWM0Nzg5OGRkZDQ2YTAxMjk1NzdlZGE4NTc0NGVkLi5hNmRhOTE5YTIyZjc1ZDk3
M2E1OTdhYzk4MTEzNzhhYzIyY2RmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMu
bW0KQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJh
bWV0ZXIoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZQogICAgIH0KIAog
ICAgIGlmICghbV9idW5kbGVQYXJhbWV0ZXJzICYmIHBhcmFtZXRlcikKLSAgICAgICAgbV9idW5k
bGVQYXJhbWV0ZXJzID0gYWRvcHROUyhbW1dLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMgYWxs
b2NdIGluaXRXaXRoRGljdGlvbmFyeTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnldXSk7CisgICAg
ICAgIG1fYnVuZGxlUGFyYW1ldGVycyA9IGFkb3B0TlMoW1tXS1dlYlByb2Nlc3NCdW5kbGVQYXJh
bWV0ZXJzIGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6QHsgfV0pOwogCiAgICAgW21fYnVuZGxl
UGFyYW1ldGVycyBzZXRQYXJhbWV0ZXI6cGFyYW1ldGVyIGZvcktleTprZXldOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdp
blByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL1BsdWdpblByb3h5TWFjLm1tCmluZGV4IDU2NjFlZjk2ZmExZmU0NDhlZDI1YTY1ZjNmNGVh
YWUwMTU2M2JkOTIuLjM1MTNiMDM4NDRlYzAwMDAxY2Q4ZjQ3NWM2NDZiMDZlOTAwNGUzNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9Q
bHVnaW5Qcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZv
aWQgbWFrZVJlbmRlckxheWVyKENBTGF5ZXIgKnBsdWdpbkxheWVyLCB1aW50MzJfdCBsYXllckhv
c3RpbmdDb250ZXh0SUQKICAgICBDQUxheWVyICpyZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJf
cmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmxheWVySG9zdGluZ0NvbnRleHRJRF07CiAgICAgW3Jl
bmRlckxheWVyIHNldEZyYW1lOltwbHVnaW5MYXllciBib3VuZHNdXTsKICAgICBbcmVuZGVyTGF5
ZXIgc2V0QXV0b3Jlc2l6aW5nTWFzazprQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVp
Z2h0U2l6YWJsZV07Ci0gICAgW3BsdWdpbkxheWVyIHNldFN1YmxheWVyczpbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6cmVuZGVyTGF5ZXJdXTsKKyAgICBbcGx1Z2luTGF5ZXIgc2V0U3VibGF5ZXJz
OkBbcmVuZGVyTGF5ZXJdXTsKIH0KIAogUGxhdGZvcm1MYXllciogUGx1Z2luUHJveHk6OnBsdWdp
bkxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCmluZGV4IDQ1ZDZkN2FkZjM0OGQwZWQyMjU0ZDQ4MGZmMjcyZWQ2NDI1MjkzZmMu
LmFlZDMwMWE1NGRkOTliZWI2OGZiMTQzOGQyZDFjMjU0ZDAzMDE2ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiAr
OTQsNyBAQAogI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUu
aD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JD
b2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgSEFWRShJTkNS
RU1FTlRBTF9QREZfQVBJUykKQEAgLTI0MDUsMTAgKzI0MDYsNyBAQCB2b2lkIFBERlBsdWdpbjo6
b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpCiAKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5T
QXJyYXkgKnR5cGVzKQogewotICAgIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlczsKLQot
ICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gdHlwZXMpCi0gICAgICAgIHBhc3RlYm9hcmRUeXBl
cy5hcHBlbmQodHlwZSk7CisgICAgYXV0byBwYXN0ZWJvYXJkVHlwZXMgPSBtYWtlVmVjdG9yPFN0
cmluZz4odHlwZXMpOwogCiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKICAgICBhdXRvJiB3
ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcwZTUyODU2NDZm
ZjhkZjU2YTlkMjUyMTc0OGJmZDVhZjhjYzRjNTEuLjQyN2Q0NDJhNjMyOTViYmZhOTRkMjk1OWZm
YjQ3ZjRkZWU4MjgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lkIFdlYlBhZ2U6
OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiAKIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKIHsKLSAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
OldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5p
bCB1c2VySW5mbzpAe0AiaXNTdXNwZW5kZWRVbmRlckxvY2siOiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6aXNTdXNwZW5kZWRVbmRlckxvY2tdfV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3Vz
cGVuZGVkVW5kZXJMb2NrIjogQChpc1N1c3BlbmRlZFVuZGVyTG9jayl9XTsKIAogICAgIG1faXNT
dXNwZW5kZWRVbmRlckxvY2sgPSBpc1N1c3BlbmRlZFVuZGVyTG9jazsKICAgICBmcmVlemVMYXll
clRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpCYWNrZ3JvdW5kQXBwbGljYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDljMDg4N2U2OTNlMjg4
ZWM0ZTdhM2UwMzA3ZDZkYzcxOTk5MmQ4ZDQuLjAyOGE4OGMxNjc0OTA3OTBmNGFhZjY0ZTY1YWM3
YTA1MDZiNjNlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
QEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpz
dXNwZW5kUGFpbnRpbmcoKQogCiAgICAgLy8gVGhpcyBpcyBhIHNpZ25hbCB0byBtZWRpYSBmcmFt
ZXdvcmtzOyBpdCBkb2VzIG5vdCBhY3RpdmVseSBwYXVzZSBhbnl0aGluZy4KICAgICBbbV9ob3N0
aW5nTGF5ZXIgc2V0VmFsdWU6QFlFUyBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOwot
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVz
ZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIu
Z2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUGF1c2VO
b3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86QHsgQCJsYXllciI6IG1faG9zdGluZ0xh
eWVyLmdldCgpIH1dOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpy
ZXN1bWVQYWludGluZygpCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQogICAgIG1faXNQYWludGluZ1N1c3BlbmRl
ZCA9IGZhbHNlOwogCiAgICAgW21faG9zdGluZ0xheWVyIHNldFZhbHVlOkBOTyBmb3JLZXk6QCJO
U0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5v
dGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOworICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6
QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5m
bzpAeyBAImxheWVyIjogbV9ob3N0aW5nTGF5ZXIuZ2V0KCkgfV07CiB9CiAKIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9h
dFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbQppbmRleCAwOGZlN2ZkMTRhZjIxNDIzNjIzNjc4OTk0Mjk2NmVkOWM0ZWFj
YTg2Li5hMWQ2ZTMwZjQ1MTM1NDNhNWEzODZlODY1NmJmNThkZDA1Y2RkYzc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC00MSw3ICs0MSw2IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogCiBAaW1wbGVtZW50YXRpb24gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQppbmRl
eCBmMGNlY2EyMDY4MGM5YmFjODQxNzIzNWY3NTRhNDRlZWMyOWM2Y2FmLi5hMDlmZjYxMzdhOThi
NDAzYTUwNjY5OTUzODY2ZDczYzBmNjYyMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdE1hYy5tbQpAQCAtNDcsNyArNDcsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KIAogbmFtZXNwYWNlIGF4ID0gV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eTsKIApAQCAtMTQyLDE2ICsxNDEsMTYgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QWN0aW9u
TmFtZXMKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKWFj
Y2Vzc2liaWxpdHlDaGlsZHJlbgogewogICAgIGlkIHdyYXBwZXIgPSBbc2VsZiBhY2Nlc3NpYmls
aXR5Um9vdE9iamVjdFdyYXBwZXJdOwogICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKICAgICAKLSAgICByZXR1cm4g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OndyYXBwZXJdOworICAgIHJldHVybiBAW3dyYXBwZXJd
OwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMjA0
ZDQ1YWIzNGY4ZWI0ZmY2NmUxNTlmZmMyYzEwMWM4ODkzMWIzNy4uNGI0NTg0NzA4ODIwZWQ1NTFj
MzVlODk1NzcyNjhiZjNlMjc1YTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC04OCw2ICs4OCw3IEBACiAjaW1wb3J0IDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CkBAIC02
NjQsMTIgKzY2NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoY29uc3Qg
U3RyaW5nJiBvdmVycmlkZURpc3BsYXlOYW1lKQogdm9pZCBXZWJQcm9jZXNzOjpnZXRBY3RpdmVQ
YWdlc09yaWdpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8gYWN0aXZlT3JpZ2luc0FzTlNTdHJpbmdzID0gYWN0aXZlUGFnZXNPcmlnaW5zKG1fcGFnZU1h
cCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWN0aXZlT3JpZ2luczsKLSAgICBhY3RpdmVPcmlnaW5z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW2FjdGl2ZU9yaWdpbnNBc05TU3RyaW5ncyBjb3VudF0p
OwotICAgIGZvciAoTlNTdHJpbmcqIGFjdGl2ZU9yaWdpbiBpbiBhY3RpdmVPcmlnaW5zQXNOU1N0
cmluZ3MuZ2V0KCkpCi0gICAgICAgIGFjdGl2ZU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKGFjdGl2
ZU9yaWdpbik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhY3RpdmVPcmlnaW5zKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVZlY3RvcjxTdHJpbmc+KGFjdGl2ZVBhZ2VzT3Jp
Z2lucyhtX3BhZ2VNYXApLmdldCgpKSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQppbmRleCAzM2U1ZWY1MWNhMjM0MGFl
MTY0MDRkY2M0YWYyZjQwOTU3OGJiMWU4Li44NzU0M2IwMDQ0NDdlM2Q4YzU0OWFkMTg3OGRjNGIz
ODRhYjQ2NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC02Myw2ICs2Myw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1wb3J0IDx3dGYvSGFz
aE1hcC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKIE5TU3RyaW5nICogY29uc3QgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFs
bG93TXVsdGlwbGVGaWxlc0tleSA9IEAiV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbkFsbG93TXVs
dGlwbGVGaWxlc0tleSI7CiBOU1N0cmluZyAqIGNvbnN0IFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRp
b25NZWRpYUNhcHR1cmVUeXBlS2V5ID0gQCJXZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVkaWFD
YXB0dXJlVHlwZUtleSI7CkBAIC0xMzQsMTcgKzEzNSwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dElPUzo6cnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGNob29zZXIpCiAgICAgQk9P
TCBhbGxvd011bHRpcGxlRmlsZXMgPSBzZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOwogICAg
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2hvb3NlcjpjaG9vc2VyXTsKIAotICAgIE5TTXV0
YWJsZUFycmF5ICptaW1lVHlwZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
c2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiB0eXBlIDog
c2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzKQotICAgICAgICBbbWltZVR5cGVzIGFkZE9iamVjdDp0
eXBlXTsKLQogICAgIFdlYk1lZGlhQ2FwdHVyZVR5cGUgY2FwdHVyZVR5cGUgPSBXZWJNZWRpYUNh
cHR1cmVUeXBlTm9uZTsKICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKICAgICBjYXB0dXJlVHlw
ZSA9IHdlYk1lZGlhQ2FwdHVyZVR5cGUoc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZSk7CiAjZW5k
aWYKICAgICBOU0RpY3Rpb25hcnkgKmNvbmZpZ3VyYXRpb24gPSBAewogICAgICAgICBXZWJPcGVu
UGFuZWxDb25maWd1cmF0aW9uQWxsb3dNdWx0aXBsZUZpbGVzS2V5OiBAKGFsbG93TXVsdGlwbGVG
aWxlcyksCi0gICAgICAgIFdlYk9wZW5QYW5lbENvbmZpZ3VyYXRpb25NaW1lVHlwZXNLZXk6IG1p
bWVUeXBlcywKKyAgICAgICAgV2ViT3BlblBhbmVsQ29uZmlndXJhdGlvbk1pbWVUeXBlc0tleTog
Y3JlYXRlTlNBcnJheShzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpLmdldCgpLAogICAgICAgICBX
ZWJPcGVuUGFuZWxDb25maWd1cmF0aW9uTWVkaWFDYXB0dXJlVHlwZUtleTogQChjYXB0dXJlVHlw
ZSkKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNjkxZjg1MTkzOGY4MzU3
ZDc3MGQ4YzRmODRlNWQyZTZjM2VmOThlZC4uNTQzMjVhZDgwYzNhM2E0ODdmOTBjMmYxOTE2Nzg2
YWY4ZGI5ZjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtMjMsMTEgKzIzLDEyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0KLSNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAi
V2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaCIKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5o
PgpAQCAtNDEsMTIgKzQyLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEZsYWdzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRl
cmF0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Zpc2libGVVbml0cy5oPgotCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgot
I2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00MTgsMTEgKzQxNSw3IEBA
IC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRp
dmVzOihOU0FycmF5ICoqKWFsdGVybmF0CiAgICAgYXV0byYgZG9jdW1lbnQgPSBub2RlLT5kb2N1
bWVudCgpOwogICAgIGZvciAoYXV0byBtYXJrZXIgOiBkb2N1bWVudC5tYXJrZXJzKCkubWFya2Vy
c0Zvcigqbm9kZSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXMpKSB7CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1h
cmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0gICAgICAgICAgICBhdXRvJiBtYXJrZXJB
bHRlcm5hdGl2ZXMgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpOwot
ICAgICAgICAgICAgYXV0byBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTptYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpXTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgYWx0
ZXJuYXRpdmUgOiBtYXJrZXJBbHRlcm5hdGl2ZXMpCi0gICAgICAgICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDphbHRlcm5hdGl2ZV07Ci0gICAgICAgICAgICAqYWx0ZXJuYXRpdmVzID0gYXJyYXk7
CisgICAgICAgICAgICAqYWx0ZXJuYXRpdmVzID0gY3JlYXRlTlNBcnJheShXVEY6OmdldDxWZWN0
b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICAgICAg
cmV0dXJuIGtpdChSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpLnB0cigpKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2libGVQb3NpdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb25JbnRlcm5hbC5oCmluZGV4IGQyOWYxNDEzNDI4
NDkzYTVmMzZiNGIwMDEyODdiNDhjZmQyNjk3NjQuLjc2NWM1OWQ0MzRmOGE1Zjc0Y2YwMTI5MGUw
M2U4MWYyZDIyYmI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaApA
QCAtMjMsOCArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5oIgorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKKyNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9W
aXNpYmxlUG9zaXRpb24uaD4KIAogQGludGVyZmFjZSBXZWJWaXNpYmxlUG9zaXRpb24gKEludGVy
bmFsKQpAQCAtMzMsMyArMzQsNSBAQAogLSAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uKV92aXNp
YmxlUG9zaXRpb247CiAKIEBlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggZjk4MmJkMTBhYzhlNWJkOGVmYTk1
MjQ1NDE2YmYxYTFhODVlMjkyNi4uYmU1ZDY0N2ZkZGJiMGJjY2VjNTMxN2MyNzc5MTU4NjcxMjYz
OGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d0lPUy5tbQpAQCAtNzUsMTAgKzc1LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJQREZWaWV3IHsK
IAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogewotICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOgorICAgIHJldHVybiBAWwogICAgICAgICBAInRleHQvcGRmIiwK
ICAgICAgICAgQCJhcHBsaWNhdGlvbi9wZGYiLAotICAgICAgICBuaWxdOworICAgIF07CiB9CiAK
ICsgKENHQ29sb3JSZWYpc2hhZG93Q29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmlu
ZGV4IDhiN2JhNWNhYmM4MWQ3OGI2OGFhMjRiZDVlZmYyNWFkMjc4YjJiYTUuLjllMTI4OTZkNzdm
ZTA4YmU3ZjBiNjA2ZGMxMWE3ZmExNmU0NzZmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TS5tbQpAQCAtNTgsMTAgKzU4LDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0
Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RvdWNoLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
TWFwLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dBS0FwcEtpdFN0dWJzLmg+CkBAIC0xNzks
MTUgKzE4MSw2IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnLCBDbGFzcyBkZWZhdWx0Q2xhc3MpCiAgICAgcmV0dXJuIG9iamNDbGFzczsKIH0KIAot
c3RhdGljIE5TQXJyYXkgKmtpdChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzKQotewotICAg
IHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OnJlY3RzW2ldXV07Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIFdLUXVhZCB3a1F1YWRGcm9tRmxvYXRRdWFk
KGNvbnN0IEZsb2F0UXVhZCYgaW5RdWFkKQpAQCAtNTE0LDcgKzUwNyw3IEBAIC0gKE5TQXJyYXkg
Kil0ZXh0UmVjdHMKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gcmVjdHM7CiAgICAgbm9kZS50ZXh0UmVjdHMocmVjdHMpOwotICAgIHJldHVybiBraXQo
cmVjdHMpOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHJlY3RzKS5hdXRvcmVsZWFzZSgpOwog
fQogCiBAZW5kCkBAIC02MzEsMTIgKzYyNCwxMSBAQCAtIChDR0ltYWdlUmVmKXJlbmRlcmVkSW1h
Z2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0CiAKIC0gKE5TQXJyYXkgKil0
ZXh0UmVjdHMKIHsKLSAgICAvLyBGSVhNRTogVGhlIGNhbGwgdG8gdXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmU6OlJhbmdlLgog
ICAgIGF1dG8mIHJhbmdlID0gKmNvcmUoc2VsZik7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IHJlY3RzOwogICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICByYW5nZS5hYnNvbHV0ZVRleHRSZWN0cyhyZWN0cyk7
Ci0gICAgcmV0dXJuIGtpdChyZWN0cyk7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQppbmRleCBiNTAz
MGQwZWU0Njk2MjVkOTMwMWY1MTcxYTA0ZDdiZWUxYzZmN2M2Li5jOGJlNTUxYjg1MGJjZTE3MjNh
MmYxMTRlMmRlZTZjZTZkZDI5NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBOT19SRVRV
Uk4gdm9pZCByYWlzZURPTUVycm9yRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMp
CiAgICAgZWxzZQogICAgICAgICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZv
cm1hdDpAIioqKiAlQCAlZCIsIERPTUV4Y2VwdGlvbiwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZV07
CiAKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6ZGVzY3JpcHRpb24u
bGVnYWN5Q29kZV0sIERPTUV4Y2VwdGlvbiwgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6QChkZXNj
cmlwdGlvbi5sZWdhY3lDb2RlKSwgRE9NRXhjZXB0aW9uLCBuaWxdOwogCiAgICAgTlNFeGNlcHRp
b24gKmV4Y2VwdGlvbiA9IFtOU0V4Y2VwdGlvbiBleGNlcHRpb25XaXRoTmFtZTpET01FeGNlcHRp
b24gcmVhc29uOnJlYXNvbiB1c2VySW5mbzp1c2VySW5mb107CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggMThm
MDEzYTBhODc1YmQzNmU4OTU1ODY2MzRhYjdkOGIwYThiMDJiNy4uOGI5OTRlZDJkMDA3MDZkZDhl
NGVkNmIyMmI2YjNiN2U5ODQ1ZjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTE1OCwyMSArMTU4LDIxIEBA
IC0gKHZvaWQpcmVtb3ZlSXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCiAtIChOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KIHsKICAgICBCYWNrRm9yd2FyZExpc3QgKmNv
cmVCRkxpc3QgPSBjb3JlKHNlbGYpOwotICAgIAorCiAgICAgYXV0byYgaGlzdG9yeUl0ZW1zID0g
Y29yZUJGTGlzdC0+ZW50cmllcygpOwogICAgIHVuc2lnbmVkIHNpemUgPSBoaXN0b3J5SXRlbXMu
c2l6ZSgpOwogICAgIE5TTXV0YWJsZUFycmF5ICplbnRyaWVzQXJyYXkgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIFtlbnRyaWVzQXJyYXkgYWRkT2JqZWN0OltraXQo
Y29uc3RfY2FzdDxXZWJDb3JlOjpIaXN0b3J5SXRlbSo+KGhpc3RvcnlJdGVtc1tpXS5wdHIoKSkp
IGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxkcmVuOk5PXV07Ci0gICAgCi0g
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBlbnRyaWVzQXJyYXksIFdlYkJhY2tGb3J3YXJkTGlz
dERpY3Rpb25hcnlFbnRyaWVzS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2ln
bmVkSW50OmNvcmVCRkxpc3QtPmN1cnJlbnQoKV0sIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25h
cnlDdXJyZW50S2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpjb3JlQkZMaXN0
LT5jYXBhY2l0eSgpXSwgV2ViQmFja0ZvcndhcmRMaXN0RGljdGlvbmFyeUNhcGFjaXR5S2V5LAot
ICAgICAgICBuaWxdOwotICAgICAgICAKKworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9
IEB7CisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5OiBlbnRy
aWVzQXJyYXksCisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlDdXJyZW50S2V5
OiBAKGNvcmVCRkxpc3QtPmN1cnJlbnQoKSksCisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdERp
Y3Rpb25hcnlDYXBhY2l0eUtleTogQChjb3JlQkZMaXN0LT5jYXBhY2l0eSgpKSwKKyAgICB9Owor
CiAgICAgW2VudHJpZXNBcnJheSByZWxlYXNlXTsKLSAgICAKKwogICAgIHJldHVybiBkaWN0aW9u
YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rvcnku
bW0KaW5kZXggYjhiYzE0NzlhMThhODQ1NDJiMGYzNjQzYWZiOGExMjJhNTE0M2NlYS4uZjI3NDcw
ZGJjMzAwY2FhMGU1Y2MwMjlhMjdiMmRhMTM5ZmFmMjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTE5LDExICsxMTksMTAgQEAgQGlt
cGxlbWVudGF0aW9uIFdlYkhpc3RvcnlQcml2YXRlCiAKICsgKHZvaWQpaW5pdGlhbGl6ZQogewot
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoK
LSAgICAgICAgICAgIEAiMTAwMCIsIEAiV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdCIsCi0gICAgICAg
ICAgICBAIjciLCBAIldlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdCIsCi0gICAgICAgICAgICBu
aWxdXTsgICAgCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVn
aXN0ZXJEZWZhdWx0czpAeworICAgICAgICBAIldlYktpdEhpc3RvcnlJdGVtTGltaXQiOiBAIjEw
MDAiLAorICAgICAgICBAIldlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdCI6IEAiNyIsCisgICAg
fV07CiB9CiAKIC0gKGlkKWluaXQKQEAgLTcyNywxMiArNzI2LDExIEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAtICh2b2lkKV9zZW5kTm90aWZpY2F0aW9uOihOU1N0cmluZyAqKW5hbWUgZW50cmllczoo
TlNBcnJheSAqKWVudHJpZXMKIHsKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOmVudHJpZXMsIFdlYkhpc3RvcnlJ
dGVtc0tleSwgbmlsXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsgV2ViSGlzdG9y
eUl0ZW1zS2V5OiBlbnRyaWVzIH07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJU
aHJlYWRQb3N0Tm90aWZpY2F0aW9uKG5hbWUsIHNlbGYsIHVzZXJJbmZvKTsKICNlbHNlICAgIAot
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0KLSAgICAgICAgcG9zdE5v
dGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6c2VsZiB1c2VySW5mbzp1c2VySW5mb107CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpuYW1lIG9iamVjdDpzZWxmIHVzZXJJbmZvOnVzZXJJbmZvXTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRl
eCBhOGQzYmMyMDY4ZjJjNzYzZjk1NTdkODFjN2Y1ZGRmMGY1YjdlMDQ5Li5kZmFjYjM3ZDEwOTM4
NWNkYTYyNTcxYjNkMDNmMzViOWI5NGU2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBv
cnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM0
NiwxOSArMzQ3LDggQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5T
RGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAoW2RpY3QgX3dlYmtpdF9ib29sRm9yS2V5Omxhc3RW
aXNpdFdhc0ZhaWx1cmVLZXldKQogICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0
V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKLSAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0g
W2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1
dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKLSAg
ICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRpcmVj
dFVSTHMgY291bnRdKTsKLQotICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0
VVJMcykgewotICAgICAgICAgICAgaWYgKCFbcmVkaXJlY3RVUkwgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
cmVkaXJlY3RVUkxzVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKE5TU3RyaW5nICopcmVkaXJlY3RV
UkwpOwotICAgICAgICB9Ci0KLSAgICAgICAgX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBXVEZN
b3ZlKHJlZGlyZWN0VVJMc1ZlY3Rvcik7Ci0gICAgfQorICAgIGlmIChOU0FycmF5ICpyZWRpcmVj
dFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tleV0pCisgICAg
ICAgIF9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
bWFrZVZlY3RvcjxTdHJpbmc+KHJlZGlyZWN0VVJMcykpOwogCiAgICAgTlNBcnJheSAqY2hpbGRE
aWN0cyA9IFtkaWN0IG9iamVjdEZvcktleTpjaGlsZHJlbktleV07CiAgICAgaWYgKGNoaWxkRGlj
dHMpIHsKQEAgLTQzNiwxNiArNDI2LDkgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uCiAgICAgfQogICAgIGlmIChjb3JlSXRlbS0+bGFzdFZpc2l0V2FzRmFpbHVy
ZSgpKQogICAgICAgICBbZGljdCBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6bGFzdFZpc2l0V2FzRmFp
bHVyZUtleV07Ci0gICAgaWYgKFZlY3RvcjxTdHJpbmc+KiByZWRpcmVjdFVSTHMgPSBfcHJpdmF0
ZS0+X3JlZGlyZWN0VVJMcy5nZXQoKSkgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlZGlyZWN0
VVJMcy0+c2l6ZSgpOwotICAgICAgICBBU1NFUlQoc2l6ZSk7Ci0gICAgICAgIE5TTXV0YWJsZUFy
cmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNp
emVdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
ICAgIFtyZXN1bHQgYWRkT2JqZWN0OihOU1N0cmluZyAqKXJlZGlyZWN0VVJMcy0+YXQoaSldOwot
ICAgICAgICBbZGljdCBzZXRPYmplY3Q6cmVzdWx0IGZvcktleTpyZWRpcmVjdFVSTHNLZXldOwot
ICAgICAgICBbcmVzdWx0IHJlbGVhc2VdOwotICAgIH0KLSAgICAKKyAgICBpZiAoYXV0byByZWRp
cmVjdFVSTHMgPSBfcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcy5nZXQoKSkKKyAgICAgICAgW2RpY3Qg
c2V0T2JqZWN0OmNyZWF0ZU5TQXJyYXkoKnJlZGlyZWN0VVJMcykuZ2V0KCkgZm9yS2V5OnJlZGly
ZWN0VVJMc0tleV07CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpbmNsdWRl
c0NoaWxkcmVuICYmIGNvcmVJdGVtLT5jaGlsZHJlbigpLnNpemUoKSkgewogI2Vsc2UKQEAgLTQ2
OCw4ICs0NTEsOCBAQCAtIChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24K
ICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OnZpZXdwb3J0QXJndW1lbnRzIGZvcktleTpAIldlYlZp
ZXdwb3J0QXJndW1lbnRzIl07CiAKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGNvcmUo
X3ByaXZhdGUpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFtkaWN0IHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpzY3JvbGxQb3NpdGlvbi54KCldIGZvcktleTpzY3JvbGxQb2ludFhL
ZXldOwotICAgIFtkaWN0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzY3JvbGxQ
b3NpdGlvbi55KCldIGZvcktleTpzY3JvbGxQb2ludFlLZXldOworICAgIFtkaWN0IHNldE9iamVj
dDpAKHNjcm9sbFBvc2l0aW9uLngoKSkgZm9yS2V5OnNjcm9sbFBvaW50WEtleV07CisgICAgW2Rp
Y3Qgc2V0T2JqZWN0OkAoc2Nyb2xsUG9zaXRpb24ueSgpKSBmb3JLZXk6c2Nyb2xsUG9pbnRZS2V5
XTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGRpY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0KaW5kZXggMTdiOThiODc0ODg0YTY4
M2NmNmY3MDkwY2QxOTQwNzQ2OWE2MTc0Yi4uYzFmYmQzZWM2OTYyODM2ZTE2ZDZkMDcyZDE3ZDk3
ZGJjNTlmMzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJVUkxzV2l0aFRpdGxlcy5tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViVVJMc1dpdGhUaXRsZXMubQpAQCAtNDEsNyArNDEsNyBAQCArIChOU0FycmF5ICopYXJyYXlX
aXRoSUZVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUKICAgICBzdGF0aWMgTlNBcnJheSAqY2FubmVk
QXJyYXkgPSBuaWw7CiAKICAgICBpZiAoY2FubmVkQXJyYXkgPT0gbmlsKSB7Ci0gICAgICAgIGNh
bm5lZEFycmF5ID0gW1tOU0FycmF5IGFycmF5V2l0aE9iamVjdDpXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGVdIHJldGFpbl07CisgICAgICAgIGNhbm5lZEFycmF5ID0gW0BbV2ViVVJMc1dpdGhU
aXRsZXNQYm9hcmRUeXBlXSByZXRhaW5dOwogICAgIH0KIAogICAgIHJldHVybiBjYW5uZWRBcnJh
eTsKQEAgLTczLDcgKzczLDcgQEAgKyh2b2lkKXdyaXRlVVJMczooTlNBcnJheSAqKVVSTHMgYW5k
VGl0bGVzOihOU0FycmF5ICopdGl0bGVzIHRvUGFzdGVib2FyZDooTlNQYXMKICAgICAgICAgW3Rp
dGxlc09yRW1wdHlTdHJpbmdzIGFkZE9iamVjdDoodGl0bGVzID09IG5pbCkgPyBAIiIgOiBbW3Rp
dGxlcyBvYmplY3RBdEluZGV4OmluZGV4XSBfd2Via2l0X3N0cmluZ0J5VHJpbW1pbmdXaGl0ZXNw
YWNlXV07CiAgICAgfQogCi0gICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OltOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6VVJMU3RyaW5ncywgdGl0bGVzT3JFbXB0eVN0cmluZ3MsIG5pbF0K
KyAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6QFtVUkxTdHJpbmdzLCB0aXRsZXNPckVt
cHR5U3RyaW5nc10KICAgICAgICAgICAgICAgICAgICAgICAgIGZvclR5cGU6V2ViVVJMc1dpdGhU
aXRsZXNQYm9hcmRUeXBlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KaW5kZXggNTEzN2U0MWMyNDJmY2E1NWM0YTA5NGI2NDMzNzNlOWUwYTZmZWMyYi4uMTUx
M2Y0ZTc5YjBjNDU3YzE5N2I3ZjY4MTJjYTU4YzRkODY5MDA3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC03MSw1MCArNzEsNDkgQEAgKyAodm9pZClpbml0
aWFsaXplCiAKICsgKE5TQXJyYXkgKilzdGF0aXN0aWNzCiB7Ci0gICAgV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OlN0YXRpc3RpY3MgcyA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5n
ZXRTdGF0aXN0aWNzKCk7Ci0KLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoK
LSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuY291bnRdLCBAIkltYWdl
cyIsCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRz
LmNvdW50XSwgQCJDU1MiLAorICAgIGF1dG8gcyA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5n
bGV0b24oKS5nZXRTdGF0aXN0aWNzKCk7CisgICAgcmV0dXJuIEBbCisgICAgICAgIEB7CisgICAg
ICAgICAgICBAIkltYWdlcyI6IEAocy5pbWFnZXMuY291bnQpLAorICAgICAgICAgICAgQCJDU1Mi
OiBAKHMuY3NzU3R5bGVTaGVldHMuY291bnQpLAogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5jb3VudF0sIEAiWFNM
IiwKKyAgICAgICAgICAgIEAiWFNMIjogQChzLnhzbFN0eWxlU2hlZXRzLmNvdW50KSwKICNlbHNl
Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAorICAgICAg
ICAgICAgQCJYU0wiOiBAKDApLAogI2VuZGlmCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpzLnNjcmlwdHMuY291bnRdLCBAIkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmls
XSwKLSAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgot
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuc2l6ZV0sIEAiSW1h
Z2VzIiwKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuY3NzU3R5bGVTaGVl
dHMuc2l6ZV0gLEAiQ1NTIiwKKyAgICAgICAgICAgIEAiSmF2YVNjcmlwdCI6IEAocy5zY3JpcHRz
LmNvdW50KSwKKyAgICAgICAgfSwKKyAgICAgICAgQHsKKyAgICAgICAgICAgIEAiSW1hZ2VzIjog
QChzLmltYWdlcy5zaXplKSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hlZXRz
LnNpemUpLAogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6cy54c2xTdHlsZVNoZWV0cy5zaXplXSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wi
OiBAKHMueHNsU3R5bGVTaGVldHMuc2l6ZSksCiAjZWxzZQotICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQCgwKSwKICNl
bmRpZgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLnNpemVd
LCBAIkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cy5pbWFnZXMubGl2ZVNpemVdLCBAIkltYWdlcyIsCi0gICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRzLmxpdmVTaXplXSAsQCJDU1Mi
LAorICAgICAgICAgICAgQCJKYXZhU2NyaXB0IjogQChzLnNjcmlwdHMuc2l6ZSksCisgICAgICAg
IH0sCisgICAgICAgIEB7CisgICAgICAgICAgICBAIkltYWdlcyI6IEAocy5pbWFnZXMubGl2ZVNp
emUpLAorICAgICAgICAgICAgQCJDU1MiOiBAKHMuY3NzU3R5bGVTaGVldHMubGl2ZVNpemUpLAog
I2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy54
c2xTdHlsZVNoZWV0cy5saXZlU2l6ZV0sIEAiWFNMIiwKKyAgICAgICAgICAgIEAiWFNMIjogQChz
LnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplKSwKICNlbHNlCi0gICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAorICAgICAgICAgICAgQCJYU0wiOiBAKDApLAogI2Vu
ZGlmCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnNjcmlwdHMubGl2ZVNp
emVdLCBAIkphdmFTY3JpcHQiLAotICAgICAgICAgICAgbmlsXSwKLSAgICAgICAgW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6cy5pbWFnZXMuZGVjb2RlZFNpemVdLCBAIkltYWdlcyIsCi0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXpl
XSAsQCJDU1MiLAorICAgICAgICAgICAgQCJKYXZhU2NyaXB0IjogQChzLnNjcmlwdHMubGl2ZVNp
emUpLAorICAgICAgICB9LAorICAgICAgICBAeworICAgICAgICAgICAgQCJJbWFnZXMiOiBAKHMu
aW1hZ2VzLmRlY29kZWRTaXplKSwKKyAgICAgICAgICAgIEAiQ1NTIjogQChzLmNzc1N0eWxlU2hl
ZXRzLmRlY29kZWRTaXplKSwKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OnMueHNsU3R5bGVTaGVldHMuZGVjb2RlZFNpemVdLCBAIlhTTCIsCisg
ICAgICAgICAgICBAIlhTTCI6IEAocy54c2xTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSksCiAjZWxz
ZQotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0sIEAiWFNMIiwKKyAgICAg
ICAgICAgIEAiWFNMIjogQCgwKSwKICNlbmRpZgotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6cy5zY3JpcHRzLmRlY29kZWRTaXplXSwgQCJKYXZhU2NyaXB0IiwKLSAgICAgICAg
ICAgIG5pbF0sCi0gICAgICAgIG5pbF07CisgICAgICAgICAgICBAIkphdmFTY3JpcHQiOiBAKHMu
c2NyaXB0cy5kZWNvZGVkU2l6ZSksCisgICAgICAgIH0sCisgICAgXTsKIH0KIAogKyAodm9pZCll
bXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3Rh
dGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0KaW5kZXggNDY2NjY1MzQyYTFlYTM5Zjc3MGI3NjA4NGI0YmIyY2MzOGU1M2JlMC4uNGM0
ZmVjNzhmM2FiOTVhMWRjMDc0YWU3YTQ4Zjk5MGYyYzE1Mzc2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0xOTksMjIgKzE5
OSwyMCBAQCArICh2b2lkKXN0b3BJZ25vcmluZ1dlYkNvcmVOb2RlTGVha3MKIAogKyAoTlNEaWN0
aW9uYXJ5ICopbWVtb3J5U3RhdGlzdGljcwogewotICAgIFdURjo6RmFzdE1hbGxvY1N0YXRpc3Rp
Y3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7Ci0g
ICAgCisgICAgYXV0byBmYXN0TWFsbG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRp
c3RpY3MoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKICAgICBzaXplX3Qg
aGVhcFNpemUgPSBjb21tb25WTSgpLmhlYXAuc2l6ZSgpOwogICAgIHNpemVfdCBoZWFwRnJlZSA9
IGNvbW1vblZNKCkuaGVhcC5jYXBhY2l0eSgpIC0gaGVhcFNpemU7Ci0gICAgR2xvYmFsTWVtb3J5
U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsK
LSAgICAKLSAgICByZXR1cm4gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgotICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmZhc3RNYWxsb2NT
dGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlc10sIEAiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyIs
Ci0gICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6ZmFzdE1hbGxvY1N0YXRp
c3RpY3MuY29tbWl0dGVkVk1CeXRlc10sIEAiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiLAot
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmZhc3RNYWxsb2NTdGF0aXN0
aWNzLmZyZWVMaXN0Qnl0ZXNdLCBAIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwKLSAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWFwU2l6ZV0sIEAiSmF2YVNjcmlwdEhl
YXBTaXplIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWFwRnJl
ZV0sIEAiSmF2YVNjcmlwdEZyZWVTaXplIiwKLSAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkSW50Oih1bnNpZ25lZCBpbnQpZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tC
eXRlc10sIEAiSmF2YVNjcmlwdFN0YWNrU2l6ZSIsCi0gICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhVbnNpZ25lZEludDoodW5zaWduZWQgaW50KWdsb2JhbE1lbW9yeVN0YXRzLkpJ
VEJ5dGVzXSwgQCJKYXZhU2NyaXB0SklUU2l6ZSIsCi0gICAgICAgICAgICBuaWxdOworICAgIGF1
dG8gZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAgcmV0
dXJuIEB7CisgICAgICAgIEAiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyI6IEAoZmFzdE1hbGxv
Y1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSwKKyAgICAgICAgQCJGYXN0TWFsbG9jQ29tbWl0
dGVkVk1CeXRlcyI6IEAoZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyksCisg
ICAgICAgIEAiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiOiBAKGZhc3RNYWxsb2NTdGF0aXN0aWNz
LmZyZWVMaXN0Qnl0ZXMpLAorICAgICAgICBAIkphdmFTY3JpcHRIZWFwU2l6ZSI6IEAoaGVhcFNp
emUpLAorICAgICAgICBAIkphdmFTY3JpcHRGcmVlU2l6ZSI6IEAoaGVhcEZyZWUpLAorICAgICAg
ICBAIkphdmFTY3JpcHRTdGFja1NpemUiOiBAKGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMp
LAorICAgICAgICBAIkphdmFTY3JpcHRKSVRTaXplIjogQChnbG9iYWxNZW1vcnlTdGF0cy5KSVRC
eXRlcyksCisgICAgfTsKIH0KIAogKyAodm9pZClyZXR1cm5GcmVlTWVtb3J5VG9TeXN0ZW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tCmluZGV4IGM1Mjc4Mzc0
ZTk0ZTIwMTZjOTYwODhhMDFmNWQ4NWE1ZGMzOGU2YTMuLjZhYzc1MzNlMjU1OTk4ZThkZDM3Y2Y3
MmQxMmIwNzg4ODJjNzY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViS2l0RXJyb3JzLm0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJL
aXRFcnJvcnMubQpAQCAtNzAsMTQgKzcwLDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBOU0Vycm9yIChX
ZWJLaXRJbnRlcm5hbCkKIC0gKGluc3RhbmNldHlwZSlfd2Via2l0X2luaXRXaXRoRG9tYWluOihO
U1N0cmluZyAqKWRvbWFpbiBjb2RlOihpbnQpY29kZSBVUkw6KE5TVVJMICopVVJMCiB7CiAgICAg
Ly8gSW5zZXJ0IGEgbG9jYWxpemVkIHN0cmluZyBoZXJlIGZvciB0aG9zZSBmb2xrcyBub3Qgc2F2
dnkgdG8gb3VyIGNhdGVnb3J5IG1ldGhvZHMuCi0gICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlv
bnNEaWN0ID0gW2Rlc2NyaXB0aW9ucyBvYmplY3RGb3JLZXk6ZG9tYWluXTsKLSAgICBOU1N0cmlu
ZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbnNEaWN0ID8gW2Rlc2NyaXB0aW9u
c0RpY3Qgb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1iZXJXaXRoSW50OmNvZGVdXSA6IG5pbDsK
LSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CisgICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9uID0gW1tkZXNj
cmlwdGlvbnMgb2JqZWN0Rm9yS2V5OmRvbWFpbl0gb2JqZWN0Rm9yS2V5OkAoY29kZSldOworICAg
IE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CiAgICAgICAgIFVSTCwgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCiAgICAg
ICAgIFtVUkwgYWJzb2x1dGVTdHJpbmddLCBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9y
S2V5LAogICAgICAgICBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgTlNMb2NhbGl6ZWREZXNjcmlwdGlv
bktleSwKICAgICAgICAgbmlsXTsKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhEb21haW46ZG9t
YWluIGNvZGU6Y29kZSB1c2VySW5mbzpkaWN0XTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhE
b21haW46ZG9tYWluIGNvZGU6Y29kZSB1c2VySW5mbzp1c2VySW5mb107CiB9CiAKIEBlbmQKQEAg
LTkxLDIxICs5MCwyMSBAQCArICh2b2lkKV9yZWdpc3RlcldlYktpdEVycm9ycwogICAgICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAv
LyBQb2xpY3kgZXJyb3JzCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNh
bm5vdFNob3dNSU1FVHlwZSwgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6IFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlXSwKLSAgICAgICAgICAgICAgICBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VSTCwgICAgICAgICAgICAgICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMXSwKLSAgICAg
ICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSwgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydF0sCi0g
ICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEJsb2NrZWRCeUNv
bnRlbnRGaWx0ZXIsICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yRnJh
bWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlcl0sCisgICAgICAgICAgICAgICAgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkNhbm5vdFNob3dNSU1FVHlwZSwgICAgICAgICAgICAgICAgICAgQChXZWJL
aXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSksCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JE
ZXNjcmlwdGlvbkNhbm5vdFNob3dVUkwsICAgICAgICAgICAgICAgICAgICAgICAgQChXZWJLaXRF
cnJvckNhbm5vdFNob3dVUkwpLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRp
b25GcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCAgIEAoV2ViS2l0RXJyb3JGcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRF
cnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsICAgICAgICAgICAgICBAKFdl
YktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQpLAorICAgICAgICAgICAgICAgIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyLCAgICAgIEAo
V2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyKSwKIAogICAgICAgICAg
ICAgICAgIC8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3JzCi0gICAgICAgICAgICAgICAgV2ViS2l0
RXJyb3JEZXNjcmlwdGlvbkNhbm5vdEZpbmRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbl0sCi0gICAg
ICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAgICAg
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90
TG9hZFBsdWdJbl0sCi0gICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkphdmFV
bmF2YWlsYWJsZSwgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
IFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlXSwKLSAgICAgICAgICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbiwgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQbHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uXSwK
LSAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxv
YWQsICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQ
bHVnSW5XaWxsSGFuZGxlTG9hZF0sCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlw
dGlvbkNhbm5vdEZpbmRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvckNh
bm5vdEZpbmRQbHVnSW4pLAorICAgICAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25D
YW5ub3RMb2FkUGx1Z2luLCAgICAgICAgICAgICAgICAgICAgIEAoV2ViS2l0RXJyb3JDYW5ub3RM
b2FkUGx1Z0luKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uSmF2YVVu
YXZhaWxhYmxlLCAgICAgICAgICAgICAgICAgICAgICBAKFdlYktpdEVycm9ySmF2YVVuYXZhaWxh
YmxlKSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2Vs
bGVkQ29ubmVjdGlvbiwgICAgICAgICAgICBAKFdlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29u
bmVjdGlvbiksCisgICAgICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbldp
bGxIYW5kbGVMb2FkLCAgICAgICAgICAgICAgICAgQChXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5k
bGVMb2FkKSwKIAogICAgICAgICAgICAgICAgIC8vIEdlb2xvY2F0aW9uIGVycm9ycwotICAgICAg
ICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93
biwgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckdlb2xvY2F0
aW9uTG9jYXRpb25Vbmtub3duXSwKKyAgICAgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0
aW9uR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd24sICAgICAgICAgICBAKFdlYktpdEVycm9yR2Vv
bG9jYXRpb25Mb2NhdGlvblVua25vd24pLAogICAgICAgICAgICAgICAgIG5pbF07CiAKICAgICAg
ICAgICAgIFtOU0Vycm9yIF93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5kRGVzY3JpcHRpb25z
OmRpY3QgaW5Eb21haW46V2ViS2l0RXJyb3JEb21haW5dOwpAQCAtMTM5LDcgKzEzOCw3IEBAIC0g
KGlkKV9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTooaW50KWNvZGUKICAgICAKICAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF07CiAgICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnNGb3JXZWJLaXRFcnJvckRvbWFpbiA9
IFtkZXNjcmlwdGlvbnMgb2JqZWN0Rm9yS2V5OldlYktpdEVycm9yRG9tYWluXTsKLSAgICBOU1N0
cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVzY3JpcHRpb25zRm9yV2ViS2l0RXJyb3JE
b21haW4gb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1iZXJXaXRoSW50OmNvZGVdXTsKKyAgICBO
U1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVzY3JpcHRpb25zRm9yV2ViS2l0RXJy
b3JEb21haW4gb2JqZWN0Rm9yS2V5OkAoY29kZSldOwogICAgIGlmIChsb2NhbGl6ZWREZXNjcmlw
dGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpsb2NhbGl6ZWREZXNjcmlwdGlvbiBm
b3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07CiAgICAgaWYgKGNvbnRlbnRVUkwpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdF
eHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0
cmFzLm1tCmluZGV4IDZiMGU4OTY3NWEwZDEyMDhkOWNhOTU4MjlhNTYwNTFhNjdiYWMyMTUuLjcz
OTJmMTA1OWJjYjQ1ZTk1MjBhZjhiOTYyY2Y0MDM1YmFiODJmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtOTks
NyArOTksNyBAQCAtICh2b2lkKV93ZWJfZHJhd0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgZm9udDoo
TlNGb250ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29sb3IgKgogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb2ludC55ICs9IFtmb250IGRlc2NlbmRlcl07CiAKLSAgICAgICAgW3NlbGYgZHJhd0F0
UG9pbnQ6cG9pbnQgd2l0aEF0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOmZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsIHRleHRDb2xvciwgTlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBuaWxdXTsKKyAgICAgICAgW3NlbGYgZHJhd0F0UG9p
bnQ6cG9pbnQgd2l0aEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTogZm9udCwgTlNG
b3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiB0ZXh0Q29sb3IgfV07CiAgICAgfQogfQogCkBA
IC0xMTUsNyArMTE1LDcgQEAgLSAoZmxvYXQpX3dlYl93aWR0aFdpdGhGb250OihOU0ZvbnQgKilm
b250CiAgICAgICAgIHJldHVybiB3ZWJDb3JlRm9udC53aWR0aChydW4pOwogICAgIH0KIAotICAg
IHJldHVybiBbc2VsZiBzaXplV2l0aEF0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOmZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsIG5pbF1dLndpZHRo
OworICAgIHJldHVybiBbc2VsZiBzaXplV2l0aEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRl
TmFtZTogZm9udCB9XS53aWR0aDsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJh
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJh
cy5tbQppbmRleCBjNTQxM2U4MWM2YTNlY2IyZWM5NzgxZjZiOGJmZDZjMmIyYTA1ZGYxLi5iYmZm
YWRlNjViZDE3OGUyYTNmNmEyYzQwZGM2MDZlMGE0ODBhY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0z
NCw3ICszNCw2IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRp
bWVFeHRyYXMuaD4KIAogQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFnZXIgKFdlYk5TRmlsZU1h
bmFnZXJFeHRyYXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggYmJiNjJjYmFmZGJiZTA5ODc1YTJjZTQ1NTg4
Yzg4YTE3OGFmZmNlZC4uZTFjNWVlYjMyODNmMDY2ZDgxMmNjYjA1NmM0NzA3ZjM1MmIwODc3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCArIChOU0FycmF5ICopX3dlYl93cml0YWJs
ZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihCT09MKWhhc0FyY2hpdmUKIAogKyAoTlNB
cnJheSAqKV93ZWJfZHJhZ1R5cGVzRm9yVVJMCiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6CisgICAgcmV0dXJuIEBbCiAgICAgICAgIFdlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZSwKICAgICAgICAgbGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwKICAgICAgICAgV2Vi
VVJMUGJvYXJkVHlwZSwKQEAgLTExNCw3ICsxMTQsNyBAQCArIChOU0FycmF5ICopX3dlYl9kcmFn
VHlwZXNGb3JVUkwKICAgICAgICAgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwKICAgICAg
ICAgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwKICAgICAgICAgbGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKSwKLSAgICAgICAgbmlsXTsKKyAgICBdOwogfQogCiAtIChO
U1VSTCAqKV93ZWJfYmVzdFVSTApAQCAtMTc3LDcgKzE3Nyw3IEBAIC0gKHZvaWQpX3dlYl93cml0
ZVVSTDooTlNVUkwgKilVUkwgYW5kVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgdHlwZXM6KE5TQXJy
YXkgKil0CiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXSkKICAgICAgICAgW3NlbGYgc2V0U3RyaW5nOltVUkwgX3dlYl91c2VyVmlzaWJs
ZVN0cmluZ10gZm9yVHlwZTpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICBpZiAo
W3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV0pCi0gICAg
ICAgIFtXZWJVUkxzV2l0aFRpdGxlcyB3cml0ZVVSTHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
OlVSTF0gYW5kVGl0bGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDp0aXRsZV0gdG9QYXN0ZWJv
YXJkOnNlbGZdOworICAgICAgICBbV2ViVVJMc1dpdGhUaXRsZXMgd3JpdGVVUkxzOkBbVVJMXSBh
bmRUaXRsZXM6QFt0aXRsZV0gdG9QYXN0ZWJvYXJkOnNlbGZdOwogfQogCiArIChpbnQpX3dlYl9z
ZXRGaW5kUGFzdGVib2FyZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aE93bmVyOihpZClv
d25lcgpAQCAtMTg1LDcgKzE4NSw3IEBAICsgKGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJkU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoT3duZXI6KGlkKW93bmVyCiAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBOU1Bhc3RlYm9hcmQgKmZpbmRQYXN0ZWJv
YXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6TlNGaW5kUGJvYXJkXTsKICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbZmluZFBhc3RlYm9hcmQg
ZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXSBvd25lcjpvd25lcl07CisgICAgW2ZpbmRQYXN0ZWJvYXJkIGRlY2xhcmVUeXBl
czpAW2xlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm93bmVyXTsKICAgICBbZmlu
ZFBhc3RlYm9hcmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBlOmxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCldOwogICAgIHJldHVybiBbZmluZFBhc3RlYm9hcmQgY2hhbmdlQ291bnRdOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KaW5kZXgg
YzBlN2ZhOTMxYTRmNGFjNTM1NzI0NjRmYTA2YjBiMDAxMzdhNWM3My4uN2U5ODkyZmMzZDIyZGI1
MjkxYmU0YTY2MTI5NDQ1ZGZhYWY4M2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0zOSw3ICszOSw2IEBACiAjaW1wb3J0IDx1bmlj
b2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBhMDRiYzU1N2JmZGRjOTc2ZmQxODA1
YWZlYjc4NjViNGQxMjdhZTZkLi45NTYxZDIyZWJiZmI5ZWE0OWQ0Zjg4MzZiMmYwZmQ1OTVjYTY4
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTE0MSwxNyAr
MTQxLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5CiAgICAgTlNTdHJpbmcgKnBsdWdpbkhv
c3RBcHBQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlIGNsYXNzXV0gcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6cGx1Z2luSG9zdEFwcE5h
bWVdOwogICAgIE5TU3RyaW5nICpwbHVnaW5Ib3N0QXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVu
ZGxlIGJ1bmRsZVdpdGhQYXRoOnBsdWdpbkhvc3RBcHBQYXRoXSBleGVjdXRhYmxlUGF0aF07CiAK
LSAgICBOU0RpY3Rpb25hcnkgKmxhdW5jaFByb3BlcnRpZXMgPSBbW05TRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGx1Z2luSG9zdEFwcEV4ZWN1dGFibGVQYXRoLCBAInBsdWdpbkhvc3RQYXRoIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6cGx1Z2luQXJjaGl0ZWN0dXJlXSwgQCJjcHVUeXBlIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpLCBA
ImxvY2FsaXphdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5p
bF07Ci0KKyAgICBOU0RpY3Rpb25hcnkgKmxhdW5jaFByb3BlcnRpZXMgPSBAeworICAgICAgICBA
InBsdWdpbkhvc3RQYXRoIjogcGx1Z2luSG9zdEFwcEV4ZWN1dGFibGVQYXRoLAorICAgICAgICBA
ImNwdVR5cGUiOiBAKHBsdWdpbkFyY2hpdGVjdHVyZSksCisgICAgICAgIEAibG9jYWxpemF0aW9u
IjogcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpLAorICAgIH07CiAgICAgTlNEYXRh
ICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlz
dDpsYXVuY2hQcm9wZXJ0aWVzIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8w
IG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAgICBBU1NFUlQoZGF0YSk7CiAKLSAgICBbbGF1
bmNoUHJvcGVydGllcyByZWxlYXNlXTsKLQogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBfV0tQQVNw
YXduUGx1Z2luSG9zdChtX3BsdWdpblZlbmRvclBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRhIGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCAmcGx1
Z2luSG9zdFBvcnQpOwogCiAgICAgaWYgKGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RFU1QpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggM2IyOTY2NmY3ZGY2YTdkY2Nh
NzlkMTAzOTMzODBiNjM4YjQ4MTQ0YS4uYzY0Nzc0ZGM0N2UzZWU1OTUzZDJkNDllZGViN2UwYmM3
OGRjYjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTk0Nyw3ICs5
NDcsNyBAQCBrZXJuX3JldHVybl90IFdLUENJZGVudGlmaWVySW5mbyhtYWNoX3BvcnRfdCBjbGll
bnRQb3J0LCB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaQogICAgICAgICBjb25zdCBjaGFyKiBzdHIg
PSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKICAgICAgICAgaW5mbyA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlc05vQ29weToodm9pZCopc3RyIGxlbmd0aDpzdHJsZW4oc3RyKSBmcmVlV2hlbkRvbmU6Tk9d
OwogICAgIH0gZWxzZSAKLSAgICAgICAgaW5mbyA9IFtOU051bWJlciBudW1iZXJXaXRoSW50Omlk
ZW50aWZpZXItPm51bWJlcigpXTsKKyAgICAgICAgaW5mbyA9IEAoaWRlbnRpZmllci0+bnVtYmVy
KCkpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBk
YXRhV2l0aFByb3BlcnR5TGlzdDppbmZvIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1h
dF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZGM2MmQ1NTQxNDJhMzFj
OGE4MDU2NmJkNmRkM2FlN2VlOTRiMzUyNS4uYTYxNDVlMDJkM2Q2MzVmM2FkNDE0MjlkNTczOWQw
MzM5ZGM0MjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpA
QCAtMTMyMiwyOCArMTMyMiwyOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICphcnJheSwgSlNHbG9iYQogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
IFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBl
XV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChTdHJpbmdWYWx1ZVR5cGUpXTsKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDphc1N0cmluZyh2YWx1ZSktPnZhbHVlKGxleGljYWxHbG9iYWxP
YmplY3QpXTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpEb3VibGVWYWx1ZVR5cGVdXTsK
LSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZS50b051bWJlcihsZXhpY2FsR2xvYmFsT2JqZWN0KV1dOworICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OkAoRG91YmxlVmFsdWVUeXBlKV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCh2YWx1
ZS50b051bWJlcihsZXhpY2FsR2xvYmFsT2JqZWN0KSldOwogICAgIH0gZWxzZSBpZiAodmFsdWUu
aXNCb29sZWFuKCkpIHsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpCb29sVmFsdWVUeXBlXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChCb29s
VmFsdWVUeXBlKV07CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhCb29sOnZhbHVlLnRvQm9vbGVhbihsZXhpY2FsR2xvYmFsT2JqZWN0KV1dOwogICAgIH0gZWxz
ZSBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6TnVsbFZhbHVlVHlwZV1dOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAoTnVsbFZhbHVlVHlwZSldOwogICAgIGVsc2UgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKICAgICAgICAgdWludDY0
X3Qgb2JqZWN0SUQ7CiAgICAgICAgIGlmIChnZXRPYmplY3RJRCh0aGlzLCBvYmplY3QsIG9iamVj
dElEKSkgewotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpOUE9iamVjdFZhbHVlVHlwZV1dOwotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpvYmplY3RJRF1dOworICAgICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpAKE5QT2JqZWN0VmFsdWVUeXBlKV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OkAob2JqZWN0SUQpXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6SlNPYmplY3RWYWx1ZVR5cGVdXTsKLSAg
ICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9sb2Nh
bE9iamVjdHMuaWRGb3JPYmplY3Qodm0sIG9iamVjdCldXTsKKyAgICAgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6QChKU09iamVjdFZhbHVlVHlwZSldOworICAgICAgICAgICAgW2FycmF5IGFkZE9i
amVjdDpAKG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KHZtLCBvYmplY3QpKV07CiAgICAgICAg
IH0KICAgICB9IGVsc2UKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpWb2lkVmFsdWVUeXBlXV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QChWb2lk
VmFsdWVUeXBlKV07CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjptYXJz
aGFsVmFsdWUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIGRhdGFfdCYgcmVzdWx0RGF0YSwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCYgcmVzdWx0TGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDYzODAx
ZTFjYWJhY2JhYWYxMDFhMDM4YWNlNTA1MjZmMDNmMWFmYzkuLjBhYzE3NmNlYTFjZDRmYmM2NmMx
YWEzNjE3NTJlNmYwNzdmMmVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KaW5k
ZXggNzFlNDM2NTQ2YTljZDQ4MmE5NTVhMGE4MGI1MGM5OWVlZGFmMTk1OS4uZjZhNzQ3N2NkMWRm
YzJiNDVlY2EwMmNkMmRkODFmZjU3NjYzYzAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCkBAIC00MCw3ICs0
MCw2IEBACiAjaW1wb3J0IDxtYWNoLW8vbG9hZGVyLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGlt
ZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCmluZGV4
IDI5MTM5M2JmY2MwNjI4ZWZkMjFlYTUxYjU3NTk2YTc4ZWVjNzNmNzYuLjc0MDg4OGZkOTY4MjFh
MzQyOWM0Nzk0MTE3NWEzNzAwZDUwNzc4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQpAQCAtMTA3
LDExICsxMDcsMTEgQEAgLSAoQk9PTClfaXNGb3JiaWRkZW5GaWxlTG9hZAogCiAtIChOU0RpY3Rp
b25hcnkgKilfYWN0aW9uSW5mb3JtYXRpb25XaXRoVVJMOihOU1VSTCAqKVVSTAogewotICAgIHJl
dHVybiBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJOYXZpZ2F0aW9uVHlwZVBsdWdJblJl
cXVlc3RdLCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKLSAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OjBdLCBXZWJBY3Rpb25Nb2RpZmllckZsYWdzS2V5LAotICAgICAg
ICAgICAgICAgVVJMLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKLSAgICAgICAgICAgICAgIG5p
bF07CisgICAgcmV0dXJuIEB7CisgICAgICAgIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5OiBA
KFdlYk5hdmlnYXRpb25UeXBlUGx1Z0luUmVxdWVzdCksCisgICAgICAgIFdlYkFjdGlvbk1vZGlm
aWVyRmxhZ3NLZXk6IEAoMCksCisgICAgICAgIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5OiBVUkws
CisgICAgfTsKIH0KIAogLSAodm9pZClfYXNrUG9saWN5RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCmluZGV4IDQ5
ZGU0NWQ0YmYyNjdjMTAyN2VjNzMyMzc2ZDhhYzg1N2Q5NzdlMTEuLjA5M2U2OTc1ZDQxZWM4Mjhh
YjUyY2YzOGQ0Yjk2NmQ4ZjNmOTVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQpAQCAtMzkwLDExICszOTAsMTEgQEAg
KyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0aHMKICAgICAvLyBGb3IgZXhhbXBsZSwgaWYg
dGhlcmUgaXMgYSBRdWlja1RpbWUucGx1Z2luIGluIHRoZSB1c2VycydzIGhvbWUgZGlyZWN0b3J5
CiAgICAgLy8gdGhhdCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIC9MaWJyYXJ5L0ludGVybmV0IFBs
dWctaW5zIHZlcnNpb24uCiAgICAgLy8gVGhlIHB1cnBvc2UgaXMgdG8gYWxsb3cgbm9uLWFkbWlu
IHVzZXJzIHRvIHVwZGF0ZSB0aGVpciBwbHVnLWlucy4KLSAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAgW05TSG9tZURpcmVjdG9yeSgp
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvSW50ZXJuZXQgUGx1Zy1J
bnMiXSwKICAgICAgICAgQCIvTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucyIsCiAgICAgICAgIFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVpbHRJblBsdWdJbnNQYXRoXSwKLSAgICAgICAgbmlsXTsK
KyAgICBdOwogI2Vsc2UKICAgICAvLyBpT1MgcGx1Zy1pbnMgYXJlIGFsbCBsb2NhdGVkIGluIC9T
eXN0ZW0vTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikKQEAgLTQwNiw3ICs0MDYsNyBAQCArIChOU0FycmF5ICopX2RlZmF1bHRQbHVn
SW5QYXRocwogICAgIE5TU3RyaW5nKiBwbGF0Zm9ybVJvb3REaXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aFVURjhTdHJpbmc6V2ViS2l0UGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5KCldOwogICAg
IE5TU3RyaW5nICpzeXN0ZW1EaXIgPSBbcGxhdGZvcm1Sb290RGlyIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIlN5c3RlbS9MaWJyYXJ5Il07CiAjZW5kaWYKLSAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OltzeXN0ZW1EaXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiSW50ZXJuZXQgUGx1Zy1JbnMiXV07CisgICAgcmV0dXJuIEBbW3N5c3RlbURpciBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbnRlcm5ldCBQbHVnLUlucyJdXTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDczZTIzMzFlYmI2Y2ZhZWRlZWE0YzFkMmYxMmFkMGJh
ZDUyMjY1M2MuLmU3Mjc1Yzc0ZGRkNzY3MWI0NTJjYjdkN2RkZDMxYTNlYjM0NDNiZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5h
Z2VyLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5oIgogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJT
ZWN1cml0eU9yaWdpbkludGVybmFsLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5h
Z2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICNpbXBvcnQgIldlYkRhdGFiYXNlUHJv
dmlkZXIuaCIKQEAgLTEwNiwxMSArMTA2LDcgQEAgLSAoTlNBcnJheSAqKWRhdGFiYXNlc1dpdGhP
cmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7CiAgICAgaWYgKCFvcmlnaW4pCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvciA9IERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhbb3JpZ2luIF9jb3JlXS0+ZGF0
YSgpKTsKLSAgICBOU011dGFibGVBcnJheSAqbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGF1dG8mIG5h
bWUgOiBuYW1lVmVjdG9yKQotICAgICAgICBbbmFtZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKW5h
bWVdOwotICAgIHJldHVybiBbbmFtZXMgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhbb3JpZ2lu
IF9jb3JlXS0+ZGF0YSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5ICop
ZGV0YWlsc0ZvckRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciB3aXRoT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IDg5
NWM0YjJkNDlkYzFjOGZiMzA4YmIzODAwYjBiOTE5NDY1NWJmZDMuLjA4ZDY0YTI5MjU5ZTRlYzIx
NjI3ZDI5ZGY0NzRmYTdhNjE3NzkxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTIyLDExICsy
MiwxNCBAQAogICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCisKICNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogCiAjaW1wb3J0ICJXZWJW
aWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYg
VVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
c3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlIGNvcnJlY3Rpb25JbmRpY2F0
b3JUeXBlKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSkKQEAgLTY5LDE1
ICs3MiwxMSBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6c2hvdyhXZWJWaWV3KiB2aWV3LCBBbHRl
cm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UgogICAgIG1fdmlldyA9IHZpZXc7CiAg
ICAgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBpbmRpY2F0b3JUeXBlID0gY29ycmVjdGlvbklu
ZGljYXRvclR5cGUodHlwZSk7CiAgICAgCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZl
U3RyaW5ncyA9IDA7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncy5zaXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDoo
TlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKLSAgICB9CisgICAg
UmV0YWluUHRyPE5TQXJyYXk+IGFsdGVybmF0aXZlU3RyaW5nczsKKyAgICBpZiAoIWFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJp
bmdzID0gY3JlYXRlTlNBcnJheShhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAKLSAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25JbmRp
Y2F0b3JPZlR5cGU6aW5kaWNhdG9yVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5n
QXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmlu
Z0luUmVjdDpbdmlldyBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nXSB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5n
KiBhY2NlcHRlZFN0cmluZykgeworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVj
a2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTppbmRpY2F0b3JUeXBlIHByaW1hcnlT
dHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRl
cm5hdGl2ZVN0cmluZ3MuZ2V0KCkgZm9yU3RyaW5nSW5SZWN0Olt2aWV3IF9jb252ZXJ0UmVjdEZy
b21Sb290Vmlldzpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmddIHZpZXc6bV92aWV3LmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CiAgICAgICAg
IGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0ZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5n
QXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nLCBpbmRpY2F0b3JUeXBlKTsK
ICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA2NmYxYjQxMmMyZWM2NmIzMmU0NGFl
OGFlMjFkMDkwYzc1NzJmYTFlLi42ZDY4ZGY3YzcyN2U3MTFhZTZmMjY4NTNkZGRlOTJiMzVlNGQ4
NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC00NjAsOCArNDYwLDggQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXYKICAgICBOU1N0cmluZyAqbWVzc2FnZVNvdXJjZSA9IHN0cmluZ0Zvck1lc3Nh
Z2VTb3VyY2Uoc291cmNlKTsKICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgKE5TU3RyaW5n
ICopbWVzc2FnZSwgQCJtZXNzYWdlIiwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZEludDpsaW5lTnVtYmVyXSwgQCJsaW5lTnVtYmVyIiwKLSAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDpjb2x1bW5OdW1iZXJdLCBAImNvbHVtbk51bWJlciIsCisgICAg
ICAgIEAobGluZU51bWJlciksIEAibGluZU51bWJlciIsCisgICAgICAgIEAoY29sdW1uTnVtYmVy
KSwgQCJjb2x1bW5OdW1iZXIiLAogICAgICAgICAoTlNTdHJpbmcgKilzb3VyY2VVUkwsIEAic291
cmNlVVJMIiwKICAgICAgICAgbWVzc2FnZVNvdXJjZSwgQCJNZXNzYWdlU291cmNlIiwKICAgICAg
ICAgc3RyaW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwgQCJNZXNzYWdlTGV2ZWwiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCmluZGV4IDlhZDQ2YzYwNDcwMTJlYjNlNDIzODA0ZDQwNzIwNzAyNTdkYzVlNDYu
LjhhNzUzYzU5MDE3MjJhY2FjYjRjMzA1MGEzMWUxYmY3MDhjYjU0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KQEAgLTgzLDYgKzgzLDcgQEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NTcsNyArNDU4LDcgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKICAgICBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0
ZSA9IEAiRXhjbHVkZWRFbGVtZW50cyI7CiAjZW5kaWYKIAotICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZXhjbHVkZWRFbGVt
ZW50cyBmb3JLZXk6TlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGVdOworICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0
cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzIH07CiAKICAgICBbZXhjbHVkZWRFbGVtZW50cyByZWxl
YXNlXTsKIApAQCAtMTA3OSwxNSArMTA4MCw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4CiAg
ICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5nOmNvbnRleHQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
Y29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkgb3B0
aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKSBvcnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29yZENvdW50OjBdOwogICAgICAgICBsYW5n
dWFnZSA9IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRl
eHQubGVuZ3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0aG9ncmFwaHk6b3J0aG9ncmFwaHldOwog
ICAgIH0KLSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkgPSBbY2hlY2tlciBndWVzc2VzRm9yV29y
ZFJhbmdlOk5TTWFrZVJhbmdlKDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQgbGFuZ3Vh
Z2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpXTsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFtzdHJpbmdzQXJyYXkgY291bnRdOwotCi0gICAg
aWYgKGNvdW50ID4gMCkgewotICAgICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbc3Ry
aW5nc0FycmF5IG9iamVjdEVudW1lcmF0b3JdOwotICAgICAgICBOU1N0cmluZyAqc3RyaW5nOwot
ICAgICAgICB3aGlsZSAoKHN0cmluZyA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwp
Ci0gICAgICAgICAgICBndWVzc2VzLmFwcGVuZChzdHJpbmcpOwotICAgIH0KKyAgICBOU0FycmF5
ICpzdHJpbmdzQXJyYXkgPSBbY2hlY2tlciBndWVzc2VzRm9yV29yZFJhbmdlOk5TTWFrZVJhbmdl
KDAsIHdvcmQubGVuZ3RoKCkpIGluU3RyaW5nOndvcmQgbGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVs
bERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKKyAgICBpZiAoc3Ry
aW5nc0FycmF5LmNvdW50KQorICAgICAgICBndWVzc2VzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHN0
cmluZ3NBcnJheSk7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjA1YzNmOWY0ZTRkNDVlNmRlODYxZDJlNWUyYWUx
N2RlODkwNjFlNS4uYjZhMDI2Mzc5Y2UzZTQ5MDBhYmIyOTk1YmZmZThkZWY5MDVlZTc4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEzMSw2ICsxMzEsNyBAQAogI2ltcG9ydCA8
d3RmL05ha2VkUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCkBAIC0xNTcyLDgg
KzE1NzMsOCBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0
aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BYwogICAgIE5TVVJMICpvcmlnaW5hbFVS
TCA9IGFjdGlvbi51cmwoKTsKIAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3VsdCA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19jYXN0PGludD4oYWN0aW9uLnR5cGUoKSld
LCBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6bW9kaWZpZXJGbGFnc10sIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCisgICAgICAg
IEAoc3RhdGljX2Nhc3Q8aW50PihhY3Rpb24udHlwZSgpKSksIFdlYkFjdGlvbk5hdmlnYXRpb25U
eXBlS2V5LAorICAgICAgICBAKG1vZGlmaWVyRmxhZ3MpLCBXZWJBY3Rpb25Nb2RpZmllckZsYWdz
S2V5LAogICAgICAgICBvcmlnaW5hbFVSTCwgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAg
ICAgIG5pbF07CiAKQEAgLTE1ODUsOSArMTU4Niw5IEBAIE5TRGljdGlvbmFyeSAqV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
CiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCiAgICAgICAgIGlmIChtb3VzZUV2ZW50RGF0
YS0+aXNUcnVzdGVkKQotICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6bW91c2VFdmVudERhdGEtPmJ1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRv
bktleV07CisgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKG1vdXNlRXZlbnREYXRhLT5i
dXR0b24pIGZvcktleTpXZWJBY3Rpb25CdXR0b25LZXldOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJDb3JlOjpO
b0J1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CisgICAgICAgICAgICBbcmVzdWx0
IHNldE9iamVjdDpAKFdlYkNvcmU6Ok5vQnV0dG9uKSBmb3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5
XTsKICAgICB9CiAKICAgICBpZiAoZm9ybVN0YXRlKQpAQCAtMTY5NCwxNSArMTY5NSw2IEBAIFdl
YkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBVUkwmIHVyCiAgICAgcmV0dXJuIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRU
eXBlOjpOb25lOwogfQogCi1zdGF0aWMgTlNNdXRhYmxlQXJyYXkqIGtpdChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmVjdG9yKQotewotICAgIHVuc2lnbmVkIGxlbiA9IHZlY3Rvci5zaXplKCk7Ci0g
ICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5Omxlbl07Ci0gICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IGxlbjsgeCsrKQotICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OnZlY3Rvclt4XV07Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiBz
dGF0aWMgU3RyaW5nIHBhcmFtZXRlclZhbHVlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IGNoYXIqIG5hbWUp
CiB7CiAgICAgc2l6ZV90IHNpemUgPSBwYXJhbU5hbWVzLnNpemUoKTsKQEAgLTE3MjAsMzcgKzE3
MTIsMzkgQEAgc3RhdGljIE5TVmlldyAqcGx1Z2luVmlldyhXZWJGcmFtZSAqZnJhbWUsIFdlYlBs
dWdpblBhY2thZ2UgKnBsdWdpblBhY2thZ2UsCiB7CiAgICAgV2ViSFRNTFZpZXcgKmRvY1ZpZXcg
PSAoV2ViSFRNTFZpZXcgKilbW2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBB
U1NFUlQoW2RvY1ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSk7Ci0gICAg
ICAgIAorCiAgICAgV2ViUGx1Z2luQ29udHJvbGxlciAqcGx1Z2luQ29udHJvbGxlciA9IFtkb2NW
aWV3IF9wbHVnaW5Db250cm9sbGVyXTsKLSAgICAKKwogICAgIC8vIFN0b3JlIGF0dHJpYnV0ZXMg
aW4gYSBkaWN0aW9uYXJ5IHNvIHRoZXkgY2FuIGJlIHBhc3NlZCB0byBXZWJQbHVnaW5zLgogICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1dGVWYWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVO
YW1lc107Ci0gICAgCisKICAgICBbcGx1Z2luUGFja2FnZSBsb2FkXTsKICAgICBDbGFzcyB2aWV3
RmFjdG9yeSA9IFtwbHVnaW5QYWNrYWdlIHZpZXdGYWN0b3J5XTsKICAgICAKICAgICBOU1ZpZXcg
KnZpZXcgPSBuaWw7CiAgICAgTlNEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBuaWw7Ci0gICAgCi0g
ICAgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdJblZp
ZXdXaXRoQXJndW1lbnRzOildKSB7Ci0gICAgICAgIGFyZ3VtZW50cyA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgIGJhc2VVUkwsIFdlYlBs
dWdJbkJhc2VVUkxLZXksCi0gICAgICAgICAgICBhdHRyaWJ1dGVzLCBXZWJQbHVnSW5BdHRyaWJ1
dGVzS2V5LAotICAgICAgICAgICAgcGx1Z2luQ29udHJvbGxlciwgV2ViUGx1Z0luQ29udGFpbmVy
S2V5LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bG9hZE1hbnVhbGx5ID8g
V2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWRdLCBXZWJQbHVnSW5Nb2RlS2V5
LAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLCBX
ZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5LAotICAgICAgICAgICAgZWxlbWVudCwg
V2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCi0gICAgICAgICAgICBuaWxdOwotICAgICAg
ICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVAIiwgYXJndW1lbnRzKTsKKwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKLSAgICB9IGVsc2UgaWYgKFt2aWV3
RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdpblZpZXdXaXRoQXJndW1l
bnRzOildKSB7CisgICAgYXV0byBvbGRTZWxlY3RvciA9IEBzZWxlY3RvcihwbHVnaW5WaWV3V2l0
aEFyZ3VtZW50czopOwogSUdOT1JFX1dBUk5JTkdTX0VORAotICAgICAgICBhcmd1bWVudHMgPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICBi
YXNlVVJMLCBXZWJQbHVnaW5CYXNlVVJMS2V5LAotICAgICAgICAgICAgYXR0cmlidXRlcywgV2Vi
UGx1Z2luQXR0cmlidXRlc0tleSwKLSAgICAgICAgICAgIHBsdWdpbkNvbnRyb2xsZXIsIFdlYlBs
dWdpbkNvbnRhaW5lcktleSwKLSAgICAgICAgICAgIGVsZW1lbnQsIFdlYlBsdWdJbkNvbnRhaW5p
bmdFbGVtZW50S2V5LAotICAgICAgICAgICAgbmlsXTsKKworICAgIGlmIChbdmlld0ZhY3Rvcnkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopXSkg
eworICAgICAgICBhcmd1bWVudHMgPSBAeworICAgICAgICAgICAgV2ViUGx1Z0luQmFzZVVSTEtl
eTogYmFzZVVSTCwKKyAgICAgICAgICAgIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0
ZXMsCisgICAgICAgICAgICBXZWJQbHVnSW5Db250YWluZXJLZXk6IHBsdWdpbkNvbnRyb2xsZXIs
CisgICAgICAgICAgICBXZWJQbHVnSW5Nb2RlS2V5OiBAKGxvYWRNYW51YWxseSA/IFdlYlBsdWdJ
bk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkKSwKKyAgICAgICAgICAgIFdlYlBsdWdJblNo
b3VsZExvYWRNYWluUmVzb3VyY2VLZXk6IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDohbG9hZE1h
bnVhbGx5XSwKKyAgICAgICAgICAgIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5OiBlbGVt
ZW50LAorICAgICAgICB9OworICAgICAgICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVAIiwg
YXJndW1lbnRzKTsKKyAgICB9IGVsc2UgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0
b3I6b2xkU2VsZWN0b3JdKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEB7CisgICAgICAgICAgICBX
ZWJQbHVnaW5CYXNlVVJMS2V5OiBiYXNlVVJMLAorICAgICAgICAgICAgV2ViUGx1Z2luQXR0cmli
dXRlc0tleTogYXR0cmlidXRlcywKKyAgICAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lcktleTog
cGx1Z2luQ29udHJvbGxlciwKKyAgICAgICAgICAgIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50
S2V5OiBlbGVtZW50LAorICAgICAgICB9OwogICAgICAgICBMT0coUGx1Z2lucywgImFyZ3VtZW50
czpcbiVAIiwgYXJndW1lbnRzKTsKICAgICB9CiAKQEAgLTE5MTksMTUgKzE5MTMsMTUgQEAgUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihj
b25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBhdXRvKiBkb2N1bWVudCA9IGNvcmUobV93ZWJGcmFt
ZS5nZXQoKSktPmRvY3VtZW50KCk7CiAgICAgTlNVUkwgKmJhc2VVUkwgPSBkb2N1bWVudC0+YmFz
ZVVSTCgpOwogICAgIE5TVVJMICpwbHVnaW5VUkwgPSB1cmw7Ci0gICAgTlNNdXRhYmxlQXJyYXkg
KmF0dHJpYnV0ZUtleXMgPSBraXQocGFyYW1OYW1lcyk7CisgICAgYXV0byBhdHRyaWJ1dGVLZXlz
ID0gY3JlYXRlTlNBcnJheShwYXJhbU5hbWVzKTsKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmll
dzpwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopOwogICAgIGlmIChbW3dlYlZpZXcgVUlEZWxlZ2F0
ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6a2l0KHBhcmFtVmFsdWVzKSBmb3JLZXlzOmF0dHJpYnV0ZUtleXNdOworICAgICAg
ICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAeyBhdHRyaWJ1dGVLZXlzLmdldCgpOiBjcmVh
dGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKSB9OwogICAgICAgICBOU0RpY3Rpb25hcnkgKmFy
Z3VtZW50cyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgog
ICAgICAgICAgICAgYXR0cmlidXRlcywgV2ViUGx1Z0luQXR0cmlidXRlc0tleSwKLSAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxvYWRNYW51YWxseSA/IFdlYlBsdWdJbk1vZGVG
dWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkXSwgV2ViUGx1Z0luTW9kZUtleSwKKyAgICAgICAgICAg
IEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWQp
LCBXZWJQbHVnSW5Nb2RlS2V5LAogICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OiFsb2FkTWFudWFsbHldLCBXZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5LAogICAg
ICAgICAgICAga2l0KCZlbGVtZW50KSwgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCiAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHBhc3NpbmcgYmFzZSBVUkwsIHNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjE1Pi4KQEAgLTE5MzYs
MTEgKzE5MzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXoKIAogICAgICAgICBOU1ZpZXcg
KnZpZXcgPSBDYWxsVUlEZWxlZ2F0ZSh3ZWJWaWV3LCBzZWxlY3RvciwgYXJndW1lbnRzKTsKIAot
ICAgICAgICBbYXR0cmlidXRlcyByZWxlYXNlXTsKICAgICAgICAgW2FyZ3VtZW50cyByZWxlYXNl
XTsKIAogICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGx1Z2luV2lkZ2V0KHZpZXcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
dWdpbldpZGdldCh2aWV3KSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTE5NTMsNyArMTk0Niw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgIE1JTUVUeXBlID0gbWltZVR5cGU7CiAg
ICAgICAgIHBsdWdpblBhY2thZ2UgPSBbd2ViVmlldyBfcGx1Z2luRm9yTUlNRVR5cGU6bWltZVR5
cGVdOwogICAgIH0KLSAgICAKKwogICAgIE5TU3RyaW5nICpleHRlbnNpb24gPSBbW3BsdWdpblVS
TCBwYXRoXSBwYXRoRXh0ZW5zaW9uXTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
OTc5LDcgKzE5NzIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgICAgICAgICAgICAg
IGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0PigqZWxlbWVudC5yZW5kZXJl
cigpKS5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihXZWJDb3JlOjpSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6SW5zZWN1cmVQbHVnaW5WZXJzaW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNsYXNzOltXZWJQbHVnaW5QYWNrYWdl
IGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgdmlldyA9IHBsdWdpblZpZXcobV93ZWJGcmFtZS5n
ZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5QYWNrYWdlLCBhdHRyaWJ1dGVLZXlzLCBr
aXQocGFyYW1WYWx1ZXMpLCBiYXNlVVJMLCBraXQoJmVsZW1lbnQpLCBsb2FkTWFudWFsbHkpOwor
ICAgICAgICAgICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3KG1fd2ViRnJhbWUuZ2V0KCksIChXZWJQ
bHVnaW5QYWNrYWdlICopcGx1Z2luUGFja2FnZSwgYXR0cmlidXRlS2V5cy5nZXQoKSwgY3JlYXRl
TlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCksIGJhc2VVUkwsIGtpdCgmZWxlbWVudCksIGxvYWRN
YW51YWxseSk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgICAgICBl
bHNlIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNsYXNzOltXZWJOZXRzY2FwZVBsdWdpblBh
Y2thZ2UgY2xhc3NdXSkgewogICAgICAgICAgICAgICAgIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcgKnBsdWdpblZpZXcgPSBbW1tORVRTQ0FQRV9QTFVHSU5fVklFVyBhbGxvY10KQEAgLTE5ODgs
OCArMTk4MSw4IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgICAgICAgICAgICAg
IFVSTDpwbHVnaW5VUkwKICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDpiYXNlVVJMCiAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOk1JTUVUeXBlCi0gICAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZUtleXM6YXR0cmlidXRlS2V5cwotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVW
YWx1ZXM6a2l0KHBhcmFtVmFsdWVzKQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlz
OmF0dHJpYnV0ZUtleXMuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVz
OmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgpCiAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYW51YWxseTpsb2FkTWFudWFsbHkKICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDomZWxl
bWVudF0gYXV0b3JlbGVhc2VdOwogCkBAIC0yMDgzLDggKzIwNzYsOCBAQCBSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBXZWJDbwogICAgICAgICAgICAgICAgICAgICBVUkw6bmlsCiAgICAgICAgICAgICAgICAg
ICAgIGJhc2VVUkw6YmFzZVVSTAogICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpNSU1FVHlw
ZQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmtpdChwYXJhbU5hbWVzKQotICAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6a2l0KHBhcmFtVmFsdWVzKQorICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmNyZWF0ZU5TQXJyYXkocGFyYW1OYW1lcykuZ2V0
KCkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmNyZWF0ZU5TQXJyYXkocGFy
YW1WYWx1ZXMpLmdldCgpCiAgICAgICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTpOTwogICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50OiZlbGVtZW50XSBhdXRvcmVsZWFzZV07CiAgICAgICAg
ICAgICAgICAgaWYgKHZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1t
CmluZGV4IDU1ZmIyYmRmYWQxYTVmNzc0YzgyMTIyM2NhNzg2MjgxOWZjMTRkZjAuLmFhYTRhZmI1
ZmNjNmFlYzhjZjRiM2IxZjIxYzgzMjEwYzI3ZDQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgPFdlYkNvcmUv
RmlsZUNob29zZXIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdl
YkNvcmUvSWNvbi5oPgpAQCAtNjQsMTEgKzY1LDcgQEAgLSAodm9pZCljaG9vc2VGaWxlbmFtZXM6
KE5TQXJyYXkgKilmaWxlbmFtZXMKICAgICBBU1NFUlQoX2Nob29zZXIpOwogICAgIGlmICghX2No
b29zZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2ZpbGVuYW1l
cyBjb3VudF07Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFtZXMoY291bnQpOwotICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIG5hbWVzW2ldID0gW2ZpbGVu
YW1lcyBvYmplY3RBdEluZGV4OmldOwotICAgIF9jaG9vc2VyLT5jaG9vc2VGaWxlcyhuYW1lcyk7
CisgICAgX2Nob29zZXItPmNob29zZUZpbGVzKG1ha2VWZWN0b3I8U3RyaW5nPihmaWxlbmFtZXMp
KTsKICAgICBfY2hvb3NlciA9IG51bGxwdHI7CiB9CiAKQEAgLTc2LDcgKzczLDcgQEAgLSAodm9p
ZCljaG9vc2VGaWxlbmFtZXM6KE5TQXJyYXkgKilmaWxlbmFtZXMKIAogLSAodm9pZCljaG9vc2VG
aWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBkaXNwbGF5U3RyaW5nOihOU1N0cmluZyAqKWRp
c3BsYXlTdHJpbmcgaWNvbkltYWdlOihDR0ltYWdlUmVmKWltYWdlUmVmCiB7Ci0gICAgW3NlbGYg
Y2hvb3NlRmlsZW5hbWVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpmaWxlbmFtZV0gZGlzcGxh
eVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTppbWFnZVJlZl07CisgICAgW3NlbGYgY2hv
b3NlRmlsZW5hbWVzOkBbZmlsZW5hbWVdIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29u
SW1hZ2U6aW1hZ2VSZWZdOwogfQogCiAtICh2b2lkKWNob29zZUZpbGVuYW1lczooTlNBcnJheSAq
KWZpbGVuYW1lcyBkaXNwbGF5U3RyaW5nOihOU1N0cmluZyAqKWRpc3BsYXlTdHJpbmcgaWNvbklt
YWdlOihDR0ltYWdlUmVmKWltYWdlUmVmCkBAIC04NSwxMSArODIsNyBAQCAtICh2b2lkKWNob29z
ZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuYW1lcyBkaXNwbGF5U3RyaW5nOihOU1N0cmluZyAq
KWRpc3BsYXlTdAogICAgIGlmICghX2Nob29zZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZl
Y3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIG5hbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW2Zp
bGVuYW1lcyBjb3VudF0pOwotICAgIGZvciAoTlNTdHJpbmcgKmZpbGVuYW1lIGluIGZpbGVuYW1l
cykKLSAgICAgICAgbmFtZXMudW5jaGVja2VkQXBwZW5kKGZpbGVuYW1lKTsKLSAgICBfY2hvb3Nl
ci0+Y2hvb3NlTWVkaWFGaWxlcyhuYW1lcywgZGlzcGxheVN0cmluZywgSWNvbjo6Y3JlYXRlSWNv
bkZvckltYWdlKGltYWdlUmVmKS5nZXQoKSk7CisgICAgX2Nob29zZXItPmNob29zZU1lZGlhRmls
ZXMobWFrZVZlY3RvcjxTdHJpbmc+KGZpbGVuYW1lcyksIGRpc3BsYXlTdHJpbmcsIEljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZShpbWFnZVJlZikuZ2V0KCkpOwogICAgIF9jaG9vc2VyID0gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQppbmRl
eCA5MzQzNzU3YWE1ZGNjMGNiMjFmODExMDIxZjQ0NGMyMjNkMGU1MGU3Li45M2JlZDY5YTE0NzM4
ZjgzNjFiMWY4Njc2MDNmZjgxMWRiMDU5ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlci5tbQpAQCAtNDAsNyArNDAsNyBAQCBXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlcjo6V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyAqd2ViVmll
dykKIHsKIH0KIAotdm9pZCBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFuZGxlU2Vs
ZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQpCit2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVT
ZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIC8qdGVsZXBob25lTnVtYmVycyovLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07
CiAgICAgaWYgKCFwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggYmQ5YTY3ODFiYmVhMDYxMWUyZTRkNzA0OTYwODZjZWZkNThiMTE0Yi4uMmFi
YmQ5MjRiN2VhMDBkYTMwMzk4MmUxMGQ0NjBjNTFhYmM4MjMxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMDgsNiArMTA4LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldl
Yk1haWxEZWxlZ2F0ZS5oIgpAQCAtMTA5MSw2ICsxMDkyLDcgQEAgLSAoV2ViRnJhbWVMb2FkVHlw
ZSlfbG9hZFR5cGUKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKIC0gKEJPT0wpbmVl
ZHNMYXlvdXQKIHsKICAgICAvLyBOZWVkZWQgZm9yIE1haWwgPHJkYXI6Ly9wcm9ibGVtLzYyMjgw
Mzg+CkBAIC0xMTA3LDM5ICsxMTA5LDI2IEBAIC0gKEJPT0wpX2xvYWRzU3luY2hyb25vdXNseQog
ICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5sb2Fkc1N5bmNocm9ub3Vz
bHkoKTsKIH0KIAotLy8gRklYTUU6IHNlbGVjdGlvbgotCiAtIChOU0FycmF5ICopX3JlY3RzRm9y
UmFuZ2U6KERPTVJhbmdlICopZG9tUmFuZ2UKIHsKICAgICBhdXRvKiByYW5nZSA9IGNvcmUoZG9t
UmFuZ2UpOwotICAgIAorICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBAW107CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGludFJlY3RzOwogICAgIHJhbmdlLT5hYnNvbHV0ZVRl
eHRSZWN0cyhpbnRSZWN0cywgTk8pOwotICAgIHVuc2lnbmVkIHNpemUgPSBpbnRSZWN0cy5zaXpl
KCk7Ci0gICAgCi0gICAgTlNNdXRhYmxlQXJyYXkgKnJlY3RBcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7Ci0gICAgICAgIFtyZWN0QXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVl
V2l0aFJlY3Q6KENHUmVjdCApaW50UmVjdHNbaV1dXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHJlY3RBcnJheTsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShpbnRSZWN0cykuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilfc2VsZWN0aW9uUmFuZ2VGb3JGaXJzdFBvaW50OihD
R1BvaW50KWZpcnN0IHNlY29uZFBvaW50OihDR1BvaW50KXNlY29uZAogewotICAgIFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbiBmaXJzdFBvcyA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dDpmaXJzdF07Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHNlY29uZFBvcyA9IFtzZWxm
IF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpzZWNvbmRdOwotICAgIFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uKGZpcnN0UG9zLCBzZWNvbmRQb3MpOwotICAgIERPTVJhbmdlICpy
YW5nZSA9IGtpdChzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJhbmdlOyAgICAKKyAgICBhdXRvIGZpcnN0UG9zaXRpb24gPSBbc2VsZiBfdmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQ6Zmlyc3RdOworICAgIGF1dG8gc2Vjb25kUG9zaXRpb24gPSBbc2VsZiBf
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQ6c2Vjb25kXTsKKyAgICByZXR1cm4ga2l0KFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbiwgc2Vjb25kUG9zaXRpb24pLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAtIChET01SYW5nZSAqKV9zZWxlY3Rpb25SYW5nZUZv
clBvaW50OihDR1BvaW50KXBvaW50CiB7Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHBv
cyA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpwb2ludF07Ci0gICAgV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ocG9zKTsKLSAgICBET01SYW5nZSAqcmFuZ2UgPSBr
aXQoc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwotICAgIHJldHVybiByYW5n
ZTsKKyAgICByZXR1cm4ga2l0KFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24oW3NlbGYgX3Zpc2li
bGVQb3NpdGlvbkZvclBvaW50OnBvaW50XSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjI3MSwyMSArMjI2MCwyMSBA
QCAtIChOU0FycmF5ICopX2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjooZmxv
YXQpcHJpbnRTY2FsZUZhY3RvciBwYWdlUwogewogICAgIGlmIChwcmludFNjYWxlRmFjdG9yIDw9
IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJwcmludFNjYWxlRmFjdG9yIGhhcyBiYWQgdmFsdWUg
JS4yZiIsIHByaW50U2NhbGVGYWN0b3IpOwotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgICAgICByZXR1cm4gQFtdOwogICAgIH0KIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVG
cmFtZSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAgICAgcmV0dXJuIEBb
XTsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAgICAgaWYgKCFfcHJp
dmF0ZS0+Y29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07
CisgICAgICAgIHJldHVybiBAW107CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lLT52aWV3
KCktPmRvY3VtZW50VmlldygpKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAg
ICAgICByZXR1cm4gQFtdOwogCiAgICAgYXV0byogcm9vdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07CisgICAgICAgIHJldHVybiBAW107CiAKICAgICBjb25zdCBhdXRv
JiBkb2N1bWVudFJlY3QgPSByb290LT5kb2N1bWVudFJlY3QoKTsKICAgICBmbG9hdCBwcmludFdp
ZHRoID0gcm9vdC0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRvY3VtZW50UmVjdC53aWR0aCgpKSAvIHByaW50U2NhbGVGYWN0b3IgOiBwYWdl
U2l6ZS53aWR0aDsKQEAgLTIyOTMsMTMgKzIyODIsNyBAQCAtIChOU0FycmF5ICopX2NvbXB1dGVQ
YWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjooZmxvYXQpcHJpbnRTY2FsZUZhY3RvciBwYWdl
UwogCiAgICAgV2ViQ29yZTo6UHJpbnRDb250ZXh0IHByaW50Q29udGV4dChfcHJpdmF0ZS0+Y29y
ZUZyYW1lKTsKICAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShX
ZWJDb3JlOjpGbG9hdFNpemUocHJpbnRXaWR0aCwgcHJpbnRIZWlnaHQpLCB0cnVlKTsKLSAgICBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cyA9IHByaW50Q29udGV4dC5w
YWdlUmVjdHMoKTsKLQotICAgIHNpemVfdCBzaXplID0gcGFnZVJlY3RzLnNpemUoKTsKLSAgICBO
U011dGFibGVBcnJheSAqcGFnZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
c2l6ZV07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtw
YWdlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU1JlY3QocGFnZVJlY3RzW2ld
KV1dOwotICAgIHJldHVybiBwYWdlczsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShwcmludENv
bnRleHQucGFnZVJlY3RzKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMjYyMyw3ICsyNjA2LDcgQEAgLSAoTlNBcnJheSAqKWNoaWxkRnJhbWVzCiB7
CiAgICAgYXV0byBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29y
ZUZyYW1lKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4g
QFtdOwogICAgIE5TTXV0YWJsZUFycmF5ICpjaGlsZHJlbiA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpjb3JlRnJhbWUtPnRyZWUoKS5jaGlsZENvdW50KCldOwogICAgIGZvciAo
V2ViQ29yZTo6RnJhbWUqIGNoaWxkID0gY29yZUZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIFtjaGls
ZHJlbiBhZGRPYmplY3Q6a2l0KGNoaWxkKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1YmEyZTc4MDQ2ZjQ2ODA3ZDE4ZWI0MTg3NzNh
ZThiMjE0MjFmZmUyLi5jOTE1NWIxNmNkZjA3ZWIxYzlhZDBjNGFiYTBlOTI4MzQ3NDNjNTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAg
LTE0OSw2ICsxNDksNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9T
eXN0ZW1UcmFjaW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCAiV2Vi
TlNFdmVudEV4dHJhcy5oIgpAQCAtMTk5NSw3ICsxOTk2LDcgQEAgKyAoTlNBcnJheSAqKV9pbnNl
cnRhYmxlUGFzdGVib2FyZFR5cGVzCiArIChOU0FycmF5ICopX3NlbGVjdGlvblBhc3RlYm9hcmRU
eXBlcwogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHV0IGRhdGEgZm9yIE5TSFRNTFBib2Fy
ZFR5cGUgb24gdGhlIHBhc3RlYm9hcmQgYnV0IE1pY3Jvc29mdCBFeGNlbCBkb2Vzbid0IGxpa2Ug
b3VyIGZvcm1hdCBvZiBIVE1MICgzNjQwNDIzKS4KLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5pbF07CisgICAgcmV0dXJuIEBbV2ViQXJj
aGl2ZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVH
SU4KQEAgLTQ0MDQsNyArNDQwNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIGlmIChkcmFnZ2luZ0VsZW1lbnRVUkwpCiAgICAgICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDpbZHJhZ2dpbmdFbGVtZW50
VVJMIGFic29sdXRlU3RyaW5nXSByZWZlcnJlcjpuaWwgYXRQYXRoOnBhdGhdOwogICAgIAotICAg
IHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRd
XTsKKyAgICByZXR1cm4gQFtbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQogCiAvLyBNQVJL
OiBOU0RyYWdnaW5nU291cmNlCkBAIC00ODgxLDcgKzQ4ODIsNyBAQCAtIChCT09MKWtub3dzUGFn
ZVJhbmdlOihOU1JhbmdlUG9pbnRlcilyYW5nZQogICAgIC8vIGEgYmxhbmsgcGFnZSAod2l0aCBj
b3JyZWN0LWxvb2tpbmcgaGVhZGVyIGFuZCBmb290ZXIgaWYgdGhhdCBvcHRpb24gaXMgb24pLCB3
aGljaCBtYXRjaGVzCiAgICAgLy8gdGhlIGJlaGF2aW9yIG9mIElFIGFuZCBDYW1pbm8gYXQgbGVh
c3QuCiAgICAgaWYgKFtuZXdQYWdlUmVjdHMgY291bnRdID09IDApCi0gICAgICAgIG5ld1BhZ2VS
ZWN0cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5T
TWFrZVJlY3QoMCwgMCwgMSwgMSldXTsKKyAgICAgICAgbmV3UGFnZVJlY3RzID0gQFtbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgMSwgMSldXTsKIAogICAgIF9wcml2YXRl
LT5wYWdlUmVjdHMgPSBuZXdQYWdlUmVjdHM7CiAKQEAgLTUwMTksNyArNTAyMCw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAg
ICAgICBpZCBhY2NUcmVlID0gW1tzZWxmIF9mcmFtZV0gYWNjZXNzaWJpbGl0eVJvb3RdOwogICAg
ICAgICBpZiAoYWNjVHJlZSkKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6YWNjVHJlZV07CisgICAgICAgICAgICByZXR1cm4gQFthY2NUcmVlXTsKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICB9CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6YXR0cmlidXRlTmFtZV07CkBAIC01MjkyLDcgKzUyOTMsNyBAQCAtICh2b2lkKWNv
cHlGb250OihpZClzZW5kZXIKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICBOU1Bhc3RlYm9hcmQgKmZvbnRQYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBw
YXN0ZWJvYXJkV2l0aE5hbWU6TlNGb250UGJvYXJkXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICBbZm9udFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKV0gb3du
ZXI6bmlsXTsKKyAgICBbZm9udFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbV2ViQ29yZTo6bGVn
YWN5Rm9udFBhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CiAgICAgW2ZvbnRQYXN0ZWJvYXJk
IHNldERhdGE6W3NlbGYgX3NlbGVjdGlvblN0YXJ0Rm9udEF0dHJpYnV0ZXNBc1JURl0gZm9yVHlw
ZTpXZWJDb3JlOjpsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKV07CiB9CiAKQEAgLTYwMjMsNyAr
NjAyNCw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihOYWtlZFB0cjxXZWJDb3JlOjpL
ZXlib2FyZEV2ZW50PilldmVudCBzYXZpbmdDb21tYW5kCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhl
IGNhbGxzIGltbWVkaWF0ZWx5LiBET00gZXZlbnRzIGxpa2Uga2V5ZG93biBhcmUgdHdlYWtlZCB0
byBoYXZlIGtleUNvZGUgb2YgMjI5LCBhbmQgY2FuY2VsaW5nIHRoZW0gaGFzIG5vIGVmZmVjdC4K
ICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlcmUgaXMgbm8gcmVhbCBkaWZmZXJlbmNlIGJl
dHdlZW4gcGxhaW4gdGV4dCBpbnB1dCBhbmQgSU0gcHJvY2Vzc2luZyAtIGZvciBleGFtcGxlLCBB
cHBLaXQgcXVlcmllcyBoYXNNYXJrZWRUZXh0CiAgICAgICAgIC8vIHdoZW4gdHlwaW5nIHdpdGgg
VS5TLiBrZXlib2FyZCwgYW5kIGluc2VydHMgbWFya2VkIHRleHQgZm9yIGRlYWQga2V5cy4KLSAg
ICAgICAgW3NlbGYgaW50ZXJwcmV0S2V5RXZlbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpt
YWNFdmVudF1dOworICAgICAgICBbc2VsZiBpbnRlcnByZXRLZXlFdmVudHM6QFttYWNFdmVudF1d
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFyZSB0aGVyZSBjb21tYW5kcyB0aGF0IGNvdWxk
IGp1c3QgY2F1c2UgdGV4dCBpbnNlcnRpb24gaWYgZXhlY3V0ZWQgdmlhIEVkaXRvcj8KICAgICAg
ICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0
byBkZWNpZGUgaG93IHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQsIHNvIHdlIGxlYXZlIGl0IHVwb24g
V2ViQ29yZQpAQCAtNjgzNCwxOCArNjgzNSwxMCBAQCAtIChOU0FycmF5ICopc2VsZWN0aW9uVGV4
dFJlY3RzCiAgICAgaWYgKCFbc2VsZiBfaGFzU2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IGxpc3Q7CisgICAgVmVjdG9yPFdl
YkNvcmU6OkZsb2F0UmVjdD4gcmVjdHM7CiAgICAgaWYgKGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuZ2V0Q2xpcHBl
ZFZpc2libGVUZXh0UmVjdGFuZ2xlcyhsaXN0KTsKLQotICAgIHNpemVfdCBzaXplID0gbGlzdC5z
aXplKCk7Ci0KLSAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5V2l0aENhcGFjaXR5OnNpemVdOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6
bGlzdFtpXV1dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY29yZUZyYW1lLT5zZWxl
Y3Rpb24oKS5nZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKHJlY3RzKTsKKyAgICByZXR1
cm4gY3JlYXRlTlNBcnJheShyZWN0cykuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNWaWV3ICop
c2VsZWN0aW9uVmlldwpAQCAtNzEzMSwxNyArNzEyNCwxMiBAQCAtIChOU0FycmF5ICopcmVjdHNG
b3JUZXh0TWF0Y2hlcwogewogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07
CisgICAgICAgIHJldHVybiBAW107CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5XTsKKyAgICAgICAgcmV0dXJuIEBbXTsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IHJlY3RzID0gZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW5kZXJlZFJlY3RzRm9yTWFya2VycyhX
ZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKLSAgICB1bnNpZ25lZCBjb3VudCA9
IHJlY3RzLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OmNvdW50XTsKLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6W05T
VmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0c1tpbmRleF1dXTsgICAgCi0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShkb2N1bWVudC0+bWFya2VycygpLnJlbmRlcmVk
UmVjdHNGb3JNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpKS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtIChCT09MKV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBv
cHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQppbmRleCBlNGQwNjQy
OWQ5ZWMzZDk2NzU2ZTVmYTJiNjVjMGU4ZWE2NzM4YjQ0Li5lYmNhM2IwODRlNmI1ZjAxYTNiNWNm
ZGFmZTdjYTFhZWMyOTRkMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KQEAgLTM5LDI1ICszOSwyNSBAQAog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiBAaW1wbGVtZW50YXRpb24gV2ViUERGUmVwcmVzZW50YXRpb24KIAogKyAoTlNBcnJheSAq
KXBvc3RTY3JpcHRNSU1FVHlwZXMKIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czoKKyAgICByZXR1cm4gQFsKICAgICAgICAgQCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwK
LSAgICAgICAgbmlsXTsKKyAgICBdOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5
cGVzCiB7CiAgICAgcmV0dXJuIFtbW3NlbGYgY2xhc3NdIHBvc3RTY3JpcHRNSU1FVHlwZXNdIGFy
cmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OgotICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOgorICAgICAgICBAWwogICAgICAgICAgICAgQCJ0ZXh0L3BkZiIsCiAgICAgICAgICAg
ICBAImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICAgICBuaWxdXTsKKyAgICAgICAgXQorICAg
IF07CiB9CiAKICsgKENsYXNzKVBERkRvY3VtZW50Q2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCBlYzdiZWZjOGU1YzE4NDVjZjc5M2Uw
ZWFkYWI2ZDAzZGI3ZTNmNGFjLi43MTBjOTdiYjA0YWI0Zjk0MjgwMDIzZDkxMWUyZjEwNGUwNzZl
M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CkBAIC01OTAsMTMgKzU5MCwxMCBAQCAtICh2b2lkKXZpZXdEaWRNb3ZlVG9Ib3N0V2luZG93CiAK
IC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50CiB7Ci0gICAg
V2ViRnJhbWUgKmZyYW1lID0gW2RhdGFTb3VyY2Ugd2ViRnJhbWVdOwotICAgIEFTU0VSVChmcmFt
ZSk7Ci0gICAgCi0gICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgZnJhbWUsIFdlYkVsZW1lbnRGcmFtZUtleSwgCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpbc2VsZiBfcG9pbnRJc0luU2VsZWN0aW9uOnBvaW50XV0s
IFdlYkVsZW1lbnRJc1NlbGVjdGVkS2V5LAotICAgICAgICBuaWxdOworICAgIHJldHVybiBAewor
ICAgICAgICBXZWJFbGVtZW50RnJhbWVLZXk6IFtkYXRhU291cmNlIHdlYkZyYW1lXSwKKyAgICAg
ICAgV2ViRWxlbWVudElzU2VsZWN0ZWRLZXk6IEAoW3NlbGYgX3BvaW50SXNJblNlbGVjdGlvbjpw
b2ludF0pLAorICAgIH07CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihO
U1BvaW50KXBvaW50IGFsbG93U2hhZG93Q29udGVudDooQk9PTClhbGxvdwpAQCAtNzk1LDEwICs3
OTIsMTAgQEAgLSAoaWQpdmlld1N0YXRlCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnN0YXRlID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjRdOwogICAgIFBERkRpc3BsYXlNb2Rl
IG1vZGUgPSBbUERGU3VidmlldyBkaXNwbGF5TW9kZV07Ci0gICAgW3N0YXRlIGFkZE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RlXV07CisgICAgW3N0YXRlIGFkZE9iamVjdDpAKG1v
ZGUpXTsKICAgICBpZiAobW9kZSA9PSBrUERGRGlzcGxheVNpbmdsZVBhZ2UgfHwgbW9kZSA9PSBr
UERGRGlzcGxheVR3b1VwKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlSW5kZXggPSBbW1BE
RlN1YnZpZXcgZG9jdW1lbnRdIGluZGV4Rm9yUGFnZTpbUERGU3VidmlldyBjdXJyZW50UGFnZV1d
OwotICAgICAgICBbc3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJ
bnQ6cGFnZUluZGV4XV07CisgICAgICAgIFtzdGF0ZSBhZGRPYmplY3Q6QChwYWdlSW5kZXgpXTsK
ICAgICB9ICAvLyBlbHNlIGluIGNvbnRpbnVvdXMgbW9kZXMsIHNjcm9sbCBwb3NpdGlvbiBnZXRz
IHVzIHRvIHRoZSByaWdodCBwYWdlCiAgICAgQk9PTCBhdXRvU2NhbGVGbGFnID0gW1BERlN1YnZp
ZXcgYXV0b1NjYWxlc107CiAgICAgW3N0YXRlIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6YXV0b1NjYWxlRmxhZ11dOwpAQCAtODgyLDcgKzg3OSw3IEBAIC0gKE5TUmVjdClzZWxl
Y3Rpb25SZWN0CiAtIChOU0FycmF5ICopc2VsZWN0aW9uVGV4dFJlY3RzCiB7CiAgICAgLy8gRklY
TUU6IFdlJ2QgbmVlZCBuZXcgUERGS2l0IEFQSS9TUEkgdG8gZ2V0IG11bHRpcGxlIHRleHQgcmVj
dHMgZm9yIHNlbGVjdGlvbnMgdGhhdCBpbnRlcnNlY3QgbW9yZSB0aGFuIG9uZSBsaW5lCi0gICAg
cmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Oltz
ZWxmIHNlbGVjdGlvblJlY3RdXV07CisgICAgcmV0dXJuIEBbW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpbc2VsZiBzZWxlY3Rpb25SZWN0XV1dOwogfQogCiAtIChOU1ZpZXcgKilzZWxlY3Rpb25WaWV3
CkBAIC05MjYsNyArOTIzLDcgQEAgLSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdAogCiAtIChO
U0FycmF5ICopcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCksIG5pbF07CisgICAgcmV0dXJuIEBbV2ViQ29yZTo6bGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogfQogCiAtICh2b2lkKXdyaXRl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2Fy
ZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtMTEyNCwyMiArMTEyMSwyMyBAQCBzdGF0
aWMgdm9pZCByZW1vdmVVc2VsZXNzTWVudUl0ZW1TZXBhcmF0b3JzKE5TTXV0YWJsZUFycmF5ICpt
ZW51SXRlbXMpCiAtIChOU011dGFibGVBcnJheSAqKV9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZl
bnQ6KE5TRXZlbnQgKil0aGVFdmVudAogewogICAgIE5TTXV0YWJsZUFycmF5ICpjb3BpZWRJdGVt
cyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zVG9U
YWdzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5kZWNsYXJlZC1zZWxlY3RvciIpCi0gICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZV0sIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKSwKLSAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZab29tSW5dLCBOU1N0cmluZ0Zyb21TZWxlY3Rv
cihAc2VsZWN0b3Ioem9vbUluOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpX
ZWJNZW51SXRlbVBERlpvb21PdXRdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9v
bU91dDopKSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZB
dXRvU2l6ZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0b1NpemU6KSks
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYk1lbnVJdGVtUERGU2luZ2xlUGFn
ZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZTopKSwKLSAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlU2Ny
b2xsaW5nXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlU2Ny
b2xsaW5nOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBE
RkZhY2luZ1BhZ2VzXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQ
YWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRlbVBERkZh
Y2luZ1BhZ2VzU2Nyb2xsaW5nXSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRE
b3VibGVQYWdlU2Nyb2xsaW5nOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpX
ZWJNZW51SXRlbVBERkNvbnRpbnVvdXNdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Io
X3RvZ2dsZUNvbnRpbnVvdXM6KSksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50Oldl
Yk1lbnVJdGVtUERGTmV4dFBhZ2VdLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29U
b05leHRQYWdlOikpLAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJNZW51SXRl
bVBERlByZXZpb3VzUGFnZV0sIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvUHJl
dmlvdXNQYWdlOikpLAotSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIE5TRGljdGlvbmFyeSAqYWN0
aW9uc1RvVGFncyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICBAKFdlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZSksIE5TU3RyaW5nRnJvbVNlbGVj
dG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBE
Rlpvb21JbiksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tSW46KSksCisgICAg
ICAgIEAoV2ViTWVudUl0ZW1QREZab29tT3V0KSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVj
dG9yKHpvb21PdXQ6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1QREZBdXRvU2l6ZSksIE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0b1NpemU6KSksCisgICAgICAgIEAoV2Vi
TWVudUl0ZW1QREZTaW5nbGVQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9z
ZXRTaW5nbGVQYWdlOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGU2luZ2xlUGFnZVNjcm9s
bGluZyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZVNjcm9s
bGluZzopKSwKKyAgICAgICAgQChXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2VzKSwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlOikpLAorICAgICAgICBAKFdlYk1l
bnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2Vs
ZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSksCisgICAgICAgIEAoV2ViTWVudUl0ZW1Q
REZDb250aW51b3VzKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF90b2dnbGVDb250
aW51b3VzOikpLAorICAgICAgICBAKFdlYk1lbnVJdGVtUERGTmV4dFBhZ2UpLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub05leHRQYWdlOikpLAorICAgICAgICBAKFdlYk1lbnVJ
dGVtUERGUHJldmlvdXNQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9Q
cmV2aW91c1BhZ2U6KSksCiAgICAgICAgIG5pbF07Ci0gICAgCitJR05PUkVfV0FSTklOR1NfRU5E
CisKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0ZW1zIG91dCwgc2luY2UgV2ViS2l0IGluc2Vy
dHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQgd2UgbGVhdmUgb3V0IFBERktpdCdzICJMb29r
IFVwIGluIERpY3Rpb25hcnkiCiAgICAgLy8gaXRlbSBoZXJlIGJlY2F1c2UgV2ViS2l0IGFscmVh
ZHkgaW5jbHVkZXMgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIHRpdGxlIGFuZCBwdXJwb3NlLiBXZSBt
YXAgV2ViS2l0J3MgdG8gUERGS2l0J3MgCiAgICAgLy8gIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIg
dmlhIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYlBERlZpZXcgX2xvb2tVcEluRGljdGlvbmFy
eUZyb21NZW51Ol0uCkBAIC0xMjY1LDIwICsxMjYzLDEzIEBAIC0gKHZvaWQpX29wZW5XaXRoRmlu
ZGVyOihpZClzZW5kZXIKICAgICBpZiAob3BhdGgpIHsKICAgICAgICAgaWYgKCF3cml0dGVuKSB7
CiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBQREYgZmlsZSB3aXRoIHRoZSBtaW5pbWFsIHBlcm1p
c3Npb25zIChvbmx5IGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlciwgc2VlIDQxNDU3MTQp
Ci0gICAgICAgICAgICBOU051bWJlciAqcGVybWlzc2lvbnMgPSBbW05TTnVtYmVyIGFsbG9jXSBp
bml0V2l0aEludDpTX0lSVVNSXTsKLSAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZmlsZUF0dHJp
YnV0ZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpwZXJt
aXNzaW9ucywgTlNGaWxlUG9zaXhQZXJtaXNzaW9ucywgbmlsXTsKLSAgICAgICAgICAgIFtwZXJt
aXNzaW9ucyByZWxlYXNlXTsKLQotICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVGaWxlQXRQYXRoOm9wYXRoIGNvbnRlbnRzOltkYXRhU291cmNlIGRhdGFd
IGF0dHJpYnV0ZXM6ZmlsZUF0dHJpYnV0ZXNdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBb
ZmlsZUF0dHJpYnV0ZXMgcmVsZWFzZV07CisgICAgICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNyZWF0ZUZpbGVBdFBhdGg6b3BhdGggY29udGVudHM6W2RhdGFTb3VyY2Ug
ZGF0YV0gYXR0cmlidXRlczpAeyBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zOiBAKFNfSVJVU1IpIH1d
OwogICAgICAgICAgICAgd3JpdHRlbiA9IFlFUzsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKCFbW05T
V29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZpbGU6b3BhdGhdKSB7Ci0gICAgICAgICAg
ICAvLyBOU1dvcmtzcGFjZSBjb3VsZG4ndCBvcGVuIGZpbGUuICBEbyB3ZSBuZWVkIGFuIGFsZXJ0
Ci0gICAgICAgICAgICAvLyBoZXJlPyAgV2UgaWdub3JlIHRoZSBlcnJvciBlbHNld2hlcmUuCisg
ICAgICAgICAgICAvLyBOU1dvcmtzcGFjZSBjb3VsZG4ndCBvcGVuIGZpbGUuIERvIHdlIG5lZWQg
YW4gYWxlcnQgaGVyZT8gV2UgaWdub3JlIHRoZSBlcnJvciBlbHNld2hlcmUuCiAgICAgICAgIH0K
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQpAQCAtMTM0
NSwxMiArMTMzNiw3IEBAIC0gKFBERlZpZXcgKilfUERGU3VidmlldwogLSAoQk9PTClfcG9pbnRJ
c0luU2VsZWN0aW9uOihOU1BvaW50KXBvaW50CiB7CiAgICAgUERGUGFnZSAqcGFnZSA9IFtQREZT
dWJ2aWV3IHBhZ2VGb3JQb2ludDpwb2ludCBuZWFyZXN0Ok5PXTsKLSAgICBpZiAoIXBhZ2UpCi0g
ICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICBOU1JlY3Qgc2VsZWN0aW9uUmVjdCA9IFtQREZT
dWJ2aWV3IGNvbnZlcnRSZWN0OltbUERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBib3VuZHNG
b3JQYWdlOnBhZ2VdIGZyb21QYWdlOnBhZ2VdOwotICAgIAotICAgIHJldHVybiBOU1BvaW50SW5S
ZWN0KHBvaW50LCBzZWxlY3Rpb25SZWN0KTsKKyAgICByZXR1cm4gcGFnZSAmJiBOU1BvaW50SW5S
ZWN0KHBvaW50LCBbUERGU3VidmlldyBjb252ZXJ0UmVjdDpbW1BERlN1YnZpZXcgY3VycmVudFNl
bGVjdGlvbl0gYm91bmRzRm9yUGFnZTpwYWdlXSBmcm9tUGFnZTpwYWdlXSk7CiB9CiAKIC0gKHZv
aWQpX3NjYWxlT3JEaXNwbGF5TW9kZU9yUGFnZUNoYW5nZWQ6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQppbmRleCAwMjc5Mzk0MzA4MDQ2YjhhMjgzYWI2YWEzNjA0ODI5YWIyOWZkMWI3
Li4xODA5MjljNGQxZjY5N2Y3MDQxOThjM2Q5YzhjODUyYmQ2ZGU2OWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTQ2NSwx
NyArNDY1LDE2IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAIjAiLCBXZWJLaXRQREZT
Y2FsZUZhY3RvclByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgQCIwIiwgV2ViS2l0VXNl
U2l0ZVNwZWNpZmljU3Bvb2ZpbmdQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpXZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3JdLCBXZWJLaXRFZGl0
YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXksCisgICAgICAgIEAoV2ViS2l0RWRpdGFibGVM
aW5rRGVmYXVsdEJlaGF2aW9yKSwgV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNl
S2V5LAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpXZWJUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9tYXRpY2FsbHlJbmNsdWRlZF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VGV4dERpcmVjdGlv
blN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXksCisgICAgICAgIEAoV2ViVGV4
dERpcmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQpLCBXZWJLaXRUZXh0RGlyZWN0
aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICAgICAgICAgQE5PLCBX
ZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LAogI2VuZGlmCiAgICAgICAgIEBZRVMs
IFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSgpXSwgV2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXksCisgICAgICAgIEAoY2FjaGVNb2RlbEZvck1haW5CdW5kbGUoKSksIFdlYktp
dENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBXZWJLaXRQYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdERldmVsb3Bl
ckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aFVuc2lnbmVkSW50OjBdLCBXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5jZUtl
eSwKKyAgICAgICAgQCgwKSwgV2ViS2l0SmF2YVNjcmlwdFJ1bnRpbWVGbGFnc1ByZWZlcmVuY2VL
ZXksCiAgICAgICAgIEBZRVMsIFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0RE9NVGltZXJzVGhyb3R0bGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFi
bGVkUHJlZmVyZW5jZUtleSwKQEAgLTUxMSw5ICs1MTAsOSBAQCArICh2b2lkKWluaXRpYWxpemUK
ICAgICAgICAgQFlFUywgV2ViS2l0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFt
ZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJl
bmNlS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6
OkZ1bGx5RW5hYmxlZCkpLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LAogI2Vs
c2UKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpzdGF0aWNfY2FzdDx1
aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpEaXNhYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5p
bmdQcmVmZXJlbmNlS2V5LAorICAgICAgICBAKHN0YXRpY19jYXN0PHVpbnQzMl90PihGcmFtZUZs
YXR0ZW5pbmc6OkRpc2FibGVkKSksIFdlYktpdEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXks
CiAjZW5kaWYKICAgICAgICAgQE5PLCBXZWJLaXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
UHJlZmVyZW5jZUtleSwKQEAgLTU0NCw3ICs1NDMsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tB
ZnRlckZ1bGxzY3JlZW5dLCBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxs
c2NyZWVuUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnJl
cXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVdLCBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNrUmVx
dWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZUtleSwKICAgICAgICAgQE5PLCBXZWJLaXRNZWRpYUNv
bnRyb2xzU2NhbGVXaXRoUGFnZVpvb21QcmVmZXJlbmNlS2V5LAotICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aFVuc2lnbmVkSW50OkF1ZGlvU2Vzc2lvbjo6Tm9uZV0sIFdlYktpdEF1ZGlvU2Vz
c2lvbkNhdGVnb3J5T3ZlcnJpZGUsCisgICAgICAgIEAoQXVkaW9TZXNzaW9uOjpOb25lKSwgV2Vi
S2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSwKICAgICAgICAgQE5PLCBXZWJLaXRNZWRp
YURhdGFMb2Fkc0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5LAogI2lmIEhBVkUoQVZLSVQpCiAg
ICAgICAgIEBZRVMsIFdlYktpdEFWS2l0RW5hYmxlZCwKQEAgLTU3MCw3ICs1NjksNyBAQCArICh2
b2lkKWluaXRpYWxpemUKICAgICAgICAgQFlFUywgV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1l
RW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0V2FudHNCYWxhbmNlZFNl
dERlZmVyc0xvYWRpbmdCZWhhdmlvcktleSwKICAgICAgICAgQE5PLCBXZWJLaXREaWFnbm9zdGlj
TG9nZ2luZ0VuYWJsZWRLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYkFs
bG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKKyAgICAgICAg
QChXZWJBbGxvd0FsbFN0b3JhZ2UpLCBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXksCiAg
ICAgICAgIEBOTywgV2ViS2l0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTc5LDcgKzU3OCw3IEBAICsgKHZvaWQp
aW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Oi0xLjBmXSwgV2Vi
S2l0TWF4UGFyc2VEdXJhdGlvblByZWZlcmVuY2VLZXksCiAgICAgICAgIEBOTywgV2ViS2l0QWxs
b3dNdWx0aUVsZW1lbnRJbXBsaWNpdEZvcm1TdWJtaXNzaW9uUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgQE5PLCBXZWJLaXRBbHdheXNSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uUHJlZmVyZW5j
ZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3RhdGljX2Nhc3Q8aW50PihJ
bnRlcnBvbGF0aW9uUXVhbGl0eTo6TG93KV0sIFdlYktpdEludGVycG9sYXRpb25RdWFsaXR5UHJl
ZmVyZW5jZUtleSwKKyAgICAgICAgQChzdGF0aWNfY2FzdDxpbnQ+KEludGVycG9sYXRpb25RdWFs
aXR5OjpMb3cpKSwgV2ViS2l0SW50ZXJwb2xhdGlvblF1YWxpdHlQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBAWUVTLCBXZWJLaXRQYXNzd29yZEVjaG9FbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDoyLjBmXSwgV2ViS2l0UGFzc3dvcmRFY2hvRHVy
YXRpb25QcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdlYktpdE5ldHdvcmtEYXRhVXNhZ2VU
cmFja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtODUwLDcgKzg0OSw3IEBAIC0gKHZvaWQp
X3NldFVuc2lnbmVkSW50VmFsdWU6KHVuc2lnbmVkIGludCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5CiAgICAgfSk7CiAjZW5kaWYKICAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKLSAg
ICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6dmFsdWVdIGZvcktleTpfa2V5XTsKKyAgICAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OkAodmFs
dWUpIGZvcktleTpfa2V5XTsKICAgICBbc2VsZiBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlm
aWNhdGlvbl07CiB9CiAKQEAgLTE4MDgsNyArMTgwNyw3IEBAIC0gKHZvaWQpc2V0RWRpdGFibGVM
aW5rQmVoYXZpb3I6KFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yKWJlaGF2aW9yCiAKIC0gKFdl
YlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IpdGV4dERpcmVjdGlvblN1Ym1l
bnVJbmNsdXNpb25CZWhhdmlvcgogewotICAgIFdlYlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVz
aW9uQmVoYXZpb3IgdmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJUZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yPihbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdFRleHREaXJl
Y3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JQcmVmZXJlbmNlS2V5XSk7CisgICAgYXV0byB2
YWx1ZSA9IHN0YXRpY19jYXN0PFdlYlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZp
b3I+KFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXldKTsKICAgICBpZiAodmFsdWUgIT0gV2ViVGV4
dERpcmVjdGlvblN1Ym1lbnVOZXZlckluY2x1ZGVkICYmCiAgICAgICAgIHZhbHVlICE9IFdlYlRl
eHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkICYmCiAgICAgICAgIHZhbHVl
ICE9IFdlYlRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlzSW5jbHVkZWQpIHsKQEAgLTE5NDMsNyAr
MTk0Miw3IEBAICsgKENGU3RyaW5nRW5jb2RpbmcpX3N5c3RlbUNGU3RyaW5nRW5jb2RpbmcKICsg
KHZvaWQpX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZwogewog
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6Ci0gICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZGVmYXVsdFRl
eHRFbmNvZGluZ05hbWVGb3JTeXN0ZW1MYW5ndWFnZSgpIGZvcktleTpXZWJLaXREZWZhdWx0VGV4
dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXldXTsKKyAgICAgICAgQHsgV2ViS2l0RGVmYXVsdFRl
eHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5OiBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5
c3RlbUxhbmd1YWdlKCkgfV07CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJ
RCA9IG5pbDsKQEAgLTI3NTYsOCArMjc1NSw3IEBAIC0gKHZvaWQpc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3RvcmFnZUJsb2NraW5nUG9saWN5CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHdyaXRlIHRo
ZSBzZXR0aW5nIG91dCwgc28gd2UganVzdCByZXNldCB0aGUgZGVmYXVsdCBpbnN0ZWFkIG9mIHN0
b3JpbmcgdGhlIG5ldyBzZXR0aW5nLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgcmVtb3ZlcyBh
bnkgZGVmYXVsdHMgcHJldmlvdXNseSByZWdpc3RlcmVkIGJ5IGNsaWVudCBwcm9jZXNzLCB3aGlj
aCBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIHRoaXMgbWV0aG9kIHRvIGRvLgotICAgIE5TRGljdGlv
bmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6c3RvcmFnZUJsb2NraW5nUG9saWN5XSBmb3JLZXk6V2ViS2l0U3RvcmFn
ZUJsb2NraW5nUG9saWN5S2V5XTsKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOmRpY3RdOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6QHsgV2ViS2l0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5S2V5OiBAKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkgfV07CiAjZWxzZQogICAgIFtz
ZWxmIF9zZXRJbnRlZ2VyVmFsdWU6c3RvcmFnZUJsb2NraW5nUG9saWN5IGZvcktleTpXZWJLaXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3lLZXldOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQppbmRleCBlNjU5ZWYwZmEz
ZmFhMGU2MDE4YTNmNDgxNWQ4OTY0MTNmZTlkMjZkLi4xNDU3Mzk4NzhjNTc5ZmVjNWNhMmRiZDVj
MjExNmM3ZTFmM2IzYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFdlYlNj
cmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgTlNTdHJpbmcq
IG5zRXJyb3JNZXNzYWdlID0gbnNTdHJpbmdOaWxJZkVtcHR5KGVycm9yTXNnKTsKLSAgICAgICAg
TlNEaWN0aW9uYXJ5ICppbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
c0FuZEtleXM6bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXksIFtO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6ZXJyb3JMaW5lXSwgV2ViU2NyaXB0RXJyb3JM
aW5lTnVtYmVyS2V5LCBuaWxdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2Vi
U2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxp
bmVOdW1iZXJLZXksIG5pbF07CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdl
bmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mb107CiAKICAgICAgICAgaWYgKGltcGxlbWVudGF0
aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1t
CmluZGV4IGEzODFkMTBiMjhhM2RlZTk1NDhlYTJlZTQ2OTk2MDU3YTNiMjZlMTYuLjZkMzE3Yjk3
ZDU1YjM1N2JiMjg0ZDk3NzkyMWU0MGE2ZTdkZjBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9s
bGVyLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgLSAodm9pZClfcGxhY2VQb3B1cFdpbmRvdzooTlNQ
b2ludCl0b3BMZWZ0CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
d2luZG93RnJhbWUuc2l6ZS5oZWlnaHQgPSBudW1iZXJUb1Nob3cgKiBbX3RhYmxlVmlldyByb3dI
ZWlnaHRdICsgKG51bWJlclRvU2hvdyArIDEpICogW190YWJsZVZpZXcgaW50ZXJjZWxsU3BhY2lu
Z10uaGVpZ2h0OwogICAgIHdpbmRvd0ZyYW1lLm9yaWdpbi55IC09IHdpbmRvd0ZyYW1lLnNpemUu
aGVpZ2h0OwotICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTIuMGZd
LCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRl
cyA9IEB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxMi4w
Zl0gfTsKICAgICBDR0Zsb2F0IG1heFdpZHRoID0gMDsKICAgICBpbnQgbWF4SW5kZXggPSAtMTsK
ICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1iZXJUb1Nob3c7IGkrKykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQxMTc3N2RiNmUx
NmJlODlkYWQ0ZDdlNjgwZTMxN2I1YjdkZmU1M2EuLjk1ZDBmM2U4ZDY3YTgzNDAxMmFkMDdmNjNl
ZGRjZTI5MDY3M2FmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTI0Myw3ICsyNDMsNiBAQAogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgotI2lt
cG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgogI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KQEAgLTI1NCw2ICsyNTMsNyBAQAogI2ltcG9ydCA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1
ZXVlLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL2R5bGRTUEkuaD4KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjky
Myw3ICsyOTIzLDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNl
cyAqKXByZWZlcmVuY2VzCiAgICAgc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KFtwcmVmZXJlbmNlcyBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHldKTsKICAgICBzZXR0aW5ncy5z
ZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhbcHJlZmVyZW5jZXMg
bG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VdKTsKIAotICAgIFdl
YkNvcmU6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKFdlYkNvcmU6OndlYkNvcmVT
dHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbcHJlZmVyZW5jZXMgYWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXNdKSk7CisgICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMobWFrZVZlY3RvcjxTdHJpbmc+KFtwcmVmZXJlbmNlcyBhZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlc10pKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2V0dGlu
Z3Muc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh0cnVlKTsKQEAgLTQ1MjgsNyArNDUyOCw3IEBA
IC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06KE5TU3RyaW5n
ICopdXNlckludGVyZmFjZUl0ZW0KICAgICAgICAgYXV0byogdmFsaWRhdGlvbkJ1YmJsZSA9IF9w
cml2YXRlLT5mb3JtVmFsaWRhdGlvbkJ1YmJsZS5nZXQoKTsKICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSB2YWxpZGF0aW9uQnViYmxlID8gdmFsaWRhdGlvbkJ1YmJsZS0+bWVzc2FnZSgpIDogZW1w
dHlTdHJpbmcoKTsKICAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmFsaWRhdGlvbkJ1YmJsZSA/
IHZhbGlkYXRpb25CdWJibGUtPmZvbnRTaXplKCkgOiAwOwotICAgICAgICByZXR1cm4gQHsgdXNl
ckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAqKW1lc3NhZ2UsIEAiZm9u
dFNpemUiOiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpmb250U2l6ZV0gfSB9OworICAgICAg
ICByZXR1cm4gQHsgdXNlckludGVyZmFjZUl0ZW06IEB7IEAibWVzc2FnZSI6IChOU1N0cmluZyAq
KW1lc3NhZ2UsIEAiZm9udFNpemUiOiBAKGZvbnRTaXplKSB9IH07CiAgICAgfQogCiAgICAgcmV0
dXJuIG5pbDsKQEAgLTQ2NDQsMjIgKzQ2NDQsNiBAQCAtICh2b2lkKV91cGRhdGVBY3RpdmVTdGF0
ZQogI2VuZGlmCiB9CiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0Fy
cmF5KiBwYXR0ZXJucykKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBwYXR0ZXJuc1ZlY3RvcjsKLQot
ICAgIE5TVUludGVnZXIgY291bnQgPSBbcGF0dGVybnMgY291bnRdOwotICAgIGlmICghY291bnQp
Ci0gICAgICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsKLQotICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWQgZW50cnkgPSBbcGF0dGVybnMgb2Jq
ZWN0QXRJbmRleDppXTsKLSAgICAgICAgaWYgKFtlbnRyeSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQotICAgICAgICAgICAgcGF0dGVybnNWZWN0b3IuYXBwZW5kKFN0cmluZygoTlNT
dHJpbmcgKillbnRyeSkpOwotICAgIH0KLSAgICByZXR1cm4gcGF0dGVybnNWZWN0b3I7Ci19Ci0K
ICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3Js
ZDooV2ViU2NyaXB0V29ybGQgKil3b3JsZCBzb3VyY2U6KE5TU3RyaW5nICopc291cmNlIHVybDoo
TlNVUkwgKil1cmwKICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OihOU0FycmF5ICopd2hp
dGVsaXN0IGJsYWNrbGlzdDooTlNBcnJheSAqKWJsYWNrbGlzdAogICAgICAgICAgICAgICAgIGlu
amVjdGlvblRpbWU6KFdlYlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUKQEAg
LTQ2ODEsNyArNDY2NSw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0cmlu
ZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAgICAgaWYgKCF3b3Js
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RB
dERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1l
bnRTdGFydCA6IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgbWFrZVZlY3RvcjxT
dHJpbmc+KHdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihibGFja2xpc3QpLCBpbmplY3Rp
b25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IDogV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWU6OkRvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHksIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vKTsKICAg
ICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
d29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDcwNCw3ICs0Njg4LDcgQEAg
KyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3
b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0
b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBX
ZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCBtYWtlVmVjdG9yPFN0
cmluZz4od2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGJsYWNrbGlzdCksIGluamVjdGVk
RnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHls
ZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgV2ViQ29yZTo6SW5qZWN0
SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAgLTY3MzcsNyArNjcyMSw3IEBAIC0gKE5TRGlj
dGlvbmFyeSAqKV9lbGVtZW50QXRXaW5kb3dQb2ludDooTlNQb2ludCl3aW5kb3dQb2ludAogICAg
ICAgICBOU1BvaW50IHBvaW50ID0gW2RvY3VtZW50VmlldyBjb252ZXJ0UG9pbnQ6d2luZG93UG9p
bnQgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgcmV0dXJuIFsoTlNWaWV3IDxXZWJEb2N1bWVudEVs
ZW1lbnQ+ICopZG9jdW1lbnRWaWV3IGVsZW1lbnRBdFBvaW50OnBvaW50XTsKICAgICB9Ci0gICAg
cmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W2ZyYW1lVmlldyB3ZWJG
cmFtZV0gZm9yS2V5OldlYkVsZW1lbnRGcmFtZUtleV07CisgICAgcmV0dXJuIEB7IFdlYkVsZW1l
bnRGcmFtZUtleTogW2ZyYW1lVmlldyB3ZWJGcmFtZV0gfTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5
ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKQEAgLTcwMjUsNyArNzAwOSw3IEBAIC0g
KE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24KICAgICBpZiAoW2RvY3VtZW50
VmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFdlYkRvY3VtZW50U2VsZWN0aW9uKV0p
IHsKICAgICAgICAgcmV0dXJuIFsoTlNWaWV3IDxXZWJEb2N1bWVudFNlbGVjdGlvbj4gKilkb2N1
bWVudFZpZXcgcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXTsKICAgICB9Ci0gICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5XTsKKyAgICByZXR1cm4gQFtdOwogfQogCiAtICh2b2lkKXdyaXRlU2Vs
ZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDoo
TlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtNzA0Nyw3ICs3MDMxLDcgQEAgLSAoTlNBcnJh
eSAqKXBhc3RlYm9hcmRUeXBlc0ZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQKICAg
ICB9IGVsc2UgaWYgKFtbZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudElzU2VsZWN0ZWRL
ZXldIGJvb2xWYWx1ZV0pIHsKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhc3RlYm9hcmRUeXBlc0Zv
clNlbGVjdGlvbl07CiAgICAgfQotICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CisgICAgcmV0
dXJuIEBbXTsKIH0KIAogLSAodm9pZCl3cml0ZUVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1l
bnQgd2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQ
YXN0ZWJvYXJkICopcGFzdGVib2FyZApAQCAtODAxOCw3ICs4MDAyLDcgQEAgLSAodm9pZCl1bm1h
cmtBbGxUZXh0TWF0Y2hlcwogLSAoTlNBcnJheSAqKXJlY3RzRm9yVGV4dE1hdGNoZXMKIHsKICAg
ICBpZiAoX3ByaXZhdGUtPmNsb3NlZCkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsK
KyAgICAgICAgcmV0dXJuIEBbXTsKIAogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOwogICAgIFdlYkZyYW1lICpmcmFtZSA9IFtzZWxmIG1haW5GcmFt
ZV07CkBAIC05MDc1LDcgKzkwNTksNyBAQCAtICh2b2lkKV9zZWFyY2hXaXRoR29vZ2xlRnJvbU1l
bnU6KGlkKXNlbmRlcgogICAgIH0KIAogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAgICBbcGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OldlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOkBbV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsK
ICAgICBOU011dGFibGVTdHJpbmcgKnMgPSBbc2VsZWN0ZWRTdHJpbmcgbXV0YWJsZUNvcHldOwog
ICAgIGNvbnN0IHVuaWNoYXIgbm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciA9IDB4QTA7CiAgICAg
TlNTdHJpbmcgKm5vbkJyZWFraW5nU3BhY2VTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6Jm5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgbGVuZ3RoOjFdOwpAQCAtMTAxNjks
MTcgKzEwMTUzLDE2IEBAIC0gKHVpbnQ2NF90KV9ub3RpZmljYXRpb25JREZvclRlc3Rpbmc6KEpT
VmFsdWVSZWYpanNOb3RpZmljYXRpb24KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcg
KFdlYlZpZXdGb250U2VsZWN0aW9uKQorCiArICh2b2lkKV9zZXRGb250V2hpdGVsaXN0OihOU0Fy
cmF5ICopd2hpdGVsaXN0CiB7CiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICBVTlVTRURfUEFSQU0o
d2hpdGVsaXN0KTsKICNlbHNlCi0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIGZvciAo
TlNTdHJpbmcgKnN0cmluZyBpbiB3aGl0ZWxpc3QpCi0gICAgICAgIHZlY3Rvci5hcHBlbmQoc3Ry
aW5nKTsKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QodmVjdG9yKTsK
KyAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QobWFrZVZlY3RvcjxTdHJp
bmc+KHdoaXRlbGlzdCkpOwogI2VuZGlmCiB9CisKIEBlbmQKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDY4ZWU0NWIyYzliMGUwZmIxZTM3MWNjOWE1ODY5YTY5MzkzODhhYy4uNGNiMGFmZDc0NWMz
NGQ0MjM5ZDEyOTNhNDNiNDFhZWQ0OTIwYTViMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NCBAQAorMjAyMC0wNC0wOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTaW1wbGlmeSBO
U0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDogUmVtb3ZlIHVzZSBvZiBOb3Rp
ZmljYXRpb25IYW5kbGVyCisgICAgICAgIHR5cGU7IGl0J3MganVzdCAiaWQiLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChj
b252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KTogTW92ZWQgdGhpcyB1cCBpbiB0aGUgZmlsZSwg
cmVtb3ZlZCB1bm5lZWRlZAorICAgICAgICB1c2Ugb2YgSlNWYWx1ZVRvT2JqZWN0IGFuZCB1bnVz
ZWQgZXhjZXB0aW9uIGFyZ3VtZW50LgorICAgICAgICAoZWxlbWVudHNGb3JSYW5nZUNhbGxiYWNr
KTogVXNlIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkuCisgICAgICAgIChjb2x1bW5IZWFk
ZXJzQ2FsbGJhY2spOiBVcGRhdGVkIGZvciByZW1vdmVkIGV4Y2VwdGlvbiBhcmd1bWVudC4KKyAg
ICAgICAgKHJvd0hlYWRlcnNDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAodWlFbGVtZW50QXJy
YXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IENoYW5nZWQgdG8gdXNlIFJldGFpblB0ci4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmpl
Y3RNYWMubW06CisgICAgICAgIChjcmVhdGVDb3JlQW5pbWF0aW9uTGF5ZXIpOiBVc2UgQHt9Lgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KTogUmVtb3ZlZCBzb21lIHVubmVlZGVkCisgICAgICAgIGNvZGUgbm93IHRoYXQgd2UgdXNl
IFJldGFpblB0ci4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmls
aXR5VUlFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKTogVXNlIEBbXS4KKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOiBVc2UgQFtd
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hl
c1RleHROZWFyTWFya2Vycyk6IFVzZSBAW10uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9z
L1RleHRJbnB1dENvbnRyb2xsZXJJT1MubToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxl
ciBtYXJrZWRSYW5nZV0pOiBVc2UgQFtdLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW06CisgICAgICAgIChzZWFyY2hQcmVkaWNhdGVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEpOiBUd2VhayBhIGxpdHRsZS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdKTogRGVsZXRl
ZC4gRHVwbGljYXRlIG9mIGEgbWV0aG9kIGFscmVhZHkKKyAgICAgICAgaW1wbGVtZW50ZWQgaW4g
YW5vdGhlIGZpbGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKG1ha2VWZWN0b3JFbGVtZW50KTogQWRkZWQgb3Zl
cmxvYWRzIHRvIG1ha2UgYm90aAorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IGFuZAorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IHdvcmsuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KTogUmVtb3ZlZCBzb21lIHVubmVlZGVkCisgICAgICAgIGNvZGUgbm93IHRoYXQg
d2UgdXNlIFJldGFpblB0ci4KKyAgICAgICAgKGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KTog
UmVtb3ZlZCB1bm5lZWRlZCB1c2Ugb2YgSlNWYWx1ZVRvT2JqZWN0CisgICAgICAgIGFuZCB1bm5l
ZWRlZCBleGNlcHRpb24gYXJndW1lbnQuCisgICAgICAgIChjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJ
RWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pi4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOiBE
aXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKTogRGl0
dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5n
ZSk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycyBj
b25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVh
ZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlF
bGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6IFVwZGF0ZWQgc2luY2UgbV9lbGVtZW50IGlzIGEgUmV0
YWluUHRyLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6IERpdHRv
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0
dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcp
OiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKTogRGl0dG8u
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERpdHRvLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24gY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKTogRGl0dG8u
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6IERpdHRvLgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6IFVzZSBAKCkuCisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOiBVc2UgQCgpLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYSk6
IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Lgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+LgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6IERp
dHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
cyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
Um93cyk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjZWxsRm9yQ29sdW1uQW5kUm93KTogVXNlIEBbXSBhbmQgQCgpLgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCBjb25z
dCk6IFVzZSBAW10uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVk
U3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMpOgorICAgICAgICBVc2UgQHt9LCBA
WUVTLCBhbmQgQE5PLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChhZGRUZXN0UGx1Z2luc1RvUGx1Z2luU2Vh
cmNoUGF0aCk6IFVzZSBAW10uCisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0
ZUJlZm9yZVRlc3RpbmcpOiBVc2UgQFtdLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW06CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZCBkZWNsYXJlVHlwZTpvd25lcjpdKTogVXNlIEBbXS4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bRXZlbnRT
ZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6IFVzZSBAKCkuCisgICAgICAg
ICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgc2VudFRvdWNoRXZlbnRPZlR5cGU6XSk6IFVzZSBA
KCkuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5tbToKKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyIGNhbmNlbE5v
dGlmaWNhdGlvbjpdKTogVXNlIEBbXS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9P
YmpDQ29udHJvbGxlci5tOgorICAgICAgICAoLVtPYmpDQ29udHJvbGxlciBvYmplY3RPZkNsYXNz
Ol0pOiBVc2UgQCgpLgorICAgICAgICAoLVtPYmpDQ29udHJvbGxlciBhcnJheU9mU3RyaW5nXSk6
IFVzZSBAW10uCisgICAgICAgICgtW09iakNDb250cm9sbGVyIHRlc3RXcmFwcGVyUm91bmRUcmlw
cGluZzpdKTogVXNlIEAoKS4KKyAgICAgICAgKC1bT2JqQ0NvbnRyb2xsZXIgdGVzdEFycmF5XSk6
IFVzZSBAW10uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bToKKyAgICAgICAgKG9yaWdpbnNBcnJheVRvSlMpOiBSZW1vdmVkIHVubmVlZGVkIHVzZSBvZiBK
U1ZhbHVlVG9PYmplY3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0
Q29udHJvbGxlck1hYy5tOgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIG1hcmtlZFJh
bmdlXSk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBz
ZWxlY3RlZFJhbmdlXSk6IFVzZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29u
dHJvbGxlciBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJzRnJvbTpsZW5ndGg6XSk6CisgICAgICAgIFVz
ZSBAW10gYW5kIEAoKS4KKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBkaWN0YXRlZFN0
cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVy
bmF0aXZlTGVuZ3RoOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAgICAoLVtUZXh0SW5wdXRD
b250cm9sbGVyIGludGVycHJldEtleUV2ZW50czp3aXRoU2VuZGVyOl0pOiBVc2UgQFtdLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dCk6IFVzZSBbXS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cDogRGVsZXRlZCBhbgorICAgICAgICB1bm5lZWRlZCBjb3B5IGNvbnN0cnVjdG9yIGFuZCBkZXN0
cnVjdG9yLgorCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tOgorICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHNldFJlc3Vs
dHNGcm9tSlNPYmplY3Q6aW5Db250ZXh0Ol0pOiBVc2UgQHt9LgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW06
CisgICAgICAgICh0b1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICgtW0NvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmNvbnRlbnRSdWxlTGlzdFdpdGhJZGVudGlm
aWVyOnBlcmZvcm1lZEFjdGlvbjpmb3JVUkw6XSk6CisgICAgICAgIFVzZSBtYWtlVmVjdG9yPFN0
cmluZz4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBb
XS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2Uu
bW06CisgICAgICAgICh3cml0ZUltYWdlRGF0YVRvUGFzdGVib2FyZCk6IFVzZSBAW10gYW5kIEB7
fS4KKyAgICAgICAgKHdyaXRlQnVuZGxlRmlsZVRvUGFzdGVib2FyZCk6IFVzZSBAW10uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVdlYkFyY2hpdmUubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKTogVXNlIEBbXS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocyk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6IFVzZSBAW10uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0Nh
blBhc3RlWmVyb1BuZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVc2UgQFtd
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZh
U2NyaXB0Q29udGV4dC5tbToKKyAgICAgICAgKC1bRGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHRG
cmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0OmZvckZy
YW1lOl0pOgorICAgICAgICBVc2UgQFtdLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL21h
aW5JT1MubW06CisgICAgICAgIChtYWluKTogVXNlIEB7fS4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IFVz
ZSBAe30gYW5kIEAoKS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tOgor
ICAgICAgICAobWFpbik6IFVzZSB7fS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgVXNlIGlkIGlu
c3RlYWQgb2YgTm90aWZpY2F0aW9uSGFuZGxlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDoKKyAgICAgICAg
VXNlIGlkIGZvciBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZS4gQWRkZWQgYW4gb3ZlcmxvYWQgb2Yg
bWFrZVZlY3RvckVsZW1lbnQKKyAgICAgICAgdG8gbWFrZSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4gd29yay4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgVXNl
IFJldGFpblB0ci4gQWRkZWQgYW4gb3ZlcmxvYWQgb2YgbWFrZVZlY3RvckVsZW1lbnQgdG8gbWFr
ZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gd29y
ay4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0
aXZhdGVGb250c0NvY29hLm1tOgorICAgICAgICBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ugd2UgdXNlIFJldGFp
blB0ci4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydEVsZW1lbnRzVG9PYmpl
Y3RBcnJheSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mCisgICAgICAgIEpTVmFsdWVUb09iamVj
dC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JSYW5n
ZSk6IFVzZQorICAgICAgICBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgVXNlIEBbXS4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVzZSBAW10u
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1h
dGNoZXNUZXh0TmVhck1hcmtlcnMpOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW06CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBVc2UgQHt9LgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudCk6IFNpbXBsaWZpZWQKKyAgICAgICAgc2luY2Ugd2UgdXNlIFJldGFpblB0ci4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJ
RWxlbWVudHMpOiBVc2UKKyAgICAgICAgbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1
bWVudExpbmtzKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKTogRGl0dG8u
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVh
ZGVycyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphbGxBdHRyaWJ1dGVzKTogVXBkYXRlZCBzaW5jZSBtX2VsZW1lbnQKKyAgICAgICAgaXMgYSBS
ZXRhaW5QdHIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rl
c2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb2xlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN1YnJvbGUpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZyk6IERpdHRvLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6IERpdHRvLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbiBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5k
ZXgpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5n
ZUZvckxpbmUpOiBVc2UgQCgpLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZWFyY2hUZXh0V2l0aENyaXRlcmlhKTogVXNlCisgICAgICAgIG1ha2VWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pi4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6IERpdHRvLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKTog
RGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mUm93cyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6IFVzZSBAW10gYW5k
IEAoKS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRD
aGlsZCBjb25zdCk6IFVzZSBAW10uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KTogVXNlIEBbXS4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IFVz
ZSBAW10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNz
RW50cmllcyk6IFRha2UgVmVjdG9yJiYuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KTogVGFrZSBTdHJpbmcmJi4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKTog
VXNlIEB7fWFuZCBAKCkuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyk6IFVzZSBtYWtlVmVjdG9yPFN0cmluZz4uCisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6IFVzZSBtYWtlVmVjdG9y
PFN0cmluZz4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdv
cnkpOiBVcGRhdGUgdG8gcGFzcyBTdHJpbmcmJi4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnNldEFsbG93ZWRNZW51QWN0aW9ucyk6IFVzZSBjcmVhdGVOU0FycmF5LgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgt
W0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2ZW50czpdKTogVXNlIEAoKS4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCk6IFVzZSBA
e30gYW5kIEAoKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOiBVc2UgQFtdLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAo
LVtXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCBkZWNsYXJlVHlwZTpvd25lcjpdKTogVXNlIEBb
XS4KKwogMjAyMC0wNC0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIF9jb3JzRGlzYWJsaW5nUGF0dGVybnMgc2hvdWxkIGFsbG93IHNlY3Vy
aXR5IHBvbGljeSBhY2Nlc3MgdG8gdGhvc2UgcGF0dGVybnMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IDFiZGYxYzQzMGJjNTBiZTM4NGZh
Y2NlNTBkZmZhNTI4ZGE0ODU2YTUuLjFkYzdkM2I1NjNhMTU0ZjRjZTliZjdhMzAzMGM4YzVhNzY5
N2YzOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CkBAIC0zMiw5ICszMSwxMSBA
QAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNlbmRpZgorCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShHVEspCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKICNpbmNsdWRl
IDxhdGsvYXRrLmg+CkBAIC05NCw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQbGF0
Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZpY2F0aW9uTGlzdGVuZXJzOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBS
ZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVy
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9nbG9iYWxOb3RpZmlj
YXRpb25IYW5kbGVyOwogI2VuZGlmCiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRG
T1JNKEdUSykKQEAgLTEwNCw1ICsxMDUsMyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgcGxh
dGZvcm1SZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9OwotCi0jZW5kaWYgLy8gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmgKaW5kZXggOTZlOTk3YWFlMjhkMTI2Nzk0YTliZGZjOWFmZTNlNDliYmE2ZDUx
Yi4uYmQ3Yjc1YzRiODdmMzI0MjEwODQ5OWFmYmI0NmRmY2M1NDI0NDkyNCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCkBAIC0yMyw4ICsyMyw3
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogCkBAIC0zNiwxNSArMzUs
MTMgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LXR5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlcjsKLXR5cGVkZWYgQ0ZUeXBlUmVm
IFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxhdGZvcm1UZXh0TWFya2VyID0gaWQ7
Cit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSA9IGlkOwogI2Vsc2UKIHR5cGVkZWYgdm9p
ZCogUGxhdGZvcm1UZXh0TWFya2VyOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZTsKICNlbmRpZgogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OwotCiBjbGFzcyBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB7CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKQEAgLTU4LDggKzU1LDggQEAgcHVibGljOgogICAg
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7Ci0jaWYgU1VQ
UE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxQbGF0
Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0
YWluUHRyPGlkPiBtX3RleHRNYXJrZXI7CiAjZWxzZQogICAgIFBsYXRmb3JtVGV4dE1hcmtlciBt
X3RleHRNYXJrZXI7CiAjZW5kaWYKQEAgLTc5LDggKzc2LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKIAogcHJpdmF0ZToKLSNpZiBTVVBQT1JUU19BWF9U
RVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0
YWluUHRyPGlkPiBtX3RleHRNYXJrZXJSYW5nZTsKICNlbHNlCiAgICAgUGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UgbV90ZXh0TWFya2VyUmFuZ2U7CiAjZW5kaWYKQEAgLTg5LDcgKzg2LDcgQEAgcHJp
dmF0ZToKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0b1RleHRNYXJrZXIoSlNPYmplY3RSZWYg
b2JqZWN0KTsKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHRvVGV4dE1hcmtlclJhbmdl
KEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKLSNpZiAhU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlcikgeyB9CiBpbmxpbmUgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyJikgeyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6On5B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpIHsgfQpAQCAtMTAyLDUgKzk5LDMgQEAgaW5saW5lIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KCkgeyB9CiBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFs
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5l
IFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TWFya2VyUmFuZ2U7
IH0KICNlbmRpZgotCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDJmZGNj
MDBkMjFmY2ZiYzI1ZGViMjEwZGZlY2QzNDc2NTdmOGRmYjcuLjExZjNhNTE5NGY5ZWIyMTdkMzM3
YzU5MzAzZTNjZmU2ZmI2ZWU1OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0zMDcsNiArMzA3LDE1IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIGluZGV4T2ZDaGlsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIChkb3VibGUp
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGlsZChjaGlsZEVsZW1lbnQpKTsKIH0K
IAorc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJyYXkoSlNDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxl
bWVudHMpCit7CisgICAgYXV0byBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAs
IG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXplKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgSlNPYmpl
Y3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0p
LCAwKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiBzdGF0aWMgSlNWYWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJbmRleENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTMyNywyMCArMzM2LDE0IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCisKICAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKLSAgICAKKwog
ICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0b0FYRWxl
bWVudCh0aGlzT2JqZWN0KS0+ZWxlbWVudHNGb3JSYW5nZShsb2NhdGlvbiwgbGVuZ3RoLCBlbGVt
ZW50cyk7Ci0gICAgCi0gICAgSlNWYWx1ZVJlZiBhcnJheVJlc3VsdCA9IEpTT2JqZWN0TWFrZUFy
cmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsKLSAgICB1bnNpZ25lZCBlbGVtZW50
c1NpemUgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGVs
ZW1lbnRzU2l6ZTsgKytrKQotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250
ZXh0LCBhcnJheU9iaiwgaywgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJp
bGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVtZW50c1trXSksIDApOwotICAgIAotICAgIHJldHVy
biBhcnJheVJlc3VsdDsKKworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5
KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgaW5jcmVhc2VUZXh0
U2VsZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtNjE1LDMw
ICs2MTgsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgc3RyaW5nQXR0cmlidXRlVmFsdWVDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRz
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNWYWx1ZVJlZiBhcnJheVJlc3VsdCA9
IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOwotICAgIEpTT2JqZWN0UmVmIGFy
cmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5UmVzdWx0LCAwKTsKLQotICAg
IHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkKLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0
eUF0SW5kZXgoY29udGV4dCwgYXJyYXlPYmosIGksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
a2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0pLCAwKTsKLQot
ICAgIHJldHVybiBhcnJheVJlc3VsdDsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgY29sdW1uSGVh
ZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CiAgICAgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPmNvbHVtbkhlYWRlcnMoZWxlbWVudHMpOwotICAgIHJldHVybiBjb252ZXJ0RWxlbWVu
dHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzLCBleGNlcHRpb24pOworICAgIHJldHVy
biBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAog
c3RhdGljIEpTVmFsdWVSZWYgcm93SGVhZGVyc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7
CiAgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnJvd0hlYWRlcnMoZWxlbWVudHMpOwotICAg
IHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzLCBl
eGNlcHRpb24pOworICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5KGNvbnRl
eHQsIGVsZW1lbnRzKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRy
aWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY1MCw3
ICs2NDEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVl
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTTwogICAgIAogICAgIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKICAgICB0b0FYRWxlbWVudCh0aGlzT2JqZWN0
KS0+dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUuZ2V0KCksIGVsZW1lbnRz
KTsKLSAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBlbGVt
ZW50cywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gY29udmVydEVsZW1lbnRzVG9PYmplY3RBcnJh
eShjb250ZXh0LCBlbGVtZW50cyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IGNhMjI1NWM5
ZWRlMDc1MjZmOTA1Mzk1NDhlMGI0NDE4YjM1YjVkMGMuLmQ3MjE5N2ZlYzBjZTc1ZjRlYWQ2NTM4
MWIyNWE1OGYyNjBjNTBlY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDE4ICszMiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fCi10eXBlZGVmIGlkIFBsYXRmb3JtVUlF
bGVtZW50OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQbGF0Zm9ybVVJRWxl
bWVudDsKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbGlmIFBMQVRGT1JN
KFdJTikKICN1bmRlZiBfV0lOU09DS0FQSV8KICNkZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFByZXZl
bnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKLQogI2luY2x1ZGUgPFdlYkNv
cmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+Ci0KIHR5cGVkZWYgQ09NUHRyPElBY2Nl
c3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYg
UExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
QXRrLmgiCkBAIC01MywyMSArNDcsMjIgQEAgdHlwZWRlZiBBdGtPYmplY3QqIFBsYXRmb3JtVUlF
bGVtZW50OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbmRpZgogCitjbGFz
cyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKK3B1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
LSNpZmRlZiBfX09CSkNfXwotdHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOwotI2Vsc2UK
LXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOworICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQpOwogI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwogI2VuZGlmCiAK
LWNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewotcHVibGljOgotICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwotICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwotICAgIH5BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWQgcGxhdGZvcm1VSUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KKyNlbmRpZgogCisjaWYgIVBMQVRG
T1JNKENPQ09BKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRmb3JtVUlFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisjZW5kaWYKIAogICAgIHN0YXRpYyBKU09iamVjdFJl
ZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCYpOwogCkBAIC0zMTgsMTAgKzMxMyw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzU2VhcmNoRmllbGQoKSBjb25zdDsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMoSlNTdHJpbmdS
ZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsK
LSAgICAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gUmV0
dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFuIGVsZW1lbnQu
CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlvbnMoKTsKICAgICAK
QEAgLTMzMiwxMSArMzI2LDE0IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygpOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIFBs
YXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKKyNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2VkIHRv
IGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgotICAgIE5vdGlmaWNh
dGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9l
bGVtZW50OworICAgIFJldGFpblB0cjxpZD4gbV9ub3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlm
CiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0
TWFjLm1tCmluZGV4IGE2NDU3YTA3NmIxYjkyMjJlYzE4MzYyZDRiYzk0Y2I0NzJhM2EzY2MuLjBj
OGZhNDAwM2E3ZGZiNWRmNWMzNDJmMTQyMmI3YmUzOTY4NjU1M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1h
Yy5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIENGVHlwZVJlZiBjcmVhdGVDb3JlQW5pbWF0aW9uTGF5
ZXIoKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBjYUxheWVyID0gYWRvcHROUyhbW1Rlc3RQbHVn
aW5MYXllciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNOdWxsICpudWxsVmFsdWUgPSBbTlNOdWxs
IG51bGxdOwotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9ucyA9IFtOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAImFuY2hvclBvaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAImJvdW5kcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJjb250ZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJjb250ZW50c1JlY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUs
IEAib3BhY2l0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJw
b3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJzaGFk
b3dDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJzdWJs
YXllclRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJzdWJsYXllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
dHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInpQ
b3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgTlNEaWN0
aW9uYXJ5ICphY3Rpb25zID0gQHsKKyAgICAgICAgQCJhbmNob3JQb2ludCI6IG51bGxWYWx1ZSwK
KyAgICAgICAgQCJib3VuZHMiOiBudWxsVmFsdWUsCisgICAgICAgIEAiY29udGVudHMiOiBudWxs
VmFsdWUsCisgICAgICAgIEAiY29udGVudHNSZWN0IjogbnVsbFZhbHVlLAorICAgICAgICBAIm9w
YWNpdHkiOiBudWxsVmFsdWUsCisgICAgICAgIEAicG9zaXRpb24iOiBudWxsVmFsdWUsCisgICAg
ICAgIEAic2hhZG93Q29sb3IiOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJUcmFuc2Zv
cm0iOiBudWxsVmFsdWUsCisgICAgICAgIEAic3VibGF5ZXJzIjogbnVsbFZhbHVlLAorICAgICAg
ICBAInRyYW5zZm9ybSI6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJ6UG9zaXRpb24iOiBudWxsVmFs
dWUsCisgICAgfTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW2Nh
TGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDphY3Rpb25z
IGZvcktleTpAImFjdGlvbnMiXV07CisgICAgW2NhTGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25z
IjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5n
ZTpZRVNdOwogCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAx
MDApXTsKQEAgLTc2LDcgKzc2LDcgQEAgQ0ZUeXBlUmVmIGNyZWF0ZUNvcmVBbmltYXRpb25MYXll
cigpCiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxheWVyIGxheWVyXTsKICAgICAvLyBU
dXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW3N1YmxheWVyIHNldFN0eWxlOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0aW9ucyBmb3JLZXk6QCJhY3Rpb25zIl1d
OworICAgIFtzdWJsYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMiOiBhY3Rpb25zIH1dOwogCiAg
ICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1KTsKICAgICBb
c3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQppbmRleCBjMzY4
N2MxMDc0ZTA1NzExY2Y4Yjk3NDZiODM1ZTQ2ZjM4YmY5MGIzLi5kZTI5ZDU1MTAyMDQ4NWU4ZDQ0
YjZlNTZkYWYyMzM5NGIxMDg1NTBkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCkBAIC00OCw3ICs0OCw3IEBAIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKQogCiBib29s
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFs
OihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbcGxhdGZvcm1U
ZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQogCiBQ
bGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1h
cmtlcigpIGNvbnN0IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCBhNGU0MTg5NTUzNDg4ODQ0YzRjZjhjMjNlMTRk
Zjg0NzdmYmYzODE5Li45NTFkZGRkMmU3YjM4NmNlNTZhOWYyYTZhOGU2MTJlYzVmNGZlMjVlIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQpAQCAtNDEsMjQgKzQxLDkgQEAKIAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWRO
b3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwg
dm9pZCogY29udGV4dCk7CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKK0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoaWQgZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChl
bGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxlbWVu
dCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQotICAgIDogbV9lbGVt
ZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQotCi17
Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci0gICAgW21fZWxlbWVudCByZWxlYXNlXTsKIH0K
IAogQGludGVyZmFjZSBOU09iamVjdCAoVUlBY2Nlc3NpYmlsaXR5SGlkZGVuKQpAQCAtNDYyLDkg
KzQ0Nyw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAgIGlkIHN0YXJ0VGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQgZW5kVGV4dE1hcmtlciA9IFttX2Vs
ZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIsIG5pbF07CisgICAgaWQgc3Rh
cnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJrZXI6dGV4dE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIGVuZFRleHRNYXJrZXIgPSBbbV9l
bGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydFRleHRNYXJrZXIsIGVu
ZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQg
dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKQEAgLTQ3Miw3ICs0NTcs
NyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHN0YXJ0UmFuZ2UsIGJvb2wgZm9yd2FyZCkKIHsK
LSAgICBpZCBtaXNzcGVsbGluZ1JhbmdlID0gW21fZWxlbWVudCBtaXNzcGVsbGluZ1RleHRNYXJr
ZXJSYW5nZTooaWQpc3RhcnRSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3J3YXJk
OmZvcndhcmRdOworICAgIGlkIG1pc3NwZWxsaW5nUmFuZ2UgPSBbbV9lbGVtZW50IG1pc3NwZWxs
aW5nVGV4dE1hcmtlclJhbmdlOnN0YXJ0UmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkg
Zm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZShtaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAtNTAzLDM0ICs0ODgsMzQgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIAogaW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZCly
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IHJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIHJldHVybiBbbV9lbGVtZW50IGxl
bmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKIH0KIAogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJh
eSAqdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5k
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQog
CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSog
cmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsKICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiB9CiAKIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAg
aWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7Cisg
ICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAg
ICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAgICBpZCBvYmogPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKKyAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RG
b3JUZXh0TWFya2VyOm1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlmIChvYmop
CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iaik7CiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC01NTMsMTkgKzUzOCwxOSBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KQog
CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91
c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAg
aWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgcHJldmlvdXNNYXJr
ZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOnRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIocHJl
dmlvdXNNYXJrZXIpOwogfQogCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKIHsKLSAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFya2VyRm9yTWFy
a2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgbmV4dE1h
cmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5leHRN
YXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKW1hcmtlclJhbmdl
LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gbWFya2Vy
UmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWYgKCF0ZXh0TWFya2VycyB8
fCAhW3RleHRNYXJrZXJzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIGNyZWF0ZUVtcHR5SlNTdHJpbmcoKTsKICAgICByZXR1cm4gW1ttX2VsZW1lbnQgc3Ry
aW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKQEAgLTY3
MCw3ICs2NTUsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TgogewogICAgIE5TQXJyYXkgKnRl
eHRNYXJrZXJzID0gbmlsOwogICAgIGlmIChzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCkgJiYgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSkKLSAgICAgICAgdGV4dE1hcmtl
cnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOwor
ICAgICAgICB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzOnRleHRNYXJrZXJzIHdp
dGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4dF1dOwogICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQppbmRl
eCA2NTMzOWIzY2JlYjgzZWI1MjRmMThhZmVjYjBlMmNmMjJhMTlkM2RjLi45NjVmYWY1OTk3YTMy
MzhlMTMyOWI1NzI1OWJhOWM1ZDcyODJlNmVlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm0KQEAgLTc2LDcgKzc2LDcgQEAgLSAoTlNB
cnJheSAqKW1hcmtlZFJhbmdlCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOkAoW3JhbmdlIHN0YXJ0T2Zm
c2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pLCBuaWxdOworICAgIHJldHVybiBAW0AoW3Jhbmdl
IHN0YXJ0T2Zmc2V0XSksIEAoW3JhbmdlIGVuZE9mZnNldF0pXTsKIH0KIAogLSAodm9pZClpbnNl
cnRUZXh0OihOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMGI4NjdhZGNiOTBjMzEyMjQxNmRjYzI2
NWYzODUzYjYxYjZkNDcxMy4uNzk0MDczOGEzMzkwZWIyNzBhNjA4YmZkMDU5ZTE3MmFmNGI3OTA5
MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21t
b25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21t
b25NYWMubW0KQEAgLTQ4LDE3ICs0OCwxNyBAQCAtIChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4p
Y3JlYXRlSlNTdHJpbmdSZWYKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKIH0KIAotTlNEaWN0aW9uYXJ5ICpz
ZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlND
b250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0RWxlbWVudCwg
Ym9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBz
ZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wg
aW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNhdGVQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlv
bk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3Ry
aW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICAKICAgICBpZiAo
c3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSkKLSAgICAg
ICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OihpZClzdGFydEVsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKLSAgICAKKyAgICAg
ICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnN0YXJ0RWxlbWVudC0+cGxhdGZv
cm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdOworCiAgICAgW3BhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlv
bk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOwot
ICAgIAorCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAocmVzdWx0c0xp
bWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOwotICAgIAorCiAgICAgaWYgKHNlYXJjaEtl
eSkgewogICAgICAgICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBuaWw7CiAgICAgICAgIGlmIChK
U1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgc2VhcmNoS2V5KSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Lm1tCmluZGV4IDlkN2ZmNmU5YmU2NDQ0NTM3YTlmZmE1YmE4NjNiZWM0NjdhYWZiYTYuLmQxNjc4
Mjc4ZDg0YjNkZWViYmM1NjJmYmNlNDA3YThhZDU0NTk1NDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIubW0KQEAgLTI5LDMzICsyOSwyMCBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAKKyNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZD
Ri5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBOU09iamVjdCAoV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBZGRpdGlvbnMpCiArICh2b2lkKWFjY2Vzc2liaWxp
dHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdDsKIEBlbmQKIAotQGlu
dGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0tIChKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBO
U1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0KLS0gKEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJldHVybiBhZG9wdChKU1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc2VsZikpOwotfQotCi1AZW5kCi0K
IEBpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcgogCiAtIChp
ZClpbml0CkBAIC0xMzIsMjcgKzExOSwyMiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtYWtlVmFsdWVS
ZWZGb3JWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaWQgdmFsdWUpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VBcnJheVJlZkZvckFycmF5KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICphcnJheSkKK3N0YXRpYyBKU09iamVjdFJlZiBtYWtl
QXJyYXlSZWZGb3JBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqYXJyYXkpCiB7
CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IGFycmF5LmNvdW50OwogICAgIEpTVmFsdWVSZWYgYXJn
dW1lbnRzW2NvdW50XTsKLQogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBp
KyspCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG1ha2VWYWx1ZVJlZkZvclZhbHVlKGNvbnRleHQs
IFthcnJheSBvYmplY3RBdEluZGV4OmldKTsKLQogICAgIHJldHVybiBKU09iamVjdE1ha2VBcnJh
eShjb250ZXh0LCBjb3VudCwgYXJndW1lbnRzLCBudWxscHRyKTsKIH0KIAotc3RhdGljIEpTVmFs
dWVSZWYgbWFrZU9iamVjdFJlZkZvckRpY3Rpb25hcnkoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSkKK3N0YXRpYyBKU09iamVjdFJlZiBtYWtlT2JqZWN0UmVm
Rm9yRGljdGlvbmFyeShKU0NvbnRleHRSZWYgY29udGV4dCwgTlNEaWN0aW9uYXJ5ICpkaWN0aW9u
YXJ5KQogewogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBu
dWxscHRyLCBudWxscHRyKTsKLQotICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRPYmpl
Y3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIG9iaiwgQk9PTCAqc3RvcCkKLSAgICB7
Ci0gICAgICAgIGlmIChKU1ZhbHVlUmVmIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFsdWVSZWZGb3JW
YWx1ZShjb250ZXh0LCBvYmopKQorICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRPYmpl
Y3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIGlkIHZhbHVlLCBCT09MKiBzdG9wKSB7Cisg
ICAgICAgIGlmIChhdXRvIHByb3BlcnR5VmFsdWUgPSBtYWtlVmFsdWVSZWZGb3JWYWx1ZShjb250
ZXh0LCB2YWx1ZSkpCiAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9i
amVjdCwgW2tleSBjcmVhdGVKU1N0cmluZ1JlZl0uZ2V0KCksIHByb3BlcnR5VmFsdWUsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CiAgICAgfV07Ci0KICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0KaW5kZXggMGVmZjkxNjk1MDY0NTg5ZmQ5ZThlZmI1YzYzNTYx
ZGExOTk4MDVkNy4uMWJmY2FjN2ZiMzRjZmMwYTc1ZWIyMmEzMTJkYTQ2OTg5YmVhMDU3YiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlck1hYy5tbQpAQCAtMjgsMTEgKzI4LDExIEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKIAotI2lmIFNVUFBPUlRTX0FY
X1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpCiAKIC8vIE1B
Uks6IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyCiAKLUFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGlkIG1hcmtlcikKICAg
ICA6IG1fdGV4dE1hcmtlcihtYXJrZXIpCiB7CiB9CkBAIC00OCwxNyArNDgsMTcgQEAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpCiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG90
aGVyKQogewotICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlcigpIGlz
RXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIFtwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CiB9CiAKLVBsYXRmb3JtVGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QgCitpZCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
cGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIG1fdGV4dE1hcmtlci5n
ZXQoKTsKIH0KIAogLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZQogCi1BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShpZCBtYXJrZXJSYW5nZSkKICAg
ICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQogewogfQpAQCAtNzQsMTIgKzc0LDEy
IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKCkKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFsKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90aGVyKQogewotICAgIHJldHVybiBbKF9fYnJp
ZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNFcXVhbDooX19icmlkZ2UgaWQpb3Ro
ZXItPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBbcGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKSBpc0VxdWFsOm90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsK
IH0KIAotUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAoraWQgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAogewogICAgIHJldHVy
biBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKIH0KIAotI2VuZGlmIC8vIFNVUFBPUlRTX0FYX1RF
WFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCmluZGV4IGNlNmI2MjMxZTMyZDVlOWYzZWQ4ZjVhN2I2MzQ3NzM0M2Y1MDQxMGYuLjZiNWI1
ZWZiZGI3ODMxZjA4YjA1YWYwNTYxODJjM2JjMzA2NGRjMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwxMSArMjQsMTEg
QEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgi
Ci0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCisjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUu
aCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CkBAIC0z
Niw3ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlPd25zQXR0
cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUgQCJBWE93bnMiCkBA
IC04NiwyNiArODYsMTkgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVF
bXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhudWxscHRyLCAwKSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKLSAgICA6IG1fZWxlbWVu
dChlbGVtZW50KQotICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCitzdGF0aWMgT3B0aW9u
YWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCosIGlkIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6IGFwQHdlYmtp
dC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0
byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KLSAgICBbbV9lbGVtZW50IHJldGFpbl07Cisg
ICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGhl
cikKLSAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCi0gICAgLCBtX25vdGlmaWNhdGlv
bkhhbmRsZXIoMCkKK3N0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwg
aWQgZWxlbWVudCkKIHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CisgICAgcmV0dXJuIHsgeyBl
bGVtZW50IH0gfTsKIH0KIAotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoKQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dChpZCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiB7Ci0gICAgLy8gVGhlIG5v
dGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVOb3RpZmljYXRp
b25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0LgotICAgIEFT
U0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICBbbV9lbGVtZW50IHJlbGVhc2VdOwog
fQogCiBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwg
aWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCkBAIC0xNzksMTYgKzE3MiwxMyBAQCBzdGF0
aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQgYWNjZXNzaWJpbGl0eU9iamVjdCkK
ICAgICByZXR1cm4gYXR0cmlidXRlc1N0cmluZzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LXN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIEpTT2JqZWN0UmVmIGNvbnZlcnRWZWN0b3JUb09iamVjdEFycmF5KEpTQ29udGV4
dFJlZiBjb250ZXh0LCBWZWN0b3I8VD4gY29uc3QmIGVsZW1lbnRzKQogewotICAgIEpTVmFsdWVS
ZWYgYXJyYXlSZXN1bHQgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCAwKTsKLSAg
ICBKU09iamVjdFJlZiBhcnJheU9iaiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcnJheVJl
c3VsdCwgMCk7Ci0gICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNpemUoKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQotICAgICAgICBKU09i
amVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheU9iaiwgaSwgSlNPYmplY3RNYWtl
KGNvbnRleHQsIGVsZW1lbnRzW2ldLmdldEpTQ2xhc3MoKSwgbmV3IFQoZWxlbWVudHNbaV0pKSwg
MCk7Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAgYXV0byBhcnJheSA9IEpTT2JqZWN0
TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIHNp
emUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXks
IGksIEpTT2JqZWN0TWFrZShjb250ZXh0LCBlbGVtZW50c1tpXS5nZXRKU0NsYXNzKCksIG5ldyBU
KGVsZW1lbnRzW2ldKSksIG51bGxwdHIpOworICAgIHJldHVybiBhcnJheTsKIH0KIAogc3RhdGlj
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5T
U3RyaW5nICphdHRyaWJ1dGUsIE5TU3RyaW5nICp2YWx1ZSkKQEAgLTIwNSwxNyArMTk1LDYgQEAg
c3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZh
bHVlKE5TU3RyaW5nICphdHRyaWJ1dGUKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9yPFQ+IGNvbnZlcnROU0FycmF5VG9WZWN0b3Io
TlNBcnJheSAqYXJyYXkpCi17Ci0gICAgVmVjdG9yPFQ+IHY7Ci0gICAgTlNVSW50ZWdlciBjb3Vu
dCA9IGFycmF5LmNvdW50OwotICAgIHYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0g
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgdi5hcHBl
bmQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pOwotICAgIHJldHVybiB2OwotfQotCiBzdGF0aWMg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhWZWN0b3I8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgTlNNdXRhYmxlU3Ry
aW5nKiBhbGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwpAQCAtMzE1
LDcgKzI5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVt
ZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRz
QXR0cmlidXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PihsaW5rZWRFbGVtZW50cyk7CisgICAgZWxlbWVudFZlY3Rv
ciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua2VkRWxlbWVudHMpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzIzLDcgKzMwMiw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4mIGVsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
TlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnRO
U0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4obGlua0VsZW1lbnRzKTsKKyAg
ICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihsaW5r
RWxlbWVudHMpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzMxLDcgKzMx
MCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAgZWxl
bWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAK
QEAgLTMzOSw3ICszMTgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxk
cmVuV2l0aFJhbmdlKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PgogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKLSAgICBlbGVtZW50VmVj
dG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjaGls
ZHJlbik7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4oY2hpbGRyZW4pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTI4
LDggKzUwNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKIHsKLSAgICBOU1N0cmluZyog
YXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9lbGVtZW50KTsKLSAgICByZXR1cm4g
W2F0dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIHJldHVybiBbYXR0cmlidXRlc09m
RWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTU0OCw3ICs1MjYsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+JiBlbGVtZW50cwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0gY29udmVydE5TQXJy
YXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7CisgICAgICAgIGVsZW1l
bnRzID0gbWFrZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pih2YWx1ZSk7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC01NTcsNyArNTM1LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiYgZWxlbWUKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNv
bHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnROU0FycmF5
VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBlbGVtZW50
cyA9IG1ha2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNTY2LDcgKzU0NCw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUsCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnROU0FycmF5VG9WZWN0
b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOworICAgICAgICBlbGVtZW50cyA9IG1h
a2VWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4odmFsdWUpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKIH0KIApAQCAtNjQzLDcgKzYyMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMo
KQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUo
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nICpyb2xlID0g
ZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3RyaW5n
ICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkp
OwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlIiwgcm9s
ZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjUzLDcgKzYzMSw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xl
KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogcm9sZSA9
IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICBOU1N0
cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50
LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYU3Vi
cm9sZSIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNjYzLDcgKzY0
MSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0
ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9s
ZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29u
Y2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2NyaXB0aW9uIiwgcm9sZSk7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtNjczLDcgKzY1MSw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRp
b24oKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
TlNTdHJpbmcgKmNvbXB1dGVkUm9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUiXSwgbV9lbGVtZW50
KTsKKyAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBUm9sZSJdLCBt
X2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbY29tcHV0ZWRSb2xlU3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC02ODMsNyAr
NjYxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbXB1dGVkUm9sZVN0cmluZygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0sIG1f
ZWxlbWVudCk7CisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1
dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogCkBAIC02OTMsNyArNjcxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25B
dHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25P
ZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4g
Y29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24iLCBkZXNjcmlwdGlv
bik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MDMsNyArNjgxLDcgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9u
KCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpvcmll
bnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQg
ZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogCkBAIC03MTMsNyArNjkxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgp
KTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCkBAIC03MjQsNyArNzAyLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1f
ZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1fZWxlbWVu
dC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWExh
bmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAt
NzM0LDcgKzcxMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVd
LCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBB
dHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKQEAgLTEwMjYsNyArMTAwNCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAogaW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0
ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDppbmRl
eF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQ
YXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1ZSBpbnRWYWx1ZV07
IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEwMzcsNyArMTAxNSw3IEBAIGludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQg
bGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdl
Rm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBudW1i
ZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1cm4gW05TU3RyaW5nRnJvbVJhbmdl
KFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKQEAgLTExNjYsNyArMTE0NCw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRSZWYgY29udGV4dCwK
ICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBzZWFyY2hUZXh0UGFy
YW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIHNlYXJjaFN0cmluZ3MsIHN0
YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdpdGhDcml0ZXJpYSIgZm9yUGFyYW1l
dGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09iamVj
dEFycmF5PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KGNvbnRleHQsIGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4ocmVzdWx0KSk7CisgICAg
ICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheShjb250ZXh0LCBtYWtlVmVjdG9y
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+KHJlc3VsdCkpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNzcsNyArMTE1NSw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5IZWFkZXJzKCkKICAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBwS2l0Li4u
IG9kZAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNvbHVtbkhl
YWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhD
b2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byBjb2x1bW5IZWFkZXJzVmVjdG9yID0g
Y29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihjb2x1bW5IZWFk
ZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9IG1ha2VWZWN0b3I8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uSGVhZGVyc0FycmF5KTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKQEAgLTExODgsNyArMTE2Niw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dIZWFkZXJz
QXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93SGVh
ZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gcm93SGVhZGVyc1ZlY3RvciA9IGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4ocm93SGVhZGVyc0FycmF5KTsKKyAg
ICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhy
b3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0x
MTk5LDcgKzExNzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07Ci0gICAg
YXV0byBjb2x1bW5zVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pihjb2x1bW5zQXJyYXkpOworICAgIGF1dG8gY29sdW1uc1ZlY3RvciA9IG1ha2VW
ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4oY29sdW1uc0FycmF5KTsKICAgICByZXR1cm4g
ZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICAKQEAgLTEyMTAsNyArMTE4OCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzQXJyYXkgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmli
dXRlXTsKLSAgICBhdXRvIHJvd3NWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+KHJvd3NBcnJheSk7CisgICAgYXV0byByb3dzVmVjdG9yID0gbWFr
ZVZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pihyb3dzQXJyYXkpOwogICAgIHJldHVybiBk
ZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIApAQCAtMTIyMSw3ICsxMTk5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogY2VsbHNBcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhWaXNpYmxlQ2VsbHMiXTsK
LSAgICBhdXRvIGNlbGxzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKKyAgICBhdXRvIGNlbGxzVmVjdG9yID0gbWFrZVZl
Y3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PihjZWxsc0FycmF5KTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgCkBAIC0xMzAyLDcgKzEyODAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiAKIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1
bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKLSAgICBOU0FycmF5ICpjb2xSb3dBcnJheSA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZElu
dDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10sIG5pbF07CisgICAg
TlNBcnJheSAqY29sUm93QXJyYXkgPSBAW0AoY29sKSwgQChyb3cpXTsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRlcjpjb2xSb3dBcnJh
eV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKQEAgLTE0MjgsNyArMTQwNiw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQogdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSog
YXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1l
bnQoKV07CisgICAgTlNBcnJheSogYXJyYXkgPSBAW2VsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50
KCldOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFycmF5IGZvckF0dHJp
YnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTQ0MCw3ICsxNDE4LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQucGxhdGZvcm1VSUVsZW1lbnQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlXTsKLSAgICBOU0FycmF5ICphcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpl
bGVtZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIE5TQXJyYXkgKmFycmF5ID0gQFtlbGVt
ZW50LnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChzZWxlY3RlZENoaWxkcmVuKQogICAg
ICAgICBhcnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFy
cmF5OmFycmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJyYXkg
Zm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwpA
QCAtMTY2Niw4ICsxNjQ0LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVT
ZWxlY3Rpb24oKQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjoo
X19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1h
cmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjc3
LDEwICsxNjU1LDEwIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcGFyYW1ldGVycyA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotICAgIFtwYXJhbWV0ZXJzIHNldE9iamVj
dDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yS2V5OkAi
QVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJhbWV0ZXJzIHNldE9iamVjdDpzdGFy
dC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJh
bmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9v
bDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJlY3Rpb24iXTsKICAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJzXTsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBlUmVm
KXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE2OTAsNyArMTY2OCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVu
dChBCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJh
bmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJr
ZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVt
ZW50KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRn
ZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MDAsNyArMTY3OCw3IEBAIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlk
IHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKLSAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRl
eHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNzQxLDcgKzE3MTksNyBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIGludCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1i
ZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCly
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgTlNOdW1iZXIqIGxlbmd0aFZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0aEZv
clRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKICAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNzUxLDcgKzE3MjksNyBAQCBpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUs
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKV07CiAgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmlu
ZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xNzY2LDcgKzE3NDQs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBpbmRleE51bWJlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJbmRleEZvclRleHRN
YXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CisgICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOm1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbaW5kZXhOdW1iZXIgaW50
VmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE3NzcsNyArMTc1
NSw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3ODYsNyArMTc2NCw3IEBAIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJG
b3JJbmRleChpbnQgdGV4dEluZGV4CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4
dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxp
ZCIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlkIiBmb3JQYXJhbWV0ZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJldHVybiBbdmFsaWROdW1iZXIg
Ym9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTE3OTYsOCArMTc3
NCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihf
X2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlvdXNNYXJr
ZXIpOworICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODA2LDggKzE3ODQsOCBAQCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1Rl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKW5leHRNYXJrZXIpOworICAgIGlkIG5leHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0TWFya2VyKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xODE2LDcgKzE3OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dAogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIg
Zm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpt
YXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgcmV0dXJuIFt0ZXh0
U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgCkBAIC0xODQ2LDcgKzE4MjQsNyBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7Ci0gICAgaWQg
c3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJp
YnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQp
bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIGlkIHN0cmluZyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6bWFya2VyUmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOwogICAgIHJldHVybiBjcmVhdGVKU1N0cmluZ1JlZihzdHJpbmcp
OwogfQogCkBAIC0xODU0LDkgKzE4MzIsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYQogewog
ICAgIGlkIHBhcmFtZXRlciA9IG5pbDsKICAgICBpZiAoaW5jbHVkZVNwZWxsQ2hlY2spCi0gICAg
ICAgIHBhcmFtZXRlciA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aW5jbHVkZVNwZWxsQ2hlY2tdLCBAIkFYU3BlbGxD
aGVjayIsIChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Uo
KSwgQCJBWFRleHRNYXJrZXJSYW5nZSIsIG5pbF07CisgICAgICAgIHBhcmFtZXRlciA9IEB7IEAi
QVhTcGVsbENoZWNrIjogaW5jbHVkZVNwZWxsQ2hlY2sgPyBAWUVTIDogQE5PLCBAIkFYVGV4dE1h
cmtlclJhbmdlIjogbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgfTsKICAg
ICBlbHNlCi0gICAgICAgIHBhcmFtZXRlciA9IChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVyID0gbWFya2VyUmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgc3RyaW5nID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2VXaXRoT3B0aW9ucyIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CiAgICAgcmV0dXJu
IGNyZWF0ZUpTU3RyaW5nUmVmKHN0cmluZyk7CiB9CkBAIC0xODY0LDkgKzE4NDIsOSBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYQogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtl
cikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiB0ZXh0TWFy
a2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9fYnJpZGdlIGlkKXN0YXJ0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlkKWVuZE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCksIG5pbF07CisgICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIiBm
b3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4NzUs
OCArMTg1Myw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBCiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZU
eXBlUmVmKXRleHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODg1LDggKzE4
NjMsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZwogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwot
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBlUmVmKXRl
eHRNYXJrZXIpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFy
YW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg5Niw3ICsxODc0LDcgQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtl
ckZvckJvdW5kcyhpbnQgeCwgaW4KIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3
aWR0aCwgaGVpZ2h0KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTA2LDcgKzE4ODQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMo
aW50IHgsCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1l
dGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KV1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigoX19icmlkZ2UgQ0ZUeXBl
UmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0
TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xOTE2LDcgKzE4OTQsNyBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9u
IiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtlUG9pbnQoeCwgeSld
XTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJl
Zil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIodGV4dE1h
cmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTkyNSw3ICsxOTAzLDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjptYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVs
ZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTE5MzYsNyArMTkx
NCw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQg
dGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhT
dGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9f
YnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0Niw3ICsxOTI0LDcgQEAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07Ci0gICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtl
cik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5
NTUsNyArMTkzMyw3IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRT
ZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFy
a2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9y
bVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0
VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgZm9yQXR0cmlidXRl
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTY0LDgg
KzE5NDIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJs
ZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcgogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIGlkIHRleHRN
YXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhM
ZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTc0LDggKzE5NTIsOCBAQCBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4
dE1hcmtlclJhbmdlRm9yVAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
IiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xOTg0LDggKzE5NjIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZv
cgogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlv
dXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBw
cmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1l
dGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlv
dXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIocHJldmlvdXNUZXh0TWFy
a2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xOTk0LDggKzE5NzIsOCBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZQogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0VGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0V29yZEVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRl
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIobmV4dFRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMDQsOCArMTk4Miw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChfX2JyaWRnZSBDRlR5cGVSZWYp
dGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9y
VGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFu
Z2UpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTIwMTQsOCArMTk5Miw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yCiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFw
aFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgcHJldmlv
dXNUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1l
dGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlv
dXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihwcmV2aW91c1Rl
eHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTIwMjQsOCArMjAwMiw4IEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyCiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdy
YXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgbmV4dFRl
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4
dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJp
ZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0VGV4dE1hcmtlcik7
CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjAzNCw4ICsyMDEyLDgg
QEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBh
cmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXgKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKChf
X2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VudGVuY2VU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0NCw4ICsyMDIyLDggQEAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJS
YW5nZUZvclQKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHByZXZpb3VzVGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKChfX2JyaWRnZSBD
RlR5cGVSZWYpcHJldmlvdXNUZXh0TWFya2VyKTsKKyAgICBpZCBwcmV2aW91c1RleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNTZW50
ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKHByZXZpb3VzVGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1NCw4ICsyMDMyLDggQEAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0
VGV4dE1hcmtlckYKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIGlkIG5leHRUZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0
VGV4dE1hcmtlcik7CisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5leHRUZXh0TWFya2VyKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMGI3NDQ0OTUyMWMwNjI4
ZWE2NzY1YjQzZDBmYmM2N2VjMzYzZGIyZS4uOTkwNmE5ZjdjZjMzODk0ZDNlMTVlMzlkMmFlMTA2
NjdhZTlkYjE3NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtOTIsOSArOTIsOSBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8Z2V0b3B0Lmg+CisjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
RmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgc3RhdGljIHZvaWQg
YWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29uc3QgY2hhciogZXhlY3V0YWJsZVBh
dGgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNTdHJpbmcgKnB3ZCA9IFtb
TlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZXhlY3V0YWJsZVBhdGhdIHN0cmluZ0J5RGVs
ZXRpbmdMYXN0UGF0aENvbXBvbmVudF07Ci0gICAgW1dlYlBsdWdpbkRhdGFiYXNlIHNldEFkZGl0
aW9uYWxXZWJQbHVnSW5QYXRoczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cHdkXV07CisgICAg
W1dlYlBsdWdpbkRhdGFiYXNlIHNldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczpAW3B3ZF1dOwog
ICAgIFtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0YWJhc2VdIHJlZnJlc2hdOwogI2VuZGlm
CiB9CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbgogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBn
ZW5lcmFsIHBhc3RlYm9hcmQKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
ZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1N0cmluZ1Bib2FyZFR5cGVd
IG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xh
cmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCiAgICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRl
c3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0cigpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm1tCmluZGV4IDExOWMzZGI5ZDM0ZmI2NjY3NzE2YzA5NTI2ZjhjOGQ5ZjI0NTYyYjUuLmY5MzFj
NmFmNTEzNDE0NDIzNGYwYjY3OWU1NDg3YjlmOGVmMGM0ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQpAQCAtODYsNyAr
ODYsNyBAQCArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiAvLyBvZiB0aGUgdXN1YWwg
V2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3VuZAogLSAoTlNJbnRlZ2VyKWRlY2xh
cmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiB7Ci0gICAgcmV0dXJu
IFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3duZXI6
bmV3T3duZXJdOworICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6QFt0eXBlXSBvd25lcjpu
ZXdPd25lcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggZGM5Mjg3ODE3YWUyYWUzOWU3NmI1NmJmYzZj
NjNhZTExYzVkNDI5NS4uMzZhNDA0YjA1OWE0NmZjYmY2YWUyZmQ3MWI3MzY3ODM1ZDMzOWI5YiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlczooV2Vi
U2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2VydChbanNGaWxlUGF0aHMgaXNLaW5k
T2ZDbGFzczpbV2ViU2NyaXB0T2JqZWN0IGNsYXNzXV0pOwogCiAgICAgTlNQYXN0ZWJvYXJkICpw
Ym9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bi
b2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVzUGJv
YXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbcGJvYXJkIGRlY2xhcmVUeXBlczpAW05TRmlsZW5h
bWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKIAogICAgIE5TVVJMICpjdXJyZW50VGVzdFVSTCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltbbWFpbkZyYW1lIHdlYlZpZXddIG1haW5GcmFtZVVSTF1d
OwogCkBAIC0xNDkzLDggKzE0OTMsOCBAQCAtICh2b2lkKXNlbnRUb3VjaEV2ZW50T2ZUeXBlOihX
ZWJFdmVudFR5cGUpdHlwZQogCiAgICAgZm9yIChTeW50aGV0aWNUb3VjaCAqY3VyclRvdWNoIGlu
IHRvdWNoZXMpIHsKICAgICAgICAgW3RvdWNoTG9jYXRpb25zIGFkZE9iamVjdDpbTlNWYWx1ZSB2
YWx1ZVdpdGhDR1BvaW50OmN1cnJUb3VjaC5sb2NhdGlvbl1dOwotICAgICAgICBbdG91Y2hJZGVu
dGlmaWVycyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpjdXJyVG91
Y2guaWRlbnRpZmllcl1dOwotICAgICAgICBbdG91Y2hQaGFzZXMgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y3VyclRvdWNoLnBoYXNlXV07CisgICAgICAgIFt0b3Vj
aElkZW50aWZpZXJzIGFkZE9iamVjdDpAKGN1cnJUb3VjaC5pZGVudGlmaWVyKV07CisgICAgICAg
IFt0b3VjaFBoYXNlcyBhZGRPYmplY3Q6QChjdXJyVG91Y2gucGhhc2UpXTsKIAogICAgICAgICBp
ZiAoKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VFbmRlZCkgfHwgKGN1cnJUb3VjaC5w
aGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpKQogICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Q
cm92aWRlci5tbQppbmRleCBkOWY1MGQzMDc2NTFjYTI2YzQ1YjQ3MzIwNTYxNzlkM2NjZGQxNzcy
Li4yNDI4NGYwZTA2NzljODM1ZmFlNTFhOTc0ZWQ1NGUyMWY1MmQ4NjQ3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
bW0KQEAgLTc1LDcgKzc1LDcgQEAgLSAodm9pZCljYW5jZWxOb3RpZmljYXRpb246KFdlYk5vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gW25v
dGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF07CiAgICAgQVNTRVJUKF9ub3RpZmljYXRpb25zLmNv
bnRhaW5zKG5vdGlmaWNhdGlvbklEKSk7CiAKLSAgICBbKF9fYnJpZGdlIFdlYlZpZXcgKilfbm90
aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmljYXRpb25zRGlkQ2xv
c2U6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRM
b25nTG9uZzpub3RpZmljYXRpb25JRF1dXTsKKyAgICBbKF9fYnJpZGdlIFdlYlZpZXcgKilfbm90
aWZpY2F0aW9uVmlld01hcC5nZXQobm90aWZpY2F0aW9uSUQpIF9ub3RpZmljYXRpb25zRGlkQ2xv
c2U6QFtbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6bm90aWZpY2F0aW9uSURd
XV07CiB9CiAKIC0gKHZvaWQpbm90aWZpY2F0aW9uRGVzdHJveWVkOihXZWJOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9PYmpD
Q29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0K
aW5kZXggMGIxMjFlOTAxYmE0NTFmZDk3MWI2NDExOWY0MDJkNzZiODUxMGY2Zi4uYzFhMTBhN2I3
NTM2MTBiYzI4YmM4ZjdhY2UyOTEyMWU2NDU2MmEyZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL09iakNDb250cm9sbGVyLm0KQEAgLTE0NiwyNSArMTQ2LDIwIEBAIC0gKGlkKW9iamVjdE9m
Q2xhc3M6KE5TU3RyaW5nICopYUNsYXNzCiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5n
OkAiTlNDRkJvb2xlYW4iXSkKICAgICAgICAgcmV0dXJuIEBZRVM7CiAgICAgaWYgKFthQ2xhc3Mg
aXNFcXVhbFRvU3RyaW5nOkAiTlNDRk51bWJlciJdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgIHJldHVybiBAKDEpOwogICAgIGlmIChbYUNsYXNz
IGlzRXF1YWxUb1N0cmluZzpAIk5TQ0ZTdHJpbmciXSkKICAgICAgICAgcmV0dXJuIEAiIjsKICAg
ICBpZiAoW2FDbGFzcyBpc0VxdWFsVG9TdHJpbmc6QCJXZWJTY3JpcHRPYmplY3QiXSkKICAgICAg
ICAgcmV0dXJuIHNlbGY7CiAgICAgaWYgKFthQ2xhc3MgaXNFcXVhbFRvU3RyaW5nOkAiTlNBcnJh
eSJdKQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworICAgICAgICByZXR1cm4gQFtd
OwogCiAgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAoTlNBcnJheSAqKWFycmF5T2ZTdHJpbmcKIHsK
LSAgICBOU1N0cmluZyAqc3RyaW5nc1szXTsKLSAgICBzdHJpbmdzWzBdID0gQCJvbmUiOwotICAg
IHN0cmluZ3NbMV0gPSBAInR3byI7Ci0gICAgc3RyaW5nc1syXSA9IEAidGhyZWUiOwotICAgIE5T
QXJyYXkgKmFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzdHJpbmdzIGNvdW50OjNd
OwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gQFsgQCJvbmUiLCBAInR3byIsIEAidGhy
ZWUiIF07CiB9CiAKIC0gKEJPT0wpaWRlbnRpdHlJc0VxdWFsOihXZWJTY3JpcHRPYmplY3QgKilh
IDooV2ViU2NyaXB0T2JqZWN0ICopYgpAQCAtMjE3LDkgKzIxMiwxMSBAQCAtIChCT09MKXRlc3RX
cmFwcGVyUm91bmRUcmlwcGluZzooV2ViU2NyaXB0T2JqZWN0ICopd2ViU2NyaXB0T2JqZWN0CiAg
ICAgaWYgKFtbd2ViU2NyaXB0T2JqZWN0IGV2YWx1YXRlV2ViU2NyaXB0OkAiKHsgfSkiXSBjbGFz
c10gIT0gW3dlYlNjcmlwdE9iamVjdCBjbGFzc10pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFt3ZWJTY3JpcHRPYmplY3Qgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6NjY2
XSBmb3JLZXk6QCJrZXkiXTsKLSAgICBpZiAoIVtbd2ViU2NyaXB0T2JqZWN0IHZhbHVlRm9yS2V5
OkAia2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fAotICAgICAgICAhW1t3
ZWJTY3JpcHRPYmplY3QgdmFsdWVGb3JLZXk6QCJrZXkiXSBpc0VxdWFsVG9OdW1iZXI6W05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6NjY2XV0pCisgICAgW3dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpA
KDY2NikgZm9yS2V5OkAia2V5Il07CisgICAgaWQgdmFsdWUgPSBbd2ViU2NyaXB0T2JqZWN0IHZh
bHVlRm9yS2V5OkAia2V5Il07CisgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpOU051bWJl
ci5jbGFzc10pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVt2YWx1ZSBpc0VxdWFs
VG9OdW1iZXI6QCg2NjYpXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgW3dlYlNjcmlw
dE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6QCJrZXkiXTsKQEAgLTI3Miw3ICsyNjksNyBAQCAt
ICh2b2lkKXN0b3JlV2ViU2NyaXB0T2JqZWN0OihXZWJTY3JpcHRPYmplY3QgKil3ZWJTY3JpcHRP
YmplY3QKIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheQogewotICAgIHJldHVybiBbTlNBcnJheSBh
cnJheV07CisgICAgcmV0dXJuIEBbXTsKIH0KIAogLSAoTlNBcnJheSAqKXRlc3RBcnJheU9mT2Jq
ZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCAwMDY1
OTU2YzgxZGQ3MTM1ZGUwMjdmNDlhMWY1M2JlYzY4MzYwNzJhLi45MzEyZDhiOGE5NzZmYTVhMmIx
NGRhYTRlMzM2MDRlNDI0YmEwNTMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQpAQCAtMTczLDE5ICsxNzMsMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVhckFw
cGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogICAgIFtvcmlnaW4gcmVs
ZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0NvbnRleHRSZWYgY29u
dGV4dCwgTlNBcnJheSAqb3JpZ2lucykKK3N0YXRpYyBKU09iamVjdFJlZiBvcmlnaW5zQXJyYXlU
b0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpvcmlnaW5zKQogewotICAgIE5TVUlu
dGVnZXIgY291bnQgPSBbb3JpZ2lucyBjb3VudF07Ci0KLSAgICBKU1ZhbHVlUmVmIGFycmF5UmVz
dWx0ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgMCwgMCk7Ci0gICAgSlNPYmplY3RS
ZWYgYXJyYXlPYmogPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJyYXlSZXN1bHQsIDApOwor
ICAgIGF1dG8gY291bnQgPSBbb3JpZ2lucyBjb3VudF07CisgICAgYXV0byBhcnJheSA9IEpTT2Jq
ZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgTlNTdHJpbmcgKm9yaWdp
biA9IFtbb3JpZ2lucyBvYmplY3RBdEluZGV4OmldIGRhdGFiYXNlSWRlbnRpZmllcl07CiAgICAg
ICAgIGF1dG8gb3JpZ2luSlMgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpb3JpZ2luKSk7Ci0gICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlB
dEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBv
cmlnaW5KUy5nZXQoKSksIDApOworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBhcnJheSwgaSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgb3JpZ2luSlMuZ2V0
KCkpLCAwKTsKICAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlSZXN1bHQ7CisgICAgcmV0dXJuIGFy
cmF5OwogfQogCiBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25D
YWNoZShKU0NvbnRleHRSZWYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tCmluZGV4IDFjYmJkNzFkNGFjMWJhYWU3MWI0Zjlj
NDc1Y2FiMjE3YmEyM2MyNDUuLjM1ZWFlOGYwNTNkODc5YWJhNTcxZmI5YjM5ZDAzNGYyZDg2ODRj
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9s
bGVyTWFjLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xs
ZXJNYWMubQpAQCAtMzg3LDcgKzM4Nyw3IEBAIC0gKE5TQXJyYXkgKiltYXJrZWRSYW5nZQogCiAg
ICAgaWYgKHRleHRJbnB1dCkgewogICAgICAgICBOU1JhbmdlIHJhbmdlID0gW3RleHRJbnB1dCBt
YXJrZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRpb25dLCBbTlNOdW1iZXIg
bnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07CisgICAgICAgIHJldHVy
biBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwogICAgIH0KIAogICAgIHJl
dHVybiBuaWw7CkBAIC0zOTksNyArMzk5LDcgQEAgLSAoTlNBcnJheSAqKXNlbGVjdGVkUmFuZ2UK
IAogICAgIGlmICh0ZXh0SW5wdXQpIHsKICAgICAgICAgTlNSYW5nZSByYW5nZSA9IFt0ZXh0SW5w
dXQgc2VsZWN0ZWRSYW5nZV07Ci0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cmFuZ2UubG9jYXRpb25dLCBbTlNO
dW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJhbmdlLmxlbmd0aF0sIG5pbF07CisgICAgICAg
IHJldHVybiBAW0AocmFuZ2UubG9jYXRpb24pLCBAKHJhbmdlLmxlbmd0aCldOwogICAgIH0KIAog
ICAgIHJldHVybiBuaWw7CkBAIC00MTUsMTIgKzQxNSw3IEBAIC0gKE5TQXJyYXkgKilmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJzRnJvbTooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCiAgICAgICAg
ICAgICByZWN0Lm9yaWdpbiA9IFtbd2ViVmlldyB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6
cmVjdC5vcmlnaW5dOwogICAgICAgICAgICAgcmVjdCA9IFt3ZWJWaWV3IGNvbnZlcnRSZWN0OnJl
Y3QgZnJvbVZpZXc6bmlsXTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6cmVj
dC5vcmlnaW4ueF0sCi0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnJlY3Qu
b3JpZ2luLnldLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpyZWN0LnNp
emUud2lkdGhdLAotICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpyZWN0LnNp
emUuaGVpZ2h0XSwKLSAgICAgICAgICAgIG5pbF07CisgICAgICAgIHJldHVybiBAWyBAKHJlY3Qu
b3JpZ2luLngpLCBAKHJlY3Qub3JpZ2luLnkpLCBAKHJlY3Quc2l6ZS53aWR0aCksIEAocmVjdC5z
aXplLmhlaWdodCkgXTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpAQCAtNDg0LDcgKzQ3OSw3
IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVkU3RyaW5nV2l0aFByaW1h
cnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nCiAgICAgaWYgKCFzdWJTdHJpbmdXaXRoQWx0ZXJu
YXRpdmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFs
dGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFBy
aW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0aXZlU3RyaW5nczpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07CisgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVjdCA9IFtbW05TVGV4dEFsdGVybmF0
aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2
ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6QFthbHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNlXTsKICAgICBp
ZiAoIWFsdGVybmF0aXZlT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC01MzgsNyAr
NTMzLDcgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKilldmVudEFycmF5
IHdpdGhTZW5kZXI6KFdlYkhUTUxWaWV3ICopc2VuZGUKIAogICAgIFttb2RpZmllcnMgcmVsZWFz
ZV07CiAgICAgCi0gICAgaWQgcmVzdWx0ID0gW2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2ViU2Ny
aXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OmlucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbSwgbmlsXV07CisgICAgaWQgcmVzdWx0ID0g
W2lucHV0TWV0aG9kSGFuZGxlciBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3Vt
ZW50czpAW2lucHV0TWV0aG9kSGFuZGxlciwgZXZlbnRQYXJhbV1dOwogICAgIGlmICghW3Jlc3Vs
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJvb2xWYWx1ZSldIHx8ICFbcmVzdWx0IGJv
b2xWYWx1ZV0pIHsKICAgICAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNl
bGVjdG9yIikKICAgICAgICAgW3NlbmRlciBkb0NvbW1hbmRCeVNlbGVjdG9yOkBzZWxlY3Rvcihu
b29wOildOyAvLyBBcHBLaXQgc2VuZHMgbm9vcDogaWYgdGhlIGltZSBkb2VzIG5vdCBoYW5kbGUg
YW4gZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9s
bGVyTWFjLm1tCmluZGV4IDBlZWFhMDhjYTIyM2JlNDk2Njc2MDRkOWU5ZjY1MTlkYWZlN2MyYzYu
LmVlMzIzNTkyMTUxM2MzZTllMGExMTVjZDBhM2NmOTBjZjZlNzI3NDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtMTY0LDcg
KzE2NCw3IEBAIE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cGxhdGZvcm1V
bmRvTWFuYWdlcigpIGNvbnN0CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQo
SlNTdHJpbmdSZWYgdGV4dCkKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBOU1Bh
c3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVz
OltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSBvd25lcjpu
aWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVib2FyZFR5cGVTdHJp
bmddIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnRleHQtPnN0cmluZygp
IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAppbmRleCA3
OTdjNzBkYzRhNzMzMGQxNzAzYjc0MThmZWM4M2UzZDcxZmZhODAxLi5iNzM4NDBlZTA1MGVhOWI5
NjM3MDBlMjZlMzJlMzQ5NDY4OGU1Njk0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC01OCwxNSArNTgsNiBA
QCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3Jt
VUlFbGVtZW50IGVsZW1lbnQpCiB7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCi0g
ICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQotewotfQotCi1BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCi17Ci19Ci0KIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVsZW1l
bnQpCiB7CiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlQ29tcGFyYWJsZT4gY29tcGFyYWJsZSA9IGNv
bXBhcmFibGVPYmplY3QobV9lbGVtZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQppbmRleCA2MjlkMWRm
Y2YyMzdiN2U2ZDk0OGU1YWQyNzBjNmViMTU5MWZjNGE5Li43YTFkM2Y3NjExNTg3NDAyYjBkMTRh
ZDc2NGZiZGRlODNlMzg3MTYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0yNDIsMTIgKzI0MiwxMCBAQCAt
ICh2b2lkKXNldFJlc3VsdHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlc3VsdHNPYmplY3Qg
aW5Db250ZXh0OihKU0NvbnRleHRSZQogICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09iamVj
dCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBkZXRhaWxzVmFsdWUsIG51bGxwdHIpOwogICAg
ICAgICAgICAgICAgIGF1dG8gZGV0YWlsc09iamVjdFByb3BlcnRpZXMgPSBKU09iamVjdENvcHlQ
cm9wZXJ0eU5hbWVzKGNvbnRleHQsIGRldGFpbHNPYmplY3QpOwogICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGRldGFpbEluZGV4ID0gMDsgZGV0YWlsSW5kZXggPCBKU1Byb3BlcnR5TmFtZUFy
cmF5R2V0Q291bnQoZGV0YWlsc09iamVjdFByb3BlcnRpZXMpOyArK2RldGFpbEluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0YWlsID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBkZXRhaWxPYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgo
Y29udGV4dCwgZGV0YWlsc09iamVjdCwgZGV0YWlsSW5kZXgsIG51bGxwdHIpLCBudWxscHRyKTsK
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBmcm9tID0gbHJvdW5kbChKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBkZXRhaWxPYmplY3QsIGZyb21Q
cm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGxvbmcgdG8gPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdl
dFByb3BlcnR5KGNvbnRleHQsIGRldGFpbE9iamVjdCwgdG9Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51
bGxwdHIpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRhaWwgc2V0T2JqZWN0
OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGZyb20sIHRvIC0gZnJvbSldIGZv
cktleTpOU0dyYW1tYXJSYW5nZV07Ci0gICAgICAgICAgICAgICAgICAgIFtkZXRhaWxzIGFkZE9i
amVjdDpkZXRhaWwuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICBbZGV0YWlscyBhZGRPYmpl
Y3Q6QHsgTlNHcmFtbWFyUmFuZ2U6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdl
KGZyb20sIHRvIC0gZnJvbSldIH1dOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxzT2JqZWN0UHJvcGVydGllcyk7CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCmluZGV4
IDQyMzczYzQ3YjY1YzdlZjUwZDg0YjQ5YjdiMGQ2NzNmN2M2MjQ0M2EuLjk5MjU4ZDVjZDI1YTdj
NTA2NzJjMTQ2MmE0MzdlNjg5NGQxNjVhNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90
aWZpY2F0aW9uLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZE5vdGlmaWNhdGlvbjsK
QEAgLTU4LDE1ICs1OSw2IEBAIHN0cnVjdCBOb3RpZmljYXRpb24gewogICAgIH0KIH07CiAKLXN0
YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1ZlY3RvcihOU0FycmF5PE5TU3RyaW5nICo+ICphcnJheSkK
LXsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoYXJyYXkuY291bnQpOwotICAgIGZvciAoTlNTdHJpbmcgKnN0cmluZyBpbiBhcnJh
eSkKLSAgICAgICAgdmVjdG9yLmFwcGVuZChzdHJpbmcpOwotICAgIHJldHVybiB2ZWN0b3I7Ci19
Ci0KIHN0YXRpYyBWZWN0b3I8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25MaXN0Owogc3RhdGlj
IFJldGFpblB0cjxOU1VSTD4gbm90aWZpY2F0aW9uVVJMOwogc3RhdGljIFJldGFpblB0cjxOU1N0
cmluZz4gbm90aWZpY2F0aW9uSWRlbnRpZmllcjsKQEAgLTg4LDcgKzgwLDcgQEAgLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBVUkw6KE5TVVJMICopdXJsIGNvbnRlbnRSdWxl
TGlzdElkZW50aWZpZXIKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBj
b250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIHBlcmZv
cm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uICopYWN0aW9uIGZvclVSTDooTlNV
UkwgKil1cmwKIHsKLSAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50aWZpZXIsIHVy
bC5hYnNvbHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9uLmJsb2NrZWRD
b29raWVzLCAhIWFjdGlvbi5tYWRlSFRUUFMsIHRvVmVjdG9yKGFjdGlvbi5ub3RpZmljYXRpb25z
KSB9KTsKKyAgICBub3RpZmljYXRpb25MaXN0LmFwcGVuZCh7IGlkZW50aWZpZXIsIHVybC5hYnNv
bHV0ZVN0cmluZywgISFhY3Rpb24uYmxvY2tlZExvYWQsICEhYWN0aW9uLmJsb2NrZWRDb29raWVz
LCAhIWFjdGlvbi5tYWRlSFRUUFMsIG1ha2VWZWN0b3I8U3RyaW5nPihhY3Rpb24ubm90aWZpY2F0
aW9ucykgfSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFy
dFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQppbmRleCBkYjAwODg3N2U3NTdjYTYyNWFiN2U3MjdmNWE5MDRlYmFj
YTdkYWRlLi42OGJlODFiMWI5MzUzY2IwMTFlMTY4YzFkYzRjYTg0ODllZTg5NjhkIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZh
Y3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmREb21haW5zOl4oTlNBcnJheTxOU1N0
cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5ICpkb21haW5zVG9Db21wYXJlID0g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJi
YXIuY29tIiwgQCJleGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0
ZG9tYWluMSIsICBAIndlYmtpdC5vcmciLCBuaWxdOworICAgICAgICBOU0FycmF5ICpkb21haW5z
VG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJiYXIuY29tIiwgQCJl
eGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0ZG9tYWluMSIsICBA
IndlYmtpdC5vcmciXTsKIAogICAgICAgICBOU0FycmF5ICpzb3J0ZWREb21haW5zID0gW2RvbWFp
bnMgc29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOkBzZWxlY3RvcihjYXNlSW5zZW5zaXRpdmVDb21w
YXJlOildOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Bhc3RlSW1hZ2UubW0KaW5kZXggM2EyZmM5MGYwYzJiY2VmZDEzNzllNjE4YTgwZWE3NTdlNjU5
NGI5NS4uOTg0ODlmMGI4NjExZWVhMDA1OGJlNTkwNGMyNTZiNzFiNmM4ZjgyYyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQpA
QCAtMzksMTMgKzM5LDEzIEBACiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUltYWdlRGF0
YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRhICpkYXRhKQogewotICAgIFtbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0OnR5cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBh
c3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW3R5cGVdIG93bmVyOm5pbF07CiAgICAgW1tOU1Bhc3Rl
Ym9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YSBmb3JUeXBlOnR5cGVdOwogfQog
I2Vsc2UKIHZvaWQgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnR5cGUsIE5T
RGF0YSAqZGF0YSkKIHsKLSAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0
SXRlbXM6QFtbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRhdGEgZm9yS2V5OnR5
cGVdXV07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0ZW1zOkBb
QHsgdHlwZTogZGF0YSB9XV07CiB9CiAjZW5kaWYKIApAQCAtMTU1LDggKzE1NSw4IEBAIFRFU1Qo
UGFzdGVJbWFnZSwgUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJQYXN0aW5nSW1hZ2UpCiAjaWYgUExBVEZP
Uk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3RlYm9hcmQoaWQgb2JqZWN0KQogewot
ICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKLSAg
ICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gd3JpdGVPYmplY3RzOltOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6b2JqZWN0LCBuaWxdXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5l
cmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNGaWxlbmFtZXNQYm9hcmRUeXBlXSBvd25l
cjpuaWxdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB3cml0ZU9iamVj
dHM6QFtvYmplY3RdXTsKIH0KIAogVEVTVChQYXN0ZUltYWdlLCBQYXN0ZUdJRkZpbGUpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJj
aGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJB
cmNoaXZlLm1tCmluZGV4IGI3ODVmNWM0ZjJiZDcwMmEzMjViMzcwNTA0NmJlZTU5ODI2MzExOGIu
LmNjN2Y0NDM4YzgyZGY5NGIyOTBkNzc3YTZiYzZhZWI5MjdjNzdkODggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZl
Lm1tCkBAIC0yNDksNyArMjQ5LDcgQEAgVEVTVChQYXN0ZVdlYkFyY2hpdmUsIFdlYkFyY2hpdmVU
eXBlSWRlbnRpZmllcikKICAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBh
bGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291cmNlLmdldCgpIHN1YnJlc291cmNl
czpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsKIAogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwotICAgIFtwYXN0ZWJvYXJk
IGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgZGVjbGFy
ZVR5cGVzOkBbKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5p
bF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2ZSBkYXRhXSBmb3JUeXBlOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIAogICAgIGF1dG8gd2ViVmlldyA9
IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29u
dHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDk0MTJhNGY1NmZjNmQ0Nzk3MWE0YWViY2VmNTljOTRk
YTViNjdmNDQuLjgxYjZmZDgzYmI0ZjFkMjgwMzk4N2NmNjUyNDUyY2Q0NjczNmE4MjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC04MTcsNyArODE3LDcgQEAgVEVTVChXS1VzZXJD
b250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQogCiBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogewotICAgIFdL
VXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBbW1tXS1VzZXJTY3JpcHQgYWxsb2Nd
IF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbicpIiBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0FycmF5IGFycmF5XSBsZWdhY3lCbGFj
a2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQgZGVmYXVsdENs
aWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZRVNdIGF1dG9yZWxlYXNl
XTsKKyAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZpY2F0aW9uID0gW1tbV0tVc2VyU2Ny
aXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBub3RpZmljYXRp
b24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10gbGVnYWN5QmxhY2ts
aXN0OkBbXSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9zY3Jp
cHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRlZmF1bHRDbGllbnRXb3JsZF0gZGVm
ZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFzZV07CiAgICAgV0tVc2Vy
U2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmplY3Rpb25UaW1lOldLVXNl
clNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFtZU9ubHk6WUVTXSBh
dXRvcmVsZWFzZV07CiAKICAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9IFtbVGVzdFdLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDk5NzUwNWJj
NDBkYzA4N2EwNWU5M2M4Njk4ZTkwOGM0YjlkZGEzYzguLmM0NGYwZGFiZGZlMThhYWIwNTQ4Y2M5
MmM3MzIzNzM1MTIwODBkN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTcxNiw3ICsxNzE2
LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgVGFyZ2V0ZWRQcmV2aWV3c1doZW5Ecm9w
cGluZ0ltYWdlcykKICAgICBbc2Vjb25kSXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiYXBwbGUiXTsK
IAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpEcm9wQW5pbWF0aW9uU2hv
dWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFs
SXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmZpcnN0SXRlbS5nZXQoKSwg
c2Vjb25kSXRlbS5nZXQoKSwgbmlsXSBkZWZhdWx0RHJvcFByZXZpZXdzOltOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6Zmlyc3RQcmV2aWV3LmdldCgpLCBzZWNvbmRQcmV2aWV3LmdldCgpLCBuaWxd
XTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAW2ZpcnN0SXRlbS5n
ZXQoKSwgc2Vjb25kSXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW2ZpcnN0UHJldmll
dy5nZXQoKSwgc2Vjb25kUHJldmlldy5nZXQoKV1dOwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpD
R1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSg0NTAsIDQ1MCldOwogCiAgICAgRVhQRUNU
X0VRKFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10uY291bnQsIDJVKTsKQEAgLTE3NTUs
NyArMTc1NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIFRhcmdldGVkUHJldmlld0lz
Q2xpcHBlZFdoZW5Ecm9wcGluZ1RhbGxJbWFnZSkKICAgICBbaXRlbSBzZXRTdWdnZXN0ZWROYW1l
OkAiZ3JlZW4iXTsKIAogICAgIFtzaW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpEcm9w
QW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFuZGxpbmdEcm9wXTsKLSAgICBbc2ltdWxhdG9y
IHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6aXRlbS5n
ZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cHJldmll
dy5nZXQoKV1dOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbaXRl
bS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2aWV3czpAW3ByZXZpZXcuZ2V0KCldXTsKICAgICBbc2lt
dWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMzUwLCAzNTAp
XTsKIAogICAgIEVYUEVDVF9FUShbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdLmNvdW50
LCAxVSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA3YTdhYzY2YzFjNDUwMDVkOTk1NmQ1ZTZj
YjgxNzVmNDk0YjE0M2JmLi5mYTQ0ZTI2NmI1ZGUxZTVmNzcyOWY3ZjMwYzEzZDg1MzgyMWZkNWZm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFdLSFRUUENv
b2tpZVN0b3JlLCBDcmVhdGlvblRpbWUpCiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0
OkAiY29va2llVmFsdWUiIGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CiAgICAgW2Nvb2tpZVBy
b3BlcnRpZXMgc2V0T2JqZWN0OkAiLnd3dy53ZWJraXQub3JnIiBmb3JLZXk6TlNIVFRQQ29va2ll
RG9tYWluXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIvcGF0aCIgZm9yS2V5
Ok5TSFRUUENvb2tpZVBhdGhdOwotICAgIFJldGFpblB0cjxOU051bWJlcj4gY3JlYXRpb25UaW1l
ID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MTAwMDAwXTsKKyAgICBSZXRhaW5QdHI8TlNO
dW1iZXI+IGNyZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJvcGVydGllcyBz
ZXRPYmplY3Q6Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsKICAgICBSZXRh
aW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9w
ZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IDli
YjM2ZDRhZmExNzVmMGUxMjNjMWNhZjVlNzkwN2FhZjZmMjc4ZmYuLmI5NThmM2IyM2QwYmFjOTM5
ZWUwZThjYjA1MzY4ZmQ1ZTdkOTM3NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC0yMDEs
NyArMjAxLDcgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJlbW92ZU5vblBlcnNpc3RlbnRD
cmVkZW50aWFscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAg
ZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltO
U1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSBmb3JEYXRh
UmVjb3JkczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZXhwZWN0ZWRSZWNvcmQuZ2V0KCldIGNv
bXBsZXRpb25IYW5kbGVyOl4odm9pZCkgeworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRp
YWxzXSBmb3JEYXRhUmVjb3JkczpAW2V4cGVjdGVkUmVjb3JkLmdldCgpXSBjb21wbGV0aW9uSGFu
ZGxlcjpeKHZvaWQpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0KaW5kZXggMTNhM2U5OGViYWJiZGZlZWFhMjRkZDg4NjEzOGNkZTczMWJmNmI4NC4u
YzkwZWExY2IyYTI4ZWNiZWZmYWUyM2VkZTVhZDY5ZTM1ZThlODUyMyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdh
cm1pbmcgc2hvdWxkRQogICAgICAgICBFWFBFQ1RfRVEoW3JlY29yZHMgY291bnRdLCAodW5zaWdu
ZWQgbG9uZykzKTsKICAgICAgICAgZm9yIChpZCByZWNvcmQgaW4gcmVjb3JkcykgewogICAgICAg
ICAgICAgaWYgKFtbcmVjb3JkIGRpc3BsYXlOYW1lXSBpc0VxdWFsOiBAImFwcGxlLmNvbSJdKSB7
Ci0gICAgICAgICAgICAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQo
KSBmb3JEYXRhUmVjb3JkczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cmVjb3JkXSBjb21wbGV0
aW9uSGFuZGxlcjpeKCkgeworICAgICAgICAgICAgICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9m
VHlwZXM6dHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6QFtyZWNvcmRdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZnJhbWVJREJQYXRoLmdldCgpLnBhdGhdKTsK
ICAgICAgICAgICAgICAgICB9XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbQppbmRleCAxMDZhMjVhYTc0YjliNzFkN2FiNmU4MTdk
MGNjNTk0MTAwNTNiNDhlLi40YjI5ZTc5ZGI3ZDg3NjNlMGJhZDFlNmIzYmEyMjlhZWY3MWIzYmUy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFz
dGVVUkwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBh
c3RlVVJMLm1tCkBAIC0zNyw3ICszNyw3IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBXZWJWaWV3Q2Fu
UGFzdGVVUkwpCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF07CiAgICAgW3dl
YlZpZXcgc2V0RWRpdGFibGU6WUVTXTsKIAotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0
ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TVVJMUGJvYXJk
VHlwZV0gb3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
ZGVjbGFyZVR5cGVzOkBbTlNVUkxQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAgIFtbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iXSB3cml0ZVRvUGFzdGVib2Fy
ZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CiAgICAgW3dlYlZpZXcgcGFzdGU6
bmlsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmll
d0NhblBhc3RlWmVyb1BuZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZp
ZXdDYW5QYXN0ZVplcm9QbmcubW0KaW5kZXggNThlMDdjMTQwZWVmY2FiNDViOGUyZGU3M2M4MGRm
NzFlZGVmYjA4Ni4uZmEyZTJhYTk2N2FiYTIzMWE3NzA3MGQyYzE3MGExOGViMWJkZjhhMiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVy
b1BuZy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFz
dGVaZXJvUG5nLm1tCkBAIC0zOCw3ICszOCw3IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBXZWJWaWV3
Q2FuUGFzdGVaZXJvUG5nKQogICAgIFt3ZWJWaWV3IHNldEVkaXRhYmxlOllFU107CiAgICAgCiAg
ICAgLy9wYXN0aW5nIGEgMHgwIGltYWdlIGFzIHBkZiBib2FyZCB0eXBlLiBSZWZlcnJpbmcgdG8g
PHJkYXI6Ly9wcm9ibGVtLzExMTQxOTIwPgotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0
ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TUERGUGJvYXJk
VHlwZV0gb3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
ZGVjbGFyZVR5cGVzOkBbTlNQREZQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAgIFtbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiMCIgd2l0aEV4dGVuc2lvbjpAInBuZyIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXSB3cml0ZVRvUGFzdGVib2Fy
ZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CiAgICAgW3dlYlZpZXcgcGFzdGU6
bmlsXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dl
YlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQppbmRleCA2OWY0
NDg5ZTc3ZmEwYjY2ODY1YjFiYTY1MWE3MmM1ZTUxMTYwZTdhLi5hMGYzNDgxMzRhZTQ1NDgxZTRi
NmVlZjhlYmJiOWU4NmFlYzJmNjE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0
Lm1tCkBAIC05NCw3ICs5NCw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRlCiAgICAgfTsKIAog
ICAgIGNvbnRleHRbQCJjYWxsTWVCYWNrIl0gPSBeKEpTVmFsdWUgKmZ1bmN0aW9uVmFsdWUpIHsK
LSAgICAgICAgW2Z1bmN0aW9uVmFsdWUgY2FsbFdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXld
XTsKKyAgICAgICAgW2Z1bmN0aW9uVmFsdWUgY2FsbFdpdGhBcmd1bWVudHM6QFtdXTsKICAgICB9
OwogCiAgICAgY29udGV4dFtAImNoZWNrRm9yTXlDdXN0b21Qcm9wZXJ0eSJdID0gXihKU1ZhbHVl
ICplbGVtZW50KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9T
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQppbmRleCBjZjA4YTc0ODA5
YmUxMDFkOGViMzk0MTFmMzQyYjY1MDIzOTJlYTgxLi4wMWM3ZDI3MzYxNTY3MWJlMDA4ZjIxODhm
Y2QzYzdlMWZkMDBiNWY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWlu
SU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0KQEAgLTM3LDkg
KzM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGlmICghYXJndW1l
bnREb21haW4pCiAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XTsKICAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIEBZRVMsICAgIEAiV2ViS2l0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gQHsgQCJX
ZWJLaXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nIjogQFlFUyB9OwogCiAgICAgW2FyZ3VtZW50
RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKICAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFp
biBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCmluZGV4IDNhMzNjMmRhYmNj
MzAyMDVlYmE3M2IzZDQ4OGJhNDgwOGNmMjNmOTguLjZmNjM0ZjE3NjZjMmMxMDk4MTcyMWIwMTU0
M2VhODA3MTRkZDRkYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVj
dGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9J
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KQEAgLTM2LDE0ICszNiwxNCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0
YWJsZUNvcHldOwogICAgIGlmICghYXJndW1lbnREb21haW4pCiAgICAgICAgIGFyZ3VtZW50RG9t
YWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICAKLSAgICBOU0Rp
Y3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50ZWdl
cjo0XSwgICBAIkFwcGxlQW50aUFsaWFzaW5nVGhyZXNob2xkIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOjBdLCAgIEAiQXBwbGVGb250U21v
b3RoaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQE5PLCAgICAgQCJOU1Njcm9sbEFu
aW1hdGlvbkVuYWJsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBATk8sICAgICBAIk5T
T3ZlcmxheVNjcm9sbGVyc0VuYWJsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBAIkFs
d2F5cyIsICAgICAgICAgICAgICAgICAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKworICAgIE5TRGljdGlvbmFyeSAqZGljdCA9
IEB7CisgICAgICAgIEAiQXBwbGVBbnRpQWxpYXNpbmdUaHJlc2hvbGQiOiBAKDQpLAorICAgICAg
ICBAIkFwcGxlRm9udFNtb290aGluZyI6IEAoMCksCisgICAgICAgIEAiTlNTY3JvbGxBbmltYXRp
b25FbmFibGVkIjogQE5PLAorICAgICAgICBAIk5TT3ZlcmxheVNjcm9sbGVyc0VuYWJsZWQiOiBA
Tk8sCisgICAgICAgIEAiQXBwbGVTaG93U2Nyb2xsQmFycyI6IEAiQWx3YXlzIiwKKyAgICB9Owog
CiAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKICAg
ICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFp
bjphcmd1bWVudERvbWFpbiBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL21haW5NYWMubW0KaW5kZXggN2NhOTllNmEzYjVlNDA4MmVhZmNkOTQ3NDQ5MGFjMDk1ZmYw
ZDQzYy4uYmU3ZDg3MjY3ZWMyMjE1NDNhNTQ5ZmUyYjg4ZDFjODMyOTkyZmEyNiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9tYWluTWFjLm1tCkBAIC0zOSw5ICszOSw3IEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikKICAgICBpZiAoIWFyZ3VtZW50RG9tYWluKQogICAgICAgICBhcmd1bWVu
dERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAgICAgCi0gICAg
TlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgICBAWUVTLCAgICBAIldlYktpdExpbmtl
ZE9uT3JBZnRlckV2ZXJ5dGhpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwor
ICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IEB7IEAiV2ViS2l0TGlua2VkT25PckFmdGVyRXZlcnl0
aGluZyI6IEBZRVMgfTsKIAogICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rp
b25hcnk6ZGljdF07CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
c2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWlu
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCBhNWQ1OGVjYzE2MjA3Zjg0OWQ3
NGMyZGYxMWYzOTg2Njg5YTlmNDliLi41YjY3ODExMDEyNTEzOGQ2MmJkZGI4YjMzMzM0ZjRkMjQ1
MWYwMzUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC05MCw3ICs5MCw3IEBA
IHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFJldGFpblB0cjxOb3RpZmljYXRpb25IYW5kbGVyPiBtX2dsb2JhbE5vdGlm
aWNhdGlvbkhhbmRsZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhh
bmRsZXI7CiAjZWxpZiBVU0UoQVRLKQogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmgKaW5kZXggMDQxZjgxYmM3NmQ1MDM2YjlhOTI5ZTkwYTJjNjJl
NzExNzhiZWIzYy4uOGZjOTRmNmY1NDk0ODgzNTU1YjE0NGIxNDUwMzA2MjA0ODE2MDFlNiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBDRlR5cGVS
ZWYgUGxhdGZvcm1UZXh0TWFya2VyOwordXNpbmcgUGxhdGZvcm1UZXh0TWFya2VyID0gaWQ7CiAj
ZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJrZXI7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKaW5kZXggMThjMThkNDhlNDFjZGYwOThhYzkx
NTg4ZmY2NjMxMTA2Mjk5MTIzZi4uNzgxODJlZTkwYzRlMjc5NzU2ZmM2OTU4YTQxMmUxY2FiMjQw
ZTI2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVk
ZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOwordXNpbmcgUGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UgPSBpZDsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlOwogI2VuZGlmCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJik7
CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdGV4dE1h
cmtlclJhbmdlOwogI2Vsc2UKICAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtX3RleHRNYXJr
ZXJSYW5nZTsKICNlbmRpZgpAQCAtNjcsNCArNjcsOCBAQCBwcml2YXRlOgogaW5saW5lIGJvb2wg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIAorI2lmZGVmIF9fT0JK
Q19fCitpbmxpbmUgT3B0aW9uYWw8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+
PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4qLCBpZCByYW5nZSkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6OmNyZWF0ZShyYW5nZSkgfSB9OyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDM1ZmIzNzA3MTZiMmFjM2U5MjVlMTY3NmM1
MmUxMjJhYTgxYmI3N2YuLjE0MWRiMjBhZWI5MmE4MTg0N2U5MGQ4OGEwNTk0NDA3ZTY4YzZlYzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0zNSwxMSArMzUsOCBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19f
Ci10eXBlZGVmIGlkIFBsYXRmb3JtVUlFbGVtZW50OwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IG9i
amNfb2JqZWN0KiBQbGF0Zm9ybVVJRWxlbWVudDsKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK3VzaW5nIFBsYXRmb3JtVUlFbGVtZW50ID0gaWQ7CiAjZWxpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpICYmIFVTRShBVEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXJBdGsuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC00OSwxNCArNDYsNiBAQCB0
eXBlZGVmIEdSZWZQdHI8QXRrT2JqZWN0PiBQbGF0Zm9ybVVJRWxlbWVudDsKIHR5cGVkZWYgdm9p
ZCogUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2lm
ZGVmIF9fT0JKQ19fCi10eXBlZGVmIGlkIE5vdGlmaWNhdGlvbkhhbmRsZXI7Ci0jZWxzZQotdHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIE5vdGlmaWNhdGlvbkhhbmRsZXI7Ci0jZW5kaWYKLSNl
bmRpZgotCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCA6
IHB1YmxpYyBKU1dyYXBwYWJsZSB7CkBAIC02Niw3ICs1NSwxMyBAQCBwdWJsaWM6CiAKICAgICB+
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWQg
cGxhdGZvcm1VSUVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KKyNlbmRpZgor
I2lmICFQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVVJRWxlbWVudCBwbGF0Zm9ybVVJRWxl
bWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIEpTQ2xh
c3NSZWYgd3JhcHBlckNsYXNzKCk7CiAKICAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudChKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQmKTsKQEAgLTM1NiwxMiArMzUxLDE1IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCk7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CiAKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
CiAgICAgUGxhdGZvcm1VSUVsZW1lbnQgbV9lbGVtZW50OwotICAgIAorI2VuZGlmCisKICAgICAv
LyBBIHJldGFpbmVkLCBwbGF0Zm9ybSBzcGVjaWZpYyBvYmplY3QgdXNlZCB0byBoZWxwIG1hbmFn
ZSBub3RpZmljYXRpb25zIGZvciB0aGlzIG9iamVjdC4KICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTm90aWZpY2F0aW9uSGFuZGxlciBtX25vdGlmaWNh
dGlvbkhhbmRsZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2VsZW1lbnQ7CisgICAgUmV0YWluUHRy
PGlkPiBtX25vdGlmaWNhdGlvbkhhbmRsZXI7CiAKICAgICB2b2lkIGdldExpbmtlZFVJRWxlbWVu
dHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBn
ZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYp
OwpAQCAtMzc4LDQgKzM3Niw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAgICAgCisjaWZkZWYg
X19PQkpDX18KK2lubGluZSBPcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pios
IGlkIGVsZW1lbnQpIHsgcmV0dXJuIHsgeyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUo
ZWxlbWVudCkgfSB9OyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL0FjdGl2YXRlRm9u
dHNDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2Ev
QWN0aXZhdGVGb250c0NvY29hLm1tCmluZGV4IGQxY2Y3ZjU1MDRlZWUwYmMzMjlmMTkzZDI1NWI2
ZjJjNDQzOTJjZTEuLmRiM2MyODkzMWQwNWY1NDIwNmIxYmY1ZDUyOTgxNDg0OTk4YWEyNDAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0
aXZhdGVGb250c0NvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1w
b3J0IDxDb3JlVGV4dC9DVEZvbnRNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tTdHJpbmdD
Ri5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvT2JqQ1J1
bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFVTRShBUFBL
SVQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCmluZGV4IDFm
MTA3Y2U3OWQ3ZTQzYjhkODMwODA4ZDMxMWRmYzdhYjY4YTQwMTUuLjUzNzE4ZmU1YWJkZGViMDc2
YzJlMzNkODQxMWI2NTFjNmZkNjZmYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VySU9TLm1tCkBAIC0yOSw4ICsyOSw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBib29s
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFs
OihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbcGxhdGZvcm1U
ZXh0TWFya2VyKCkgaXNFcXVhbDpvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW0KaW5kZXggMzY0MTc1NTg1ZTk3MWU3YWFmNjcyYWFhODc5YjZkZDE3ZmE0ZGMwNi4uNTZk
MjdiNGMwZjBmNzY0NDRiYjBlYWRjOTgxOGU4YWNkNmU1NjhiZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0yNCw5ICsyNCwxMCBAQAogICovCiAKICNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlci5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
IgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlUGFn
ZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CkBAIC0zNiw2ICszNyw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAKIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlk
IGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOwogCkBAIC0x
MzcsMTMgKzEzOSw2IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY3JlYXRlRW1w
dHlKU1N0cmluZygpCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMobnVsbHB0ciwgMCkpOwogfQogCi1zdGF0aWMgdm9pZCBjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KE5TQXJyYXkqIGFycmF5LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4m
IGVsZW1lbnRWZWN0b3IpCi17Ci0gICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07
Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgZWxl
bWVudFZlY3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFthcnJheSBv
YmplY3RBdEluZGV4OmldKSk7Ci19ICAgIAotCiBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0ZSwgTlNT
dHJpbmcgKnZhbHVlKQogewogICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIoW2F0dHJpYnV0ZSBs
ZW5ndGhdKTsKQEAgLTE2MCwyMyArMTU1LDE3IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlCiAg
ICAgCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRm
b3JtVUlFbGVtZW50IGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAsIG1f
bm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAgIC8vIEZJWE1FOiBhcEB3ZWJraXQub3JnIHNh
eXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZSZXRhaW5lZC9DRlJlbGVhc2UgdG8gYmUgR0Mt
Y29tcGxpYW50IG9uIHRoZSBtYWMuCi0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQmIG90aGVyKQogICAgIDogSlNXcmFwcGFibGUoKQogICAgICwgbV9lbGVt
ZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewot
ICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoKQogewotICAgIFttX2VsZW1lbnQgcmVsZWFzZV07CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBvdGhlckVsZW1lbnQpCkBAIC0yNDMsMjYgKzIzMiwyMCBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50
IHgsIGludAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZWxlbWVu
dCk7CiB9CiAgICAgCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFy
cmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+PiYgZWxlbWVudHMpCitzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0RWxlbWVudHNUb09i
amVjdEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBhcnJheVJl
c3VsdCA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIG51bGxwdHIsIG51bGxwdHIpOwot
ICAgIEpTT2JqZWN0UmVmIGFycmF5T2JqID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFycmF5
UmVzdWx0LCBudWxscHRyKTsKLSAgICBzaXplX3QgZWxlbWVudENvdW50ID0gZWxlbWVudHMuc2l6
ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyArK2kpCi0gICAg
ICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5T2JqLCBpLCBKU09i
amVjdE1ha2UoY29udGV4dCwgZWxlbWVudHNbaV0tPndyYXBwZXJDbGFzcygpLCBlbGVtZW50c1tp
XS5nZXQoKSksIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBhcnJheVJlc3VsdDsKKyAgICBh
dXRvIGFycmF5ID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgbnVsbHB0ciwgbnVsbHB0
cik7CisgICAgYXV0byBzaXplID0gZWxlbWVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBhcnJheSwgaSwgSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLT53cmFw
cGVyQ2xhc3MoKSwgZWxlbWVudHNbaV0uZ2V0KCkpLCBudWxscHRyKTsKKyAgICByZXR1cm4gYXJy
YXk7CiB9Ci0KIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JS
YW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIFdLQnVuZGxl
RnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CiAgICAgSlNDb250ZXh0UmVmIGNvbnRl
eHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKLQogICAg
IE5TQXJyYXkgKmVsZW1lbnRzRm9yUmFuZ2UgPSBbbV9lbGVtZW50IGVsZW1lbnRzRm9yUmFuZ2U6
TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCldOwotICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+IGVsZW1lbnRzOwotICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3Io
ZWxlbWVudHNGb3JSYW5nZSwgZWxlbWVudHMpOwotICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNU
b09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKKyAgICByZXR1cm4gY29udmVydEVsZW1l
bnRzVG9PYmplY3RBcnJheShjb250ZXh0LCBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4oZWxlbWVudHNGb3JSYW5nZSkpOwogfQogCiB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVu
dCkKQEAgLTExMDAsOSArMTA4Myw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVt
b3ZlU2VsZWN0aW9uKCkKIC8vIFRleHQgbWFya2VycwogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAg
IGlkIHN0YXJ0VGV4dE1hcmtlciA9IFttX2VsZW1lbnQgbGluZVN0YXJ0TWFya2VyRm9yTWFya2Vy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgaWQgZW5kVGV4dE1h
cmtlciA9IFttX2VsZW1lbnQgbGluZUVuZE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIsIG5pbF07
CisgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JN
YXJrZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIGVuZFRleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6dGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gQFtzdGFydFRl
eHRNYXJrZXIsIGVuZFRleHRNYXJrZXJdOwogICAgIAogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9
IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFu
Z2UpOwpAQCAtMTExMCw3ICsxMDkzLDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2UKIAogUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
IHN0YXJ0LCBib29sIGZvcndhcmQpCiB7Ci0gICAgaWQgbWlzc3BlbGxpbmdSYW5nZSA9IFttX2Vs
ZW1lbnQgbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2U6KGlkKXN0YXJ0LT5wbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZSgpIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaWQgbWlzc3BlbGxpbmdSYW5nZSA9
IFttX2VsZW1lbnQgbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2U6c3RhcnQtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCkgZm9yd2FyZDpmb3J3YXJkXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKG1pc3NwZWxsaW5nUmFuZ2UpOwogfQogCkBAIC0xMTIy
LDQ3ICsxMTA1LDQ2IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFCiAKIGludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKCk7ICAgIAotICAgIHJldHVybiBbbV9lbGVtZW50IGxlbmd0aEZv
clRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gW21fZWxlbWVudCBsZW5ndGhG
b3JUZXh0TWFya2VyczpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiB9CiAKIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJl
dmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewot
ICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtl
cjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIHByZXZpb3Vz
TWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtlcjp0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpjcmVhdGUocHJldmlvdXNNYXJrZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewotICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVt
ZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFya2VyRm9yTWFya2Vy
OnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKIHsKLSAgICBpZCB0
ZXh0TWFya2VycyA9IChpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsK
LSAgICBpZiAoIXRleHRNYXJrZXJzIHx8ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFzczpbTlNB
cnJheSBjbGFzc11dKQorICAgIGlkIHRleHRNYXJrZXJzID0gbWFya2VyUmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWYgKCFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFzczpb
TlNBcnJheSBjbGFzc11dKQogICAgICAgICByZXR1cm4gY3JlYXRlRW1wdHlKU1N0cmluZygpOwog
ICAgIHJldHVybiBbW21fZWxlbWVudCBzdHJpbmdGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc10g
Y3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBlbmRNYXJrZXIpCiB7Ci0gICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChp
ZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOworICAgIE5TQXJyYXkgKnRl
eHRNYXJrZXJzID0gQFtzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIGVuZE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2Vs
ZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwog
fQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IHJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IHN0
YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnMgaXNTdGFydDpZRVNd
OwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIp
OwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSByYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBz
dGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9d
OwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIp
OwogfQpAQCAtMTE5NCw3ICsxMTc2LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgKIAogUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFy
a2VyKQogewotICAgIGlkIG9iaiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9iamVjdEZvclRl
eHRNYXJrZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIG9iaiA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXI6bWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWYgKG9iaikKICAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShvYmopOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI5
NCw3ICsxMjc2LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGMKIHsKICAgICBOU0FycmF5ICp0
ZXh0TWFya2VycyA9IG5pbDsKICAgICBpZiAoc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpICYmIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCkpCi0gICAgICAgIHRleHRNYXJr
ZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooaWQpc3RhcnRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsK
KyAgICAgICAgdGV4dE1hcmtlcnMgPSBAW3N0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KSwgZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWQgdGV4dE1hcmtlclJh
bmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2Vyczp0ZXh0TWFya2VycyB3
aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnRleHRdXTsKICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9JbmplY3RlZEJ1bmRsZUlPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCmluZGV4IDQyOTA4YmVmZWY3YTU4ZjdhZTA0
ZjA1ODA1MzE0ZTVhNDVlNGUzZWQuLmJkNzJmOTg0NWMwMTM3MGIxZmRhOGVkN2QzYmI0NzkyOWNl
YTBkYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCkBAIC0zNiwxMiArMzYsOCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBlUmVmKQogCiAgICAg
Ly8gTGFuZ3VhZ2Ugd2FzIHNldCB1cCBlYXJsaWVyIGluIG1haW4oKS4gRG9uJ3QgY2xvYmJlciBp
dC4KICAgICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnREb21haW5dIHZhbHVl
Rm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBkaWN0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKLSAgICBpZiAobGFuZ3VhZ2VzKQotICAgICAgICBbZGljdCBzZXRPYmplY3Q6bGFuZ3VhZ2Vz
IGZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07Ci0KLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjpkaWN0LmdldCgpIGZvck5hbWU6TlNB
cmd1bWVudERvbWFpbl07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gbGFuZ3VhZ2Vz
ID8gQHsgQCJBcHBsZUxhbmd1YWdlcyI6IGxhbmd1YWdlcyB9IDogQHsgfTsKKyAgICBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjpkaWN0aW9u
YXJ5IGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggY2Y3NzhjNmUxZDRhYTBh
OGM1MzQzNGM3ODgyZTY5ZjhhY2I0NmVkMS4uMzlhYWEyNGE5NzQwYThjMjMwNDZhYjhmNTMyZDk4
NzMxY2QyOTU1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCkBAIC01
NSw3ICs1NSw3IEBAIE5TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0
dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlCiAgICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rp
b25hcnldOwogICAgIAogICAgIGlmIChzdGFydEVsZW1lbnQgJiYgc3RhcnRFbGVtZW50LT5wbGF0
Zm9ybVVJRWxlbWVudCgpKQotICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmpl
Y3Q6KGlkKXN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0
RWxlbWVudCJdOworICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6c3Rh
cnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07
CiAgICAgCiAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlv
bk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JL
ZXk6QCJBWERpcmVjdGlvbiJdOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbQppbmRleCA1ZWI5NWYyMjc0MDFmODdkNmYzOWY0ZDU0OWMwZmNjODU0NmQ3
YTg3Li5iYTI4OWIxZDZjZGU3YTIyMTEzMmRhMThjMjBmOTYyOTMyZTJkMzk4IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQpAQCAtMjksOCArMjksNyBAQCBu
YW1lc3BhY2UgV1RSIHsKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3RoZXIpCiB7Ci0gICAgcmV0dXJuIFsoX19icmlkZ2Ug
aWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooX19icmlkZ2UgaWQpb3RoZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gW3BsYXRmb3JtVGV4dE1hcmtlcigpIGlzRXF1
YWw6b3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RS
Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDliNTli
ZmNlMGY0YzQ4NTViZmNkZmFlNjVkNDU5NWU0YmY2NjFjYTMuLjI3ZjBmYjVlMTgwMDlkNTU5ZDIx
NDg2ZTQ4OTM0YmEyZmFhZDc3YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDAsNyArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQorI2ltcG9y
dCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3du
c0F0dHJpYnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25z
IgpAQCAtOTIsMjcgKzkyLDE5IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY3Jl
YXRlRW1wdHlKU1N0cmluZygpCiAgICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCitBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGlkIGVsZW1lbnQpCiAgICAgOiBt
X2VsZW1lbnQoZWxlbWVudCkKLSAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAg
IC8vIEZJWE1FOiBhcEB3ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZS
ZXRhaW5lZC9DRlJlbGVhc2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCi0gICAgW21f
ZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQogICAgIDog
SlNXcmFwcGFibGUoKQogICAgICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLSAgICAsIG1f
bm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQogewotICAg
IC8vIFRoZSBub3RpZmljYXRpb24gaGFuZGxlciBzaG91bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3Zl
Tm90aWZpY2F0aW9uTGlzdGVuZXIoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVz
dC4KLSAgICBBU1NFUlQoIW1fbm90aWZpY2F0aW9uSGFuZGxlcik7Ci0gICAgW21fZWxlbWVudCBy
ZWxlYXNlXTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKQEAgLTE2NCw5ICsxNTYsOSBAQCBzdGF0
aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZm9jdXNl
ZEFjY2Vzc2liaWxpdHlPYmplYwogICAgIHJldHVybiBbdmFsdWVPYmplY3QgZGVzY3JpcHRpb25d
OwogfQogCi1zdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1lbnQoaWQgYWNjZXNzaWJp
bGl0eU9iamVjdCkKK3N0YXRpYyBOU1N0cmluZyAqYXR0cmlidXRlc09mRWxlbWVudChpZCBhY2Nl
c3NpYmlsaXR5T2JqZWN0KQogewotICAgIE5TQXJyYXkqIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBb
YWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOworICAgIE5T
QXJyYXkgKnN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlTmFtZXNdOwogCiAgICAgTlNNdXRhYmxlU3RyaW5nKiBhdHRyaWJ1dGVz
U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7CkBAIC0yMTksMTcg
KzIxMSw2IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlCiAgICAgcmV0dXJuIGFkb3B0KEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIFZlY3RvcjxUPiBjb252ZXJ0TlNBcnJh
eVRvVmVjdG9yKE5TQXJyYXkgKmFycmF5KQotewotICAgIFZlY3RvcjxUPiB2OwotICAgIE5TVUlu
dGVnZXIgY291bnQgPSBhcnJheS5jb3VudDsKLSAgICB2LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
Y291bnQpOwotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAg
ICAgIHYuYXBwZW5kKFQ6OlZhbHVlVHlwZTo6Y3JlYXRlKFthcnJheSBvYmplY3RBdEluZGV4Omld
KSk7Ci0gICAgcmV0dXJuIHY7Ci19Ci0KIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
ZGVzY3JpcHRpb25PZkVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gPiYgZWxlbWVudFZlY3RvcikKIHsKICAgICBOU011dGFibGVTdHJpbmcqIGFsbEVsZW1lbnRT
dHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CkBAIC0zMjgsMzQgKzMwOSwzNCBAQCBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICptaXNzcGVsbGluZ1NlYXJjaFBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVGb3JDcml0ZXJpYShBY2Nlc3NpYgogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFt
ZXRlcnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKIAotICAgIFtwYXJhbWV0
ZXJzIHNldE9iamVjdDooX19icmlkZ2UgaWQpc3RhcnQtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCkgZm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdOworICAgIFtwYXJhbWV0ZXJzIHNl
dE9iamVjdDpzdGFydC0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBmb3JLZXk6QCJBWFN0YXJ0
VGV4dE1hcmtlclJhbmdlIl07CiAgICAgW3BhcmFtZXRlcnMgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpmb3J3YXJkXSBmb3JLZXk6QCJBWFNlYXJjaFRleHREaXJlY3Rpb24iXTsK
IAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+JiBlbGVtZW50VmVjdG9yKQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRM
aW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBl
bGVtZW50VmVjdG9yKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJy
YXkqIGxpbmtlZEVsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0gICAgZWxlbWVu
dFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+PihsaW5rZWRFbGVtZW50cyk7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihsaW5rZWRFbGVtZW50cyk7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omdl
dERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBl
bGVtZW50VmVjdG9yKQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExp
bmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50VmVjdG9y
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGxpbmtFbGVt
ZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMaW5rVUlF
bGVtZW50cyJdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4obGlua0VsZW1lbnRzKTsKKyAgICBlbGVtZW50
VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGxpbmtF
bGVtZW50cyk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50
cykgY29uc3QKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhB
dHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+PiYgZWxlbWVudHMpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50
cyA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
Pih2YWx1ZSk7CisgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAK
QEAgLTM2Myw3ICszNDQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxk
cmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPgogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1
dGVdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRyZW4pOworICAgIGVsZW1lbnRWZWN0b3IgPSBt
YWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRyZW4pOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMzczLDcgKzM1NCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogICAgIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLT5leGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoWyZlbGVt
ZW50VmVjdG9yLCBsb2NhdGlvbiwgbGVuZ3RoLCB0aGlzXSB7CiAgICAgICAgIE5TQXJyYXkqIGNo
aWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVu
Z3RoXTsKLSAgICAgICAgZWxlbWVudFZlY3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CisgICAgICAgIGVsZW1lbnRW
ZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRy
ZW4pOwogICAgIH0pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTM4Nyw3ICsz
NjgsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoKSBj
b25zdAogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGVsZW1lbnRz
OwogICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIGVsZW1lbnRzID0g
Y29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZh
bHVlKTsKKyAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIHJldHVybiBjb252ZXJ0VmVjdG9yVG9PYmplY3RBcnJh
eTxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbnRleHQsIGVsZW1lbnRzKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CkBAIC00MDEsNyArMzgyLDcgQEAgSlNWYWx1ZVJl
ZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKCkgY29uc3QKICAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiBlbGVtZW50czsKICAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICBlbGVtZW50cyA9IGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CisgICAg
ICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KHZhbHVlKTsKICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2JqZWN0QXJyYXk8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb250ZXh0LCBlbGVtZW50cyk7CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogfQpAQCAtNjEwLDE0ICs1OTEsMTQgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkKIAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJp
YnV0ZXMoKQogewotICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlc09mRWxlbWVu
dChtX2VsZW1lbnQpOworICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlc09mRWxl
bWVudChtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBbYXR0cmlidXRlcyBjcmVhdGVKU1N0
cmluZ1JlZl07CiB9CiAgICAgCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmlu
ZyAqdmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXSwg
bV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyAqdmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhK
U1N0cmluZ1JlZjphdHRyaWJ1dGVdXSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW3Zh
bHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC03MjksNyArNzEwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygp
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKnJvbGUgPSBk
ZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgTlNTdHJpbmcg
KnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7
CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGUiLCByb2xl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC03MzksNyArNzIwLDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUo
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiByb2xlID0g
ZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIE5TU3Ry
aW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQu
Z2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhTdWJy
b2xlIiwgcm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03NDksNyArNzMw
LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1
YnJvbGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvbGVEZXNjcmlwdGlvbigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
TlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRl
XSwgbV9lbGVtZW50KTsKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xl
RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlRGVzY3JpcHRpb24iLCByb2xlKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC03NTksNyArNzQwLDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlv
bigpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29t
cHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBO
U1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBUm9sZSJdLCBtX2VsZW1lbnQp
OworICAgIE5TU3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEFSSUFSb2xlIl0sIG1f
ZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIFtjb21wdXRlZFJvbGVTdHJpbmcgY3JlYXRlSlNT
dHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTc2OSw3ICs3
NTAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXSwgbV9l
bGVtZW50KTsKKyAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRy
aWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKEAiQVhUaXRsZSIsIHRpdGxlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAKQEAgLTc3OSw3ICs3NjAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGl0bGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0
dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9m
VmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBj
b25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhEZXNjcmlwdGlvbiIsIGRlc2NyaXB0aW9u
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc4OSw3ICs3NzAsNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24o
KQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVu
dGF0aW9uKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBk
ZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0sIG1fZWxl
bWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25B
dHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKEAiQVhPcmllbnRhdGlvbiIsIGRlc2NyaXB0aW9uKTsgICAgCiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03OTksNyArNzgwLDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1
ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRl
c2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50Lmdl
dCgpKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCkBAIC04MTAsNyArNzkxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0s
IG1fZWxlbWVudCk7CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1fZWxl
bWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJB
WExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApA
QCAtODIwLDcgKzgwMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1
dGVdLCBtX2VsZW1lbnQpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhl
bHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRpb24pOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICAKQEAgLTExMjksNyArMTExMCw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAog
aW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJh
bWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpp
bmRleF1dOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBm
b3JQYXJhbWV0ZXI6QChpbmRleCldOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1ZSBpbnRWYWx1
ZV07IAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExNDAsNyArMTEyMSw3IEBAIGlu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShp
bnQgbGluZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJh
bmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBu
dW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOkAobGluZSldOwogICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQogICAgICAgICByZXR1cm4gW05TU3RyaW5nRnJvbVJh
bmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKQEAgLTEyNzIsNyArMTI1Myw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VhcmNoVGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRSZWYgY29udGV4
dCwKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBzZWFyY2hUZXh0
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIHNlYXJjaFN0cmluZ3Ms
IHN0YXJ0RnJvbSwgZGlyZWN0aW9uKTsKICAgICBpZCByZXN1bHQgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VhcmNoVGV4dFdpdGhDcml0ZXJpYSIgZm9yUGFy
YW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgIGlmIChbcmVzdWx0IGlzS2luZE9m
Q2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWZWN0b3JUb09i
amVjdEFycmF5PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4oY29udGV4dCwg
Y29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4+KHJlc3VsdCkpOworICAgICAgICByZXR1cm4gY29udmVydFZlY3RvclRvT2JqZWN0QXJyYXk8
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+Pihjb250ZXh0LCBtYWtlVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPj4ocmVzdWx0KSk7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjg0LDcgKzEy
NjUsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCiAgICAgLy8gbm90IHlldCBkZWZpbmVkIGluIEFw
cEtpdC4uLiBvZGQKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBj
b2x1bW5IZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYQ29sdW1uSGVhZGVyVUlFbGVtZW50cyJdOwotICAgIGF1dG8gY29sdW1uSGVhZGVyc1Zl
Y3RvciA9IGNvbnZlcnROU0FycmF5VG9WZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+Pihjb2x1bW5IZWFkZXJzQXJyYXkpOworICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9
IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1bW5IZWFkZXJz
QXJyYXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uSGVhZGVyc1Zl
Y3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMTI5NSw3ICsxMjc2
LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIE5TQXJyYXkqIHJvd0hlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIl07Ci0gICAgYXV0byByb3dIZWFk
ZXJzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KHJvd0hlYWRlcnNBcnJheSk7CisgICAgYXV0byByb3dIZWFkZXJzVmVjdG9yID0g
bWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHJvd0hlYWRlcnNBcnJh
eSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzA2LDcgKzEyODcsNyBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mQ29sdW1ucygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJh
eSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07Ci0gICAgYXV0byBjb2x1bW5zVmVjdG9y
ID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KGNvbHVtbnNBcnJheSk7CisgICAgYXV0byBjb2x1bW5zVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVtbnNBcnJheSk7CiAgICAgcmV0dXJuIGRl
c2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCkBAIC0xMzE3LDcgKzEyOTgsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93c0FycmF5ID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0
ZV07Ci0gICAgYXV0byByb3dzVmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHJvd3NBcnJheSk7CisgICAgYXV0byByb3dzVmVjdG9y
ID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHJvd3NBcnJheSk7
CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dzVmVjdG9yKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xMzI4LDcgKzEzMDksNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJs
ZUNlbGxzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBj
ZWxsc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFZp
c2libGVDZWxscyJdOwotICAgIGF1dG8gY2VsbHNWZWN0b3IgPSBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2VsbHNBcnJheSk7CisgICAgYXV0
byBjZWxsc1ZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
PihjZWxsc0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVj
dG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCkBAIC0xNDA5LDcgKzEzOTAs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29s
dW1uSW5kZXhSYW5nZSgpCiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWdu
ZWQgcm93KQogewotICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvbF0sIFtOU051bWJlciBu
dW1iZXJXaXRoVW5zaWduZWRJbnQ6cm93XSwgbmlsXTsKKyAgICBOU0FycmF5ICpjb2xSb3dBcnJh
eSA9IEBbQChjb2wpLCBAKHJvdyldOwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRl
cjpjb2xSb3dBcnJheV0pOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCkBAIC0xNDkw
LDcgKzE0NzEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4
dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZQogYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KF9fYnJpZGdlIGlkKW1hcmtl
clJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2li
aWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5U2V0VmFsdWU6bWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0
cmlidXRlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE1NDgsNyArMTUyOSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3luY1By
ZXNzKCkKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGFycmF5ID0gZWxlbWVudCA/IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXSA6IFtOU0FycmF5IGFycmF5
XTsKKyAgICBOU0FycmF5KiBhcnJheSA9IGVsZW1lbnQgPyBAW2VsZW1lbnQtPnBsYXRmb3JtVUlF
bGVtZW50KCldIDogQFtdOwogICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFy
cmF5IGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
XTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAogfQpAQCAtMTU2MCw3ICsxNTQxLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICBOU0FycmF5ICpzZWxlY3RlZENoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07
Ci0gICAgTlNBcnJheSAqYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+
cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgTlNBcnJheSAqYXJyYXkgPSBAW2VsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCldOwogICAgIGlmIChzZWxlY3RlZENoaWxkcmVuKQogICAgICAgICBh
cnJheSA9IFtzZWxlY3RlZENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmFy
cmF5XTsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJyYXkgZm9yQXR0
cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwpAQCAtMTc2
OSw4ICsxNzUwLDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rp
b24oKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBl
UmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCld
OworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1h
cmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xNzgxLDcgKzE3NjIsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlzc3BlbGxpbmdUZXh0TWFyawog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVy
cyA9IG1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKHN0
YXJ0LCBmb3J3YXJkKTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UiIGZv
clBhcmFtZXRlcjpwYXJhbWV0ZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJS
YW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xNzkxLDcgKzE3NzIsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVs
ZW1lbnQiIGZvclBhcmFtZXRlcjplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKLSAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5
cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgwMCw3ICsxNzgxLDcgQEAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvckUKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRN
YXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKV07CisgICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIg
Zm9yUGFyYW1ldGVyOnJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKICAgICByZXR1
cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgCkBAIC0xODEwLDggKzE3OTEsOCBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqCiBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0
ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXByZXZpb3VzTWFya2VyKTsKKyAgICBpZCBwcmV2aW91c01h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91
c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHByZXZpb3VzTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODIwLDggKzE4MDEsOCBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtl
cihBY2NlcwogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0TWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0TWFya2VyKTsKKyAgICBpZCBuZXh0TWFya2Vy
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0
TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xODMwLDcgKzE4MTEsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaQogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0U3RyaW5nID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKV07CisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBh
cmFtZXRlcjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgcmV0
dXJuIFt0ZXh0U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCkBAIC0xODQwLDkgKzE4MjEsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
cwogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIHRleHRNYXJrZXJzID0gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czooX19icmlkZ2UgaWQpc3RhcnRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpLCAoX19icmlkZ2UgaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KSwgbmlsXTsKKyAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9IEBbc3RhcnRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpLCBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBp
ZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiIGZvclBhcmFtZXRl
cjp0ZXh0TWFya2Vyc107Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE4NTIsNyArMTgzMyw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2VBdHRyaWJ1dGVdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xODc3LDggKzE4NTgsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0
U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Ui
IGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRn
ZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UiIGZvclBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTg4Nyw4ICsxODY4LDggQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWEKIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6cmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRl
KHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTE4OTgsNyArMTg3OSw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUVuZFRl
eHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFrZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCldXTsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBl
UmVmKXRleHRNYXJrZXIpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE5MjQsNyArMTkwNSw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91
bmRzCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN0
YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVy
OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1d
OwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBD
RlR5cGVSZWYpdGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkzNCw3ICsxOTE1LDcgQEAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9p
bnQoaW50IHgKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJr
ZXJGb3JQb3NpdGlvbiIgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50Ok5TTWFr
ZVBvaW50KHgsIHkpXV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQzLDcgKzE5MjQsNyBAQCBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJGb3JQb2ludChpbnQgeAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJp
ZGdlIGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIHVpRWxlbWVudCA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6bWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAg
ICAgaWYgKHVpRWxlbWVudCkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZSh1aUVsZW1lbnQpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTE5NzUs
NyArMTk1Niw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhCiAgICAgTlNBdHRyaWJ1dGVkU3Ry
aW5nKiBzdHJpbmcgPSBuaWw7CiAKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBz
dHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmli
dXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZClt
YXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgc3RyaW5nID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjptYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCiAgICAgaWYgKCFb
c3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKQpAQCAtMTk5
MCw5ICsxOTcxLDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmEKIAogICAgIGlkIHBhcmFtZXRl
ciA9IG5pbDsKICAgICBpZiAoaW5jbHVkZVNwZWxsQ2hlY2spCi0gICAgICAgIHBhcmFtZXRlciA9
IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6aW5jbHVkZVNwZWxsQ2hlY2tdLCBAIkFYU3BlbGxDaGVjayIsIChfX2JyaWRn
ZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSwgQCJBWFRleHRNYXJr
ZXJSYW5nZSIsIG5pbF07CisgICAgICAgIHBhcmFtZXRlciA9IEB7IEAiQVhTcGVsbENoZWNrIjog
aW5jbHVkZVNwZWxsQ2hlY2sgPyBAWUVTIDogQE5PLCBAIkFYVGV4dE1hcmtlclJhbmdlIjogbWFy
a2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgfTsKICAgICBlbHNlCi0gICAgICAg
IHBhcmFtZXRlciA9IChfX2JyaWRnZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVyID0gbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKCk7CiAKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBzdHJpbmcg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25zIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVy
XTsKQEAgLTIwMDcsNyArMTk4OCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhCiBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VD
b250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBh
cmFtZXRlcjooX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwor
ICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZv
clBhcmFtZXRlcjpyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CiAgICAgaWYgKCFb
c3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0yMDIyLDcgKzIwMDMsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWlu
c0F0dHJpYnV0ZQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJbmRleEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRl
cjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgTlNOdW1i
ZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOm1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwogICAgIHJldHVybiBbaW5kZXhOdW1iZXIgaW50VmFsdWVdOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTIwMzIsNyArMjAxMyw3IEBAIGludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIG1hcmtlcikKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFs
aWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlkIiBmb3JQYXJh
bWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAg
ICBOU051bWJlciogdmFsaWROdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYVGV4dE1hcmtlcklzVmFsaWQiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIFt2YWxpZE51bWJlciBib29sVmFsdWVd
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKQEAgLTIwNDMsNyArMjAyNCw3IEBA
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlckZvckluZGV4KGludCB0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhUZXh0TWFya2VyRm9ySW5kZXgiIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludGVnZXI6dGV4dEluZGV4XV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDUzLDcgKzIw
MzQsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXIpOworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNjMsNyAr
MjA0NCw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhFbmRUZXh0TWFya2VyIl07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDcyLDggKzIw
NTMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0
ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDgyLDggKzIwNjMs
OCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpOwor
ICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDky
LDggKzIwNzMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlcgogUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzV29yZFN0
YXJ0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBy
ZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooX19i
cmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRlR5cGVSZWYpcHJldmlv
dXNXb3JkU3RhcnRNYXJrZXIpOworICAgIGlkIHByZXZpb3VzV29yZFN0YXJ0TWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzV29yZFN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUocHJldmlvdXNXb3JkU3RhcnRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMDIsOCArMjA4Myw4IEBAIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNX
b3JkU3RhcnRUZXh0TWFyCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgbmV4dFdvcmRFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIg
Zm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdl
IENGVHlwZVJlZiluZXh0V29yZEVuZE1hcmtlcik7CisgICAgaWQgbmV4dFdvcmRFbmRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFdvcmRFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0
ZShuZXh0V29yZEVuZE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjExMiw4ICsyMDkzLDggQEAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVuZFRleHRN
YXJrZXJGb3IKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
IiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChf
X2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFu
Z2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBo
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEyMiw4ICsyMTAzLDggQEAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBh
cmFncmFwaFRleHRNYXJrZXIKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNQYXJh
Z3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdl
IGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXByZXZpb3VzUGFy
YWdyYXBoU3RhcnRNYXJrZXIpOworICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNQYXJh
Z3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMzIsOCArMjEx
Myw4IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRlCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2Vy
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRQYXJhZ3Jh
cGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0UGFyYWdyYXBoRW5k
TWFya2VyKTsKKyAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0UGFyYWdy
YXBoRW5kTWFya2VyKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yMTQyLDggKzIxMjMsOCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFy
awogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBD
RlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2VudGVuY2VUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVh
dGUodGV4dE1hcmtlclJhbmdlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTUyLDggKzIxMzMsOCBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0
TWFya2VyUgogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICBpZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXByZXZpb3VzUGFyYWdyYXBoU3RhcnRN
YXJrZXIpOworICAgIGlkIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUo
cHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE2Miw4ICsyMTQzLDggQEAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91
c1NlbnRlbmNlU3RhcnRUZXgKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgaWQgbmV4dFBhcmFncmFwaEVuZE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUoKF9fYnJpZGdlIENGVHlwZVJlZiluZXh0UGFyYWdyYXBoRW5kTWFya2VyKTsKKyAgICBp
ZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRQYXJhZ3JhcGhFbmRNYXJrZXIpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggY2JkMTQ2OWI5Mjg4
ZWM2NGVkNmM2YTU3YzEzZmI2N2JmNWY3MGI5NC4uNjFjZGYwZWMxNGE3ZWM4Nzc1MzExMzI1M2Vl
NWI3NjkzYThlMTc1NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEhhc0hh
ZFVzZXJJbnRlcmFjdGlvbigpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwKTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQordm9pZCBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucykKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzIikpOwogICAgIApAQCAtMjAwNSw3ICsyMDA1LDcgQEAg
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucykKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAotdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmIHdlYlZpZXdDYXRlZ29y
eSkKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5n
JiYgd2ViVmlld0NhdGVnb3J5KQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRS
ZWNlaXZlV2ViVmlld0NhdGVnb3J5IikpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCmluZGV4IGU4NGY1ZWI3NDlhMjQwMmJiOTg1YTAxNjM2NGM4MWE2NjI5ZDli
YjYuLmM3YTk1NjQzNDQ2MzI5NGIxNTVjNWMwNTAwMjRkZWY0N2ZjYjcxZjUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRlc3RJbnZvY2F0aW9u
X2gKLSNkZWZpbmUgVGVzdEludm9jYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJK
U1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCkBAIC01MywxNyArNTIsMTcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJc1BpeGVsVGVzdChjb25zdCBzdGQ6OnN0cmluZyYg
ZXhwZWN0ZWRQaXhlbEhhc2gpOwogCi0gICAgdm9pZCBzZXRDdXN0b21UaW1lb3V0KFdURjo6U2Vj
b25kcyBkdXJhdGlvbikgeyBtX3RpbWVvdXQgPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0Q3Vz
dG9tVGltZW91dChTZWNvbmRzIGR1cmF0aW9uKSB7IG1fdGltZW91dCA9IGR1cmF0aW9uOyB9CiAg
ICAgdm9pZCBzZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoYm9vbCB2YWx1ZSkgeyBtX2R1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciA9IHZhbHVlOyB9CiAKLSAgICBXVEY6OlNlY29uZHMgc2hvcnRU
aW1lb3V0KCkgY29uc3Q7CisgICAgU2Vjb25kcyBzaG9ydFRpbWVvdXQoKSBjb25zdDsKIAogICAg
IHZvaWQgaW52b2tlKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKICAg
ICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSk7CiAKICAgICBzdGF0aWMgdm9pZCBkdW1wV2ViUHJvY2Vzc1VucmVzcG9uc2l2ZW5lc3Mo
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIG91dHB1dFRleHQoY29uc3QgV1RG
OjpTdHJpbmcmKTsKKyAgICB2b2lkIG91dHB1dFRleHQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
b2lkIGRpZEJlZ2luU3dpcGUoKTsKICAgICB2b2lkIHdpbGxFbmRTd2lwZSgpOwpAQCAtODcsOSAr
ODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRQcmV2YWxlbnRSZXNvdXJjZSgpOwogICAg
IHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBkaWRTZXRIYXNI
YWRVc2VySW50ZXJhY3Rpb24oKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNz
RW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRSZWNlaXZlQWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFp
bnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJiYpOwogICAgIHZvaWQgZGlkU2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vz
c2lvbkNyZWRlbnRpYWxzKCk7CkBAIC0xMzgsMTIgKzEzNywxMiBAQCBwcml2YXRlOgogICAgIGNv
bnN0IFRlc3RPcHRpb25zIG1fb3B0aW9uczsKICAgICAKICAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gbV91cmw7Ci0gICAgV1RGOjpTdHJpbmcgbV91cmxTdHJpbmc7CisgICAgU3RyaW5nIG1fdXJs
U3RyaW5nOwogICAgIFJ1bkxvb3A6OlRpbWVyPFRlc3RJbnZvY2F0aW9uPiBtX3dhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyOwogCiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsKIAot
ICAgIFdURjo6U2Vjb25kcyBtX3RpbWVvdXQ7CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CiAgICAg
Ym9vbCBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07CiAKICAgICAvLyBJbnZv
Y2F0aW9uIHN0YXRlCkBAIC0xNzMsNSArMTcyLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gVGVzdEludm9jYXRpb25faApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDU0OGZl
NzMxMzA2NjQ2OGYyZGFhNzZjMjE1MDBlMGEyYTQwODQxYmYuLjZmMzI5ZTc1Yjk3MTdmMzBjYzg3
YWM5Y2ZjMzFjZmM5NjgzYWYwMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTUyLDYgKzUyLDcgQEAKICNpbXBvcnQg
PFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0
Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC0xMDEsMTAg
KzEwMiw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciA9IFN0cmluZyhkdW1wUmVu
ZGVyVHJlZVRlbXApICsgJy8nICsgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiOwogICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOnJlc291cmNl
TG9hZFN0YXRpc3RpY3NGb2xkZXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjogbmlsXTsKICAgICBTdHJpbmcgZnVsbEJyb3dzaW5nU2Vzc2lvblJl
c291cmNlTG9nID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciArICcvJyArICJmdWxsX2Jy
b3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiOwotICAgIE5TRGljdGlvbmFyeSAqcmVz
b3VyY2VMb2dQbGlzdCA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRL
ZXlzOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSwgQCJ2ZXJzaW9uIiwgbmlsXTsKKyAgICBO
U0RpY3Rpb25hcnkgKnJlc291cmNlTG9nUGxpc3QgPSBAeyBAInZlcnNpb24iOiBAKDEpIH07CiAg
ICAgaWYgKCFbcmVzb3VyY2VMb2dQbGlzdCB3cml0ZVRvRmlsZTpmdWxsQnJvd3NpbmdTZXNzaW9u
UmVzb3VyY2VMb2cgYXRvbWljYWxseTpZRVNdKQogICAgICAgICBXVEZDcmFzaCgpOwotICAgIFty
ZXNvdXJjZUxvZ1BsaXN0IHJlbGVhc2VdOwogfQogCiBXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtQ29udGV4dCgpCkBAIC0zMzIsMTIgKzMzMiw4IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKICAgICBpZiAoIXBhcmVudFZpZXcp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjpwYXJlbnRWaWV3LT5w
bGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5z
RG9tYWlucykgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwotICAgICAgICBkb21h
aW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNvdW50KTsKLSAgICAgICAgZm9y
IChOU1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQotICAgICAgICAgICAgZG9tYWlucy51bmNo
ZWNrZWRBcHBlbmQoZG9tYWluKTsKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVj
ZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKGRvbWFpbnMpOworICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmll
c0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+
ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1ha2VWZWN0b3I8U3RyaW5nPihkb21h
aW5zKSk7CiAgICAgfV07CiB9CiAKQEAgLTM0NywxMiArMzQzLDggQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogICAgIGlmICghcGFyZW50VmlldykKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0
Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5zRG9t
YWlucykgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwotICAgICAgICBkb21haW5z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNvdW50KTsKLSAgICAgICAgZm9yIChO
U1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQotICAgICAgICAgICAgZG9tYWlucy51bmNoZWNr
ZWRBcHBlbmQoZG9tYWluKTsKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2
ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9t
YWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+ZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPihk
b21haW5zKSk7CiAgICAgfV07CiB9CiAKQEAgLTM4Nyw3ICszNzksNyBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoKQogICAgICAgICAgICAgY2F0ZWdvcnkgPSAiV2Vi
QnJvd3NlciI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KGNhdGVnb3J5KTsKKyAgICAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShXVEZNb3Zl
KGNhdGVnb3J5KSk7CiAgICAgfV07CiB9CiAKQEAgLTQ5NCwxMCArNDg2LDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGRpc21pc3Nlc0EKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFsbG93ZWRNZW51QWN0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWN0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGF1dG8gYWN0aW9uTmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNT
dHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YWN0aW9ucy5zaXplKCldKTsKLSAgICBm
b3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnMpCi0gICAgICAgIFthY3Rpb25OYW1lcyBhZGRPYmpl
Y3Q6YWN0aW9uXTsKLSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgc2V0QWxsb3dl
ZE1lbnVBY3Rpb25zOmFjdGlvbk5hbWVzLmdldCgpXTsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxh
dGZvcm1WaWV3KCkgc2V0QWxsb3dlZE1lbnVBY3Rpb25zOmNyZWF0ZU5TQXJyYXkoYWN0aW9ucyku
Z2V0KCldOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYWN0aW9ucyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggYmMz
YjYzNWU3YWEwYjYyYTMzODlmN2M3ZDJmZGVhMDRiNGFkOTg1Zi4uZTI5ODM4YmE4MjhmYjRiZDkw
ODU3YWI2YmVmMmZkNDY1OWZiNDIxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTEwNDQsNyArMTA0NCw3IEBAIC0gKE5TQXJyYXkg
KilpbnRlcnBvbGF0ZWRFdmVudHM6KE5TRGljdGlvbmFyeSAqKWludGVycG9sYXRpb25zRGljdGlv
bmFyeQogICAgIHdoaWxlICh0aW1lIDwgZW5kVGltZSkgewogICAgICAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpuZXdFdmVudCA9IFtlbmRFdmVudCBtdXRhYmxlQ29weV07CiAgICAgICAgIGRvdWJs
ZSB0aW1lUmF0aW8gPSAodGltZSAtIHN0YXJ0VGltZSkgLyAoZW5kVGltZSAtIHN0YXJ0VGltZSk7
Ci0gICAgICAgIG5ld0V2ZW50W0hJREV2ZW50VGltZU9mZnNldEtleV0gPSBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZToodGltZSldOworICAgICAgICBuZXdFdmVudFtISURFdmVudFRpbWVPZmZz
ZXRLZXldID0gQCh0aW1lKTsKICAgICAgICAgCiAgICAgICAgIE5TRW51bWVyYXRvciAqc3RhcnRF
bnVtZXJhdG9yID0gW3N0YXJ0VG91Y2hlcyBvYmplY3RFbnVtZXJhdG9yXTsKICAgICAgICAgTlNE
aWN0aW9uYXJ5ICpzdGFydFRvdWNoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
UGxhdGZvcm1XZWJWaWV3TWFjLm1tCmluZGV4IDVlMzNmMWY1NjM4ODM2YmZiNmY2MDY0OGIxMDc5
ODg1YTQ2ODRmMjEuLjY0MTc4MmNhOTdlMWRhZmI5MDA5MTlkYjE5YjM0NzRhNTU0Mzg4ZTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
QEAgLTIyMywxMCArMjIzLDEwIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpjaGFuZ2VXaW5kb3dT
Y2FsZUlmTmVlZGVkKGZsb2F0IG5ld1NjYWxlKQogCiAgICAgLy8gSW5zdGVhZCBvZiByZS1jb25z
dHJ1Y3RpbmcgdGhlIGN1cnJlbnQgd2luZG93LCBsZXQncyBmYWtlIHJlc2l6ZSBpdCB0byBlbnN1
cmUgdGhhdCB0aGUgc2NhbGUgY2hhbmdlIGdldHMgcGlja2VkIHVwLgogICAgIGZvcmNlV2luZG93
RnJhbWVzQ2hhbmdlZCgpOworCiAgICAgLy8gQ2hhbmdpbmcgdGhlIHNjYWxpbmcgZmFjdG9yIG9u
IHRoZSB3aW5kb3cgZG9lcyBub3QgdHJpZ2dlciBOU1dpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9w
ZXJ0aWVzTm90aWZpY2F0aW9uLiBXZSBuZWVkIHRvIHNlbmQgdGhlIG5vdGlmaWNhdGlvbiBtYW51
YWxseS4KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbm90aWZpY2F0aW9uVXNl
ckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eToxXSk7Ci0gICAgW25vdGlmaWNhdGlvblVzZXJJbmZvIHNldE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTpjdXJyZW50U2NhbGVdIGZvcktleTpOU0JhY2tpbmdQcm9wZXJ0eU9s
ZFNjYWxlRmFjdG9yS2V5XTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOk5TV2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRp
ZXNOb3RpZmljYXRpb24gb2JqZWN0Om1fd2luZG93IHVzZXJJbmZvOm5vdGlmaWNhdGlvblVzZXJJ
bmZvLmdldCgpXTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsgTlNCYWNraW5nUHJv
cGVydHlPbGRTY2FsZUZhY3RvcktleTogQChjdXJyZW50U2NhbGUpIH07CisgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpOU1dpbmRv
d0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzTm90aWZpY2F0aW9uIG9iamVjdDptX3dpbmRvdyB1
c2VySW5mbzp1c2VySW5mb107CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb3JjZVdpbmRv
d0ZyYW1lc0NoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29u
dHJvbGxlck1hYy5tbQppbmRleCA4YzU5NTU1MTYxN2ZlMDM5NWFhZTQ3Nzk3NmI5N2Y0OGZmZTY5
ZmI2Li40OThlMzcyZjIwNDM0MzBlY2I5ZTdlMjg5M2UwNDM2ZGU2ZWE1NjA5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtNDQsNyAr
NDQsNiBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5o
PgogCiBAaW50ZXJmYWNlIE5TU291bmQgKCkKICsgKHZvaWQpX3NldEFsZXJ0VHlwZTooTlNVSW50
ZWdlcilhbGVydFR5cGU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9V
SVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggYTQ0Y2ZkMGMxOGQ1ODRiZDQ5NTIyYTFmNDhiZGRj
NTQzY2E5NjhjOC4uZTk1NmVlZDkyYTBhNTg3ODM2NmVjNTMwMDk3MjI0MTY5ODg1Njc5YyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjphY3Rp
dmF0ZUF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIHsKICAgICBO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7
Ci0gICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xh
cmVUeXBlczpAW05TUGFzdGVib2FyZFR5cGVTdHJpbmddIG93bmVyOm5pbF07CiAgICAgW3Bhc3Rl
Ym9hcmQgc2V0U3RyaW5nOnRleHQtPnN0cmluZygpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0
cmluZ107CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktp
dFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2Vi
S2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KaW5kZXggMWI2Mjg2Y2Y5MzEyM2ViZjkwMTNjNjEy
NjJhMTY2MmI2ZDk5MGVjMS4uMGQzMDRmYzI4NGEyODgzY2ZkMGY3MmUyZjk2NjA1MGNmMjVlZGIw
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5l
clBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVz
dFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTgyLDcgKzgyLDcgQEAgKyAodm9pZClyZWxlYXNlTG9j
YWxQYXN0ZWJvYXJkcwogLy8gb2YgdGhlIHVzdWFsIFdlYlNjcmlwdE9iamVjdCB0aGF0IGlzIHBh
c3NlZCBhcm91bmQKIC0gKE5TSW50ZWdlcilkZWNsYXJlVHlwZTooTlNTdHJpbmcgKil0eXBlIG93
bmVyOihpZCluZXdPd25lcgogewotICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5ld093bmVyXTsKKyAgICByZXR1cm4gW3Nl
bGYgZGVjbGFyZVR5cGVzOkBbdHlwZV0gb3duZXI6bmV3T3duZXJdOwogfQogCiBAZW5kCg==
</data>
<flag name="review"
          id="411325"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>