<?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>239585</bug_id>
          
          <creation_ts>2022-04-20 21:06:58 -0700</creation_ts>
          <short_desc>Move global AtomStrings to a common header to promote reuse</short_desc>
          <delta_ts>2022-04-22 21:23:15 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=239530</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1863193</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-20 21:06:58 -0700</bug_when>
    <thetext>Move global AtomStrings to a common header to promote reuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863197</commentid>
    <comment_count>1</comment_count>
      <attachid>458035</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-20 21:15:26 -0700</bug_when>
    <thetext>Created attachment 458035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863200</commentid>
    <comment_count>2</comment_count>
      <attachid>458038</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-20 21:25:52 -0700</bug_when>
    <thetext>Created attachment 458038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863298</commentid>
    <comment_count>3</comment_count>
      <attachid>458063</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-21 08:24:34 -0700</bug_when>
    <thetext>Created attachment 458063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863302</commentid>
    <comment_count>4</comment_count>
      <attachid>458065</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-21 08:38:35 -0700</bug_when>
    <thetext>Created attachment 458065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863340</commentid>
    <comment_count>5</comment_count>
      <attachid>458075</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-21 10:37:11 -0700</bug_when>
    <thetext>Created attachment 458075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863429</commentid>
    <comment_count>6</comment_count>
      <attachid>458097</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-21 15:16:48 -0700</bug_when>
    <thetext>Created attachment 458097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863473</commentid>
    <comment_count>7</comment_count>
      <attachid>458103</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-21 16:57:21 -0700</bug_when>
    <thetext>Created attachment 458103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863707</commentid>
    <comment_count>8</comment_count>
      <attachid>458103</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-22 10:54:10 -0700</bug_when>
    <thetext>Comment on attachment 458103
Patch

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

r=me

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:322
&gt; +    WebCore::initializeCommonAtomStrings();

As a reluctant expert in JSC::initialize(), WTF::initialize(), and WTF::initializeMainThread(), I am saddened to see yet another &quot;make sure to call this initialization function at various entrypoints otherwise you will crash&quot;. Can we fold common atom string initialization into  some other initialization function? Maybe just fold it into AtomString::init()?

In the ideal world, the set of top-level initialization functions should shrink over time. Maybe we can even get down to just two, one for WebKit and one for JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863709</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-22 10:56:24 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; Comment on attachment 458103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458103&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:322
&gt; &gt; +    WebCore::initializeCommonAtomStrings();
&gt; 
&gt; As a reluctant expert in JSC::initialize(), WTF::initialize(), and
&gt; WTF::initializeMainThread(), I am saddened to see yet another &quot;make sure to
&gt; call this initialization function at various entrypoints otherwise you will
&gt; crash&quot;. Can we fold common atom string initialization into  some other
&gt; initialization function? Maybe just fold it into AtomString::init()?

AtomString::init() is in WTF/. How could it do initialization for WebCore/?

I agree with the sentiment but not sure how to address it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863710</commentid>
    <comment_count>10</comment_count>
      <attachid>458103</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-22 10:58:48 -0700</bug_when>
    <thetext>Comment on attachment 458103
Patch

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

&gt; Source/WebCore/contentextensions/ContentExtensionParser.cpp:208
&gt;      AtomString::init();
&gt; +    initializeCommonAtomStrings();

Seems like we could make this more foolproof by having one function that calls both AtomString::init and WebCore::initializeCommonAtomStrings instead of having both calls in each place. Could be as simple as having initializeCommonAtomStrings call AtomString::init.

&gt; Source/WebCore/html/HTMLFormElement.cpp:1016
&gt; +    return equalIgnoringASCIICase(attributeWithoutSynchronization(autocompleteAttr), &quot;off&quot;) ? offAtom() : onAtom();

This can use equalLettersIgnoringASCIICase for slightly better performance.

&gt; Source/WebCore/platform/CommonAtomStrings.cpp:60
&gt; +    static std::once_flag initializeKey;
&gt; +    std::call_once(initializeKey, [] {
&gt; +        // Initialization is not thread safe, so this function must be called from the main thread first.
&gt; +        ASSERT(isUIThread());

Use of std::call_once is a *little* confusing, since the AtomString table can only be used on one thread. I assume it’s specific to the iOS legacy &quot;web thread&quot; machinery; the comment doesn’t make that entirely clear.

If it wasn&apos;t iOS, presumably we would not need the thread safety from std::call_once and could just assert isMainThread. Might even be nice to write it that way if there was a clean way to do so.

I suggest moving the assertion out of the call_once, because we don’t want anyone to write code that calls initializeCommonAtomStrings on something that is not a UI thread, even if a particular call site happens to not to be the first caller at *this* time.

&gt; Source/WebCore/platform/CommonAtomStrings.h:33
&gt; +extern MainThreadLazyNeverDestroyed&lt;const AtomString&gt; alternativeAtomData;

I find it annoying to have these list repeated 4 times. Even if we use macros to achieve that, would be nice not to repeat the names 4 times, along with the strings.

&gt; Source/WebCore/platform/CommonAtomStrings.h:81
&gt; +WEBCORE_EXPORT void initializeCommonAtomStrings();

Is it a good tradeoff to always initialize all of these? Eventually as the list gets long that might not be so great, instead of lazy initialization do it all up front, and have them all in the AtomString table. This has given me pause in past when creating things like EventNames.h.

&gt; Source/WebCore/svg/SVGAnimationElement.cpp:322
&gt; +static const AtomString&amp; sumAtom()

You decided to factor this out, but not move it into CommonAtomStrings.h?

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:71
&gt; +static const AtomString&amp; indefiniteAtom()

Same pattern here too. But it’s not mentioned in the change log. Not sure how you decided when to do which.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863715</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-22 11:04:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 458103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458103&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/contentextensions/ContentExtensionParser.cpp:208
&gt; &gt;      AtomString::init();
&gt; &gt; +    initializeCommonAtomStrings();
&gt; 
&gt; Seems like we could make this more foolproof by having one function that
&gt; calls both AtomString::init and WebCore::initializeCommonAtomStrings instead
&gt; of having both calls in each place. Could be as simple as having
&gt; initializeCommonAtomStrings call AtomString::init.

Good idea.

&gt; &gt; Source/WebCore/html/HTMLFormElement.cpp:1016
&gt; &gt; +    return equalIgnoringASCIICase(attributeWithoutSynchronization(autocompleteAttr), &quot;off&quot;) ? offAtom() : onAtom();
&gt; 
&gt; This can use equalLettersIgnoringASCIICase for slightly better performance.
&gt; 

Ok.

&gt; &gt; Source/WebCore/platform/CommonAtomStrings.cpp:60
&gt; &gt; +    static std::once_flag initializeKey;
&gt; &gt; +    std::call_once(initializeKey, [] {
&gt; &gt; +        // Initialization is not thread safe, so this function must be called from the main thread first.
&gt; &gt; +        ASSERT(isUIThread());
&gt; 
&gt; Use of std::call_once is a *little* confusing, since the AtomString table
&gt; can only be used on one thread. I assume it’s specific to the iOS legacy
&gt; &quot;web thread&quot; machinery; the comment doesn’t make that entirely clear.
&gt; 
&gt; If it wasn&apos;t iOS, presumably we would not need the thread safety from
&gt; std::call_once and could just assert isMainThread. Might even be nice to
&gt; write it that way if there was a clean way to do so.
&gt; I suggest moving the assertion out of the call_once, because we don’t want
&gt; anyone to write code that calls initializeCommonAtomStrings on something
&gt; that is not a UI thread, even if a particular call site happens to not to be
&gt; the first caller at *this* time.

I was just copying the pattern in AtomString.

&gt; &gt; Source/WebCore/platform/CommonAtomStrings.h:33
&gt; &gt; +extern MainThreadLazyNeverDestroyed&lt;const AtomString&gt; alternativeAtomData;
&gt; 
&gt; I find it annoying to have these list repeated 4 times. Even if we use
&gt; macros to achieve that, would be nice not to repeat the names 4 times, along
&gt; with the strings.
&gt; 
&gt; &gt; Source/WebCore/platform/CommonAtomStrings.h:81
&gt; &gt; +WEBCORE_EXPORT void initializeCommonAtomStrings();
&gt; 
&gt; Is it a good tradeoff to always initialize all of these? Eventually as the
&gt; list gets long that might not be so great, instead of lazy initialization do
&gt; it all up front, and have them all in the AtomString table. This has given
&gt; me pause in past when creating things like EventNames.h.

So maybe instead of an upfront initialization, I can move to functions with an out of line body that has a:
MainThreadNeverDestroyed&lt;const AtomString&gt; alternativeAtomData(&quot;alternative&quot;_s);

Then there wouldn&apos;t be any regression compared to existing code, would there?

&gt; &gt; Source/WebCore/svg/SVGAnimationElement.cpp:322
&gt; &gt; +static const AtomString&amp; sumAtom()
&gt; 
&gt; You decided to factor this out, but not move it into CommonAtomStrings.h?
&gt; 
&gt; &gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:71
&gt; &gt; +static const AtomString&amp; indefiniteAtom()
&gt; 
&gt; Same pattern here too. But it’s not mentioned in the change log. Not sure
&gt; how you decided when to do which.

I could. I didn&apos;t do it because the callers were all in the same cpp so they just needed to be file global, not project global.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863720</commentid>
    <comment_count>12</comment_count>
      <attachid>458103</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-22 11:17:59 -0700</bug_when>
    <thetext>Comment on attachment 458103
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/CommonAtomStrings.h:33
&gt;&gt;&gt; +extern MainThreadLazyNeverDestroyed&lt;const AtomString&gt; alternativeAtomData;
&gt;&gt; 
&gt;&gt; I find it annoying to have these list repeated 4 times. Even if we use macros to achieve that, would be nice not to repeat the names 4 times, along with the strings.
&gt; 
&gt; So maybe instead of an upfront initialization, I can move to functions with an out of line body that has a:
&gt; MainThreadNeverDestroyed&lt;const AtomString&gt; alternativeAtomData(&quot;alternative&quot;_s);
&gt; 
&gt; Then there wouldn&apos;t be any regression compared to existing code, would there?

Probably don’t need to make a change.

It’s a tradeoff. Paying for a function call and a check if it’s already initialized each time the string is used vs. using speed, more memory, and more space in the AtomString table at the time WebCore is initialized.

Honestly I don’t know which side of the tradeoff we fall on, but I do know it changes as we add more and more strings, especially if they aren’t all used depending on web content.

There are possible optimizations for creating them too, some of which apply only if we do them all at once. Adding many strings to the AtomString table at once could likely be optimized; if nothing else, we could size the hash table before adding all the new entries instead of possibly doing multiple rehashes during the creation process, but maybe something even better. And with either approach, we could calculate the hashes at compile time instead of runtime for these strings. Not sure which of these techniques are important enough.

It’s tempting to have something where we know that callers just fetch a global pointer and do no other work, I think that’s the kind of efficiency we have for emptyString() and emptyAtom for example, and you have that here.

Good news is that since you are using function calls at each call site, we can change it later if we decide we got it wrong, without affecting the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863826</commentid>
    <comment_count>13</comment_count>
      <attachid>458190</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-22 17:45:04 -0700</bug_when>
    <thetext>Created attachment 458190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863847</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-22 21:22:40 -0700</bug_when>
    <thetext>Committed r293285 (249910@main): &lt;https://commits.webkit.org/249910@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458190.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863848</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-22 21:23:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/92204746&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458035</attachid>
            <date>2022-04-20 21:15:26 -0700</date>
            <delta_ts>2022-04-20 21:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220420211525.patch</filename>
            <type>text/plain</type>
            <size>128689</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2NGY4MzU4ZmEwZTU1NTNjYzc2ZWU5
YzlmZDkzNDdhZjIwOGJhY2MuLjNjZDM0MDhhYzNiOWY2NDFlYTUzMDY1YTQ3NTYzYWYyZTdkMzBm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHRydWUgLyBmYWxz
ZSBBdG9tU3RyaW5ncyB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIHJldXNlIHRoZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1NjA5YjUzOTk3MWE4NzQzZGNlNzcyMjNkMmFhYTdiZWQ4ZTM3Yjg5Li45YzllZDRh
MmU2YjY5Y2NjNjIwOWQyNDkyY2RkN2EwZWI5OTBhMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjI2IEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21v
dGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkVmZmVjdDo6Z2V0VGltaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkVmZmVjdDo6dXBkYXRlVGltaW5nKToKKyAgICAgICAgKiBhbmltYXRpb24vRWZm
ZWN0VGltaW5nLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aXNWYWxp
ZENTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZGlzcGxheSBj
b25zdCk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRmVhdHVyZU5hbWVzOjppbml0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6OmRyb3BFZmZlY3QgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6Cisg
ICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9Gb250U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZhbHVl
Rm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAgKiBodG1sL0F1
dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhU
TUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVWYWx1ZUZv
ckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlG
dW5jdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVmFsaWRE
aXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OmF1dG9jb21wbGV0ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJp
bmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlbG9hZCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvSW5wdXRNb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0TW9kZU5hbWVzOjpub25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0ZWwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1v
ZGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnNlYXJj
aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFt
ZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eUltcGwpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmtpbmRLZXl3b3JkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjYXB0aW9uc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpwb3NpdGlvbkFsaWduIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZUVEN1ZTo6c2V0UG9zaXRpb25BbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRD
dWU6OnRvSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdXRvS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVmlkZW9UcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9j
dW1lbnQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUpOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjphZGRSZXNv
dXJjZVRvQXJjaGl2ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREaXNwbGF5TmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpFdmVudFNvdXJjZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICog
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6aW5pdGlhbGl6ZU5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJp
bmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsdGVybmF0aXZlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjphdXRv
QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpjYXB0aW9uc0F0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tbWVudGFyeUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y3NzQ29udGVudFR5cGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OmVhZ2VyQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjplbWFp
bEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2VBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmxhenlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om1haW5BdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6Om5vbmVBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om9mZkF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6b25BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlBdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc2V0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ym1pdEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c3Vi
dGl0bGVzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZWxBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRQbGFpbkNvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp1cmxB
dG9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0UGxhaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZVF1
aWNrTG9va0Zvck1JTUVUeXBlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphbmltYXRpb25MaXN0Q29udGFpbnNOZXdseVZhbGlk
QW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdW1BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWRkaXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlw
ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VN
b2RlVHlwZT46OmZyb21TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJUeXBlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyT3JpZW50VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+OjphdXRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
RWxlbWVudDo6dHlwZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGVmaW5pdGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50IGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bV9ub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVl
LmNwcDoKKwogMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgdHJ1ZSAvIGZhbHNlIEF0b21TdHJpbmdzIHRvIGEgY2VudHJhbCBsb2NhdGlv
biBhbmQgcmV1c2UgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDAwOGM3YTg1NGM3NDIxZDc3ODRkZjM5MWFi
MzU0ZDJjMjIxNzA3Li5kYjczMmMyMDY2YTMwZWYzZTYxYWY1YjRlMzBjYjlkZjNkZWUxOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21t
b24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZUdQVVByb2Nlc3MpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnJ1bkluaXRp
YWxpemF0aW9uQ29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisKIDIwMjItMDQtMjAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVh
c2UgYXNzZXJ0IGxvZ2dpbmcgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGEyMDc5
ZjNhYjVmNmE4ZThhODViYjUxNjk4YmYxY2U0MjdlMGQ5MzQuLjA5YmI0Mzk3ZDhkMGI4NWFkMDli
ODQ3MDNmMmI0ZDhkNTcwMTAyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBw
cm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKG1ha2VGb250KToKKwogMjAyMi0w
NC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3Ry
aW5nOjp0cnVuY2F0ZSgpIGFuZCB1c2UgU3RyaW5nOjpsZWZ0KCkgaW5zdGVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZy5jcHAKaW5kZXggOTMwZmNiMjk5NzY4NDhkMzE4ZmNiZTEyODM0YTlmNGIz
ZWM1YTgwMy4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRmYTA3Y2EzYTFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMzcsOCArMTM3LDYgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRh
OwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sQXRvbURhdGE7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB4bWxuc0F0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOwotV1RGX0VYUE9SVF9QUklW
QVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VB
dG9tRGF0YTsKIAogdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKIHsKQEAgLTE1OSw4ICsxNTcsNiBA
QCB2b2lkIEF0b21TdHJpbmc6OmluaXQoKQogICAgICAgICBzdGFyQXRvbURhdGEuY29uc3RydWN0
V2l0aG91dEFjY2Vzc0NoZWNrKCIqIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1sbnNBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbG5zIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICB0cnVlQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFj
Y2Vzc0NoZWNrKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
ICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2UiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nLmgKaW5kZXggNzYzMTE1YTY2NjdiODg4M2JlNWNiY2UzYmViZjQ1NDYwMzEz
NTk1Yi4uMGFkZjUyMjNiYjYwMjljM2RlOTg5YzY4MzE3NDAxNjZmMDZjNzA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmgKQEAgLTI5MywxNiArMjkzLDEyIEBAIGV4dGVybiBXVEZfRVhQT1JU
X1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtcHR5QXRvbURh
dGE7CiBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0
b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbG5zQXRvbURhdGE7Ci1leHRlcm4gV1RGX0VYUE9S
VF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
dHJ1ZUF0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBudWxsQXRvbSgpIHsgcmV0dXJuIG51bGxBdG9tRGF0YS5nZXQoKTsg
fQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRv
bURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdGFyQXRvbSgpIHsgcmV0
dXJuIHN0YXJBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHhtbEF0
b20oKSB7IHJldHVybiB4bWxBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHhtbG5zQXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGZhbHNlQXRvbSgpIHsgcmV0dXJuIGZhbHNlQXRv
bURhdGEuZ2V0KCk7IH0KIAogaW5saW5lIEF0b21TdHJpbmcgQXRvbVN0cmluZzo6ZnJvbVVURjgo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTM2Miw5ICszNTgs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRv
bVN0cmluZz4gewogdXNpbmcgV1RGOjpBdG9tU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsK
IHVzaW5nIFdURjo6ZW1wdHlBdG9tOwotdXNpbmcgV1RGOjpmYWxzZUF0b207CiB1c2luZyBXVEY6
OnN0YXJBdG9tOwotdXNpbmcgV1RGOjp0cnVlQXRvbTsKIHVzaW5nIFdURjo6eG1sQXRvbTsKIHVz
aW5nIFdURjo6eG1sbnNBdG9tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4MGJiZWE4ZTcyMzRm
MDU1ZWZkNmUzNDAwNzUwYjM3ZjMzMTc4Y2FlLi4yOTc0MGNmNmE0MTlkYjg5NWI4MjFjYzlmOTI2
ZTdlOWQ1N2YwMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDAsNiArMTI0MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9DUFVNb25p
dG9yLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXIuaAogICAgIHBsYXRmb3JtL0NvbG9yQ2hv
b3NlckNsaWVudC5oCisgICAgcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaAogICAgIHBsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuaAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQ5ZjNiMzA3NTcy
MTE1Nzc3Nzg1OWMwYmFiMTYwMWQwY2Y4ZTk1ZTkuLjQ2OWNjM2FkYjVmYmY3YjM4MTQ5MmQzZWNk
NDIxOTI2Y2RjZmRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3RpdmVQYXN0
ZWJvYXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKICAgICB9CiAKLSAg
ICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgIGlmICh0eXBlID09IHRleHRQbGFp
bkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5U
ZXh0UmVhZGVyOwogICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFk
ZXIsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKICAg
ICAgICAgcmVzdWx0QXNTdHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCmluZGV4IGM5YjdmYzFkNTJmYTZmYTI0NjNkNTBmNTZiODk0ZWI1ZTZmYjUwNDEu
LjgzYmY5ZTUwMTYzZjRlOWNjYTFiMzRhYTMwYTQ1YTI0YTg2YjRiNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEzNiw3ICsxMzcsNiBAQCBj
b25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzcGVl
Y2hIaW50KCJzcGVlY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtdXNpY0hp
bnQoIm11c2ljIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgi
ZGV0YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEhpbnQoInRleHQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb3Rpb25IaW50KCJtb3Rpb24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKG1fcHJpdmF0
ZS0+Y29udGVudEhpbnQoKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50KCkgY29uc3QKICAgICBjYXNlIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkRldGFpbDoKICAgICAgICAgcmV0dXJuIGRldGFp
bEhpbnQ7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0
OgotICAgICAgICByZXR1cm4gdGV4dEhpbnQ7CisgICAgICAgIHJldHVybiB0ZXh0QXRvbSgpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICB9CkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRDb250ZW50SGludChjb25zdCBT
dHJpbmcmIGhpbnRWYWx1ZSkKICAgICAgICAgICAgIHZhbHVlID0gTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OkhpbnRWYWx1ZTo6RGV0YWlsOwogICAgICAgICBlbHNlIGlmIChoaW50VmFsdWUgPT0g
Im1vdGlvbiIpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpI
aW50VmFsdWU6Ok1vdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJ0ZXh0IikK
KyAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09IHRleHRBdG9tKCkpCiAgICAgICAgICAgICB2
YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OlRleHQ7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMGFmM2QwNmE1YjBi
YmM2OGZjMDExMzNiY2NmZTFmMmNkOTcwZTg5ZS4uNWQyMzE2ZmFjNzM5MzEwYzU4MGRiNmJlNWRi
ZWY0MWE5OTFhZmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjcsNiArMTg2Nyw3IEBAIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcAorcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCiBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMyOTEzMGViYzc2N2U1NzgzOTk5ZjdkMDY4N2IxZjExMjJlZDkyYjYu
LmVkZGE0MzA5NjIzN2NjOGI0ODIwZmE2MzgyNGRkODcxMzU3MmE2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzIsNiAr
MjczMiw3IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJG
MkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1
Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQu
aCAqLzsgfTsKIAkJODM5QkU2RDUyNEY1ODc2MjAwNERGNTBGIC8qIElJUkZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QkU2RDIyNEY1ODc1
NTAwNERGNTBGIC8qIElJUkZpbHRlci5oICovOyB9OworCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOUM2OUNFMjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3Ry
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzQTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDcz
RCAvKiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8q
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlF
MDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwpAQCAtMTIzMDMsNiArMTIzMDQs
OCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDIyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDQyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZp
bHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJGaWx0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMkFCRDgyNEQ4NkRDNjAwRTJENzNEIC8qIERlbGF5
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBMkFCREEyNEQ4NkRDNzAwRTJENzNEIC8qIERlbGF5T3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVsYXlPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE2Nyw2ICszMDE3MCw4IEBACiAJCQkJ
QzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLAogCQkJCUMzN0NE
RUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLywKIAkJCQlCQ0M4
Q0ZDQTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAorCQkJCTgzOUM2OUNE
MjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5jcHAgKi8sCisJCQkJODM5QzY5
Q0UyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8sCiAJCQkJQTE0MDkw
RkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovLAog
CQkJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJ
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0zNDA2NCw2
ICszNDA2OSw3IEBACiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzlD
NjlEMDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21t
b25DcnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGMzJCMURGQkIxMDcw
MDQxNkQ2QyAvKiBDb21tb25WTS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDQzMWZkZWExNTcyNjI3MmEyYjY4Zjk3
NGIyNmUwYWU2YTU1ZmMwYWEuLjA3ZTE5ODM2ZDcwZDFkYjE1M2U4ODZmMTgyN2Y2YjliZjBlMWMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAKICNpbmNsdWRl
ICJDU1NBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvbi5oIgpAQCAtNjksNyArNzAsNyBAQCBFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRUaW1pbmcoKSBjb25zdAogICAgIHRpbWluZy5pdGVyYXRpb25TdGFy
dCA9IG1faXRlcmF0aW9uU3RhcnQ7CiAgICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlv
bnM7CiAgICAgaWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcu
ZHVyYXRpb24gPSAiYXV0byJfczsKKyAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gYXV0b0F0b20o
KTsKICAgICBlbHNlCiAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1h
dGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIHRpbWluZy5kaXJlY3Rpb24g
PSBtX2RpcmVjdGlvbjsKQEAgLTM5OSw3ICs0MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmlt
YXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGlt
aQogICAgICAgICAgICAgaWYgKGR1cmF0aW9uQXNEb3VibGUgPCAwIHx8IHN0ZDo6aXNuYW4oZHVy
YXRpb25Bc0RvdWJsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSAiYXV0byIpCisgICAgICAgICAgICBpZiAo
c3RkOjpnZXQ8U3RyaW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9IGF1dG9BdG9tKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRp
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCmluZGV4IDIx
MDczZmE0NzMwM2Y2NGZkMmJhMjYxOWFlOTE4N2Y1ODE1OTUwNmUuLmU4YzBmMWJkOGQ5NTkyMTQ2
YzExM2U2NDM0NTlhYzEwZGRiZmQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9FZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0
VGltaW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxh
eWJhY2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtMzMsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRWZmZWN0VGltaW5nIHsKLSAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgImF1dG8iX3MgfTsKKyAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgYXV0b0F0b20oKSB9OwogICAgIGRvdWJs
ZSBkZWxheSB7IDAgfTsKICAgICBkb3VibGUgZW5kRGVsYXkgeyAwIH07CiAgICAgZG91YmxlIGl0
ZXJhdGlvblN0YXJ0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAwOGZhNDY3Yzhh
MmUzNWU4MDE5Mzc3OTBjZjJkOTBmYmI4YmVjZjBmLi40OGMyNzMyYjEzMGFiZjRhNDBhOTBkYjY2
YjI2NGU4ZWFiNDNiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uRXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIgpAQCAtMjA0LDYgKzIwNSw3IEBAIGJvb2wgaXNW
YWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNv
bW1vbkF0b21TdHJpbmdzKCk7CiAgICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChIVE1MUXVpcmtzTW9kZSk7CiAgICAgQ1NTUGFyc2VyIHBhcnNl
cihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1
YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAuLjM0Njc3OTZmYjNhMWZjODc3Y2U4YTAyMGQ5
NTRlNDQ1YTg4ZWM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiAr
MjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBO
b2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBp
c0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0
cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3Ry
aW5nIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b20oKTsgfQog
CiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJ
bmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDRk
NTExYjVlNjg1NDEzMDVkNDBjMWMzM2I3OTA5YTY1MDY1NTZmNjIuLmQ5NWIwOTg3M2RkZThhN2I3
YjFjYTdiYjRmNWYzNmQwMDAwMjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDA1
LDcgKzQwNSw3IEBAIFN0cmluZyBGb250RmFjZTo6ZGlzcGxheShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGNvbnN0IGF1dG8mIGxvYWRpbmdCZWhhdmlvcldyYXBwZWQgPSBtX2JhY2tpbmctPmxv
YWRpbmdCZWhhdmlvcigpOwogICAgIGlmICghbG9hZGluZ0JlaGF2aW9yV3JhcHBlZCkKLSAgICAg
ICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1
cm4gY29udGV4dC5jc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsb2FkaW5nQmVoYXZpb3JXcmFw
cGVkLnZhbHVlKCkpLT5jc3NUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwCmluZGV4IDJmNWI4YjA0NzM5NWEyY2JkNzU1YWMxY2Y1MzRiZmRjZWY1NzEw
NTcuLjZkNTA5MTlkOTUxNmFiNzU3NGRhMDVmMjFiMGUwNGQ2Njk3MDBkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMgewogCkBAIC0zMyw2ICszNSw3IEBAIHZvaWQgaW5pdCgpCiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAg
ICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogI2RlZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3Ry
dWN0KHN0cmluZywgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBD
U1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9C
QUwpCiAjdW5kZWYgSU5JVElBTElaRV9HTE9CQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKaW5kZXggMGVkMmJlZDk2MjMyMDRmOWEwYmViOWZjYjE1YTEwZGQ3ZTVkOGYzOS4uNjY2YmNj
Nzk2NThjOWRlZGYxOWIyOTU3OTU0M2M4YmNiNjM2OTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTEyNyw3
ICsxMjgsNyBAQCBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiAgICAgU3RyaW5nIGxvd2VyY2FzZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXModHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAobG93ZXJj
YXNlVHlwZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWlu
OyIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVybiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8
fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCiAgICAgICAgIHJl
dHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRo
KCJ0ZXh0L2h0bWw7IikpCkBAIC0yNjUsNyArMjY2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNl
dERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CiAgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHVybC5zdHJpbmcoKTsKLSAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSB0
ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgc2FuaXRpemVkRGF0YSA9IGRhdGE7
IC8vIE5vdGhpbmcgdG8gc2FuaXRpemUuCiAKICAgICBpZiAoc2FuaXRpemVkRGF0YSAhPSBkYXRh
KQpAQCAtNDI4LDcgKzQyOSw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0
bWxUZXh0KQogewogICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKLSAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxh
aW5UZXh0KTsKKyAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9o
dG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZl
bnQpKTsKIH0KQEAgLTQ2Nyw3ICs0NjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiAKIFN0cmluZyBEYXRhVHJh
bnNmZXI6OmRyb3BFZmZlY3QoKSBjb25zdAogewotICAgIHJldHVybiAibm9uZSJfczsKKyAgICBy
ZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyb3BFZmZlY3Qo
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNDE1NWY2MWQwMDJi
ZjJmNmYwN2UxNmRhZDU4YmQzYWQ3Njk0YWIuLmE5OGQyZjI1NGVhNjA0MmNlNzE1YzQxM2FjZDAx
OGUyNzA1ZmNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkV2ZW50LmgiCkBAIC02MDA3LDcgKzYwMDgsNyBAQCB2b2lkIERvY3VtZW50Ojpz
ZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiAKIFN0cmluZyBEb2N1bWVudDo6ZGVz
aWduTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gIm9uIl9zIDog
Im9mZiJfczsKKyAgICByZXR1cm4gaW5EZXNpZ25Nb2RlKCkgPyBvbkF0b20oKSA6IG9mZkF0b20o
KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCBk
MmFhOGQxZjdlMzk5ZTMzZGZhNWMxMTEwNjQxZDJmNDAxZTZjM2EwLi4wNWM4MmZiYWE5MThiZTBh
MWU2Mzc4NWIyYWFkZjM4YjdlNTRkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRPd25lci5oIgogCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE1MSw4ICsx
NTIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICAvLyBGSVhNRTogU2hvdWxkIE1JTUUgdHlw
ZXMgcmVhbGx5IGJlIGNhc2Ugc2Vuc2l0aXZlIGluIFhNTCBkb2N1bWVudHM/IERvZXNuJ3Qgc2Vl
bSBsaWtlIHRoZXkgc2hvdWxkLAogICAgIC8vIGV2ZW4gdGhvdWdoIG90aGVyIHRoaW5ncyBhcmUg
Y2FzZSBzZW5zaXRpdmUgaW4gdGhhdCBjb250ZXh0LiBNSU1FIHR5cGVzIHNob3VsZCBuZXZlciBi
ZSBjYXNlIHNlbnNpdGl2ZS4KICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoaXMgYW5kIHRoZW4g
cmVtb3ZlIHRoZSBpc0hUTUxFbGVtZW50IGNoZWNrIGhlcmUuCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZSgidGV4dC9j
c3MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InRleHQvY3NzIikgOiB0eXBlID09IGNzc0NvbnRlbnRUeXBlOworICAgIHJldHVybiBlbGVtZW50
LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKTsKIH0KIAogdm9pZCBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKaW5kZXggYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZS4uOTFiYzRm
ZWI4OWRjNTgzYmYwYjNmNzA3MDVmYmQyYThiZGMyOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTk0LDcgKzk1LDcgQEAgdm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKLSAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKKyAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAg
ICAgICAgIG1faXNYU0wgPSB0eXBlID09ICJ0ZXh0L3htbCIgfHwgdHlwZSA9PSAidGV4dC94c2wi
IHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24veGh0
bWwreG1sIiB8fCB0eXBlID09ICJhcHBsaWNhdGlvbi9yc3MreG1sIiB8fCB0eXBlID09ICJhcHBs
aWNhdGlvbi9hdG9tK3htbCI7CiAgICAgICAgIGlmICghbV9pc0NTUyAmJiAhbV9pc1hTTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCmluZGV4IDU0ZDZjZjBl
NTgwNzk3NDExNWU2Y2VlZDcyNjdjNzhmYmRlMjIzNGUuLmIyNTZhMzJhNjhlZTEwYmFhOGRmYmQ4
NTQzMDIyMTU5MTA2OTMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1h
Z2VDb250cm9sc01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5l
cy5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9u
dFNoYWRvdy5jcHAKaW5kZXggMjg4NDgwYjY1NzdlOGVkMWEwM2Y3NThiMGI0ODQ3YjgxNzVmZmU4
Mi4uMjcwNzI0MGJjYWM1OGM1YjIwNzM2OTNjNDUwZTQxMjgzZjkxZTk0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRm9u
dFNoYWRvdy5oIgogCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAi
Q29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBGb250U2hhZG93JiBzaGFk
b3cpCiB7CiAgICAgaWYgKHNoYWRvdy5vZmZzZXQuaXNaZXJvKCkgJiYgIXNoYWRvdy5ibHVyUmFk
aXVzKQotICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgp
OwogCiAgICAgaWYgKCFzaGFkb3cuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gIm5v
bmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgInB4ICIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA1ZWIzYmQwODczNDMyYjRkMGM4ZDlmOTEwZDI4N2RiMWI1OThkZmMzLi5hOWM0
YzYzOTQ3MDhlMzVjNTJmMmFhZDhiNWMyYzkwMDBlMzdhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKICNpbmNsdWRlICJDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNzE4LDcgKzcxOSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgICAg
ICBpZiAoaXNCbG9jayhlbGVtZW50KSkKICAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0
eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3Ms
IGZhbHNlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1l
bnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJu
b25lIl9zLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgbm9uZUF0b20oKSwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tCmluZGV4IGI1ZTBhY2E2ZTIxYmIyNmJiZGMzYzU4ZWJkMzUwOTY1ZDA4NDZk
ZjcuLjk0YTQ2MGY1MzQ5NDg0Y2FiMDhiZGU5ODhhMjdmYjE3NDAwMGE5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbXBvcnQgIkNvbG9yQ29udmVy
c2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW1wb3J0ICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAj
aW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDUz
Y2M2YWIwMTZiZTgyZTcwZWI1NTU1YTc5NjNlYTUwOWJiYmYzMDQuLjQyYjZjMjJlNTllMjg4Y2Fi
MDI2ODg5NmRmYWRkYjYwMTAxZjQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkNoYXJhY3Rl
ckRhdGEuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisj
aW1wb3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNTk3LDcgKzU5OCw3IEBAIFN0cmluZyBIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZh
bHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CiAgICAgICAgIGlmIChl
bGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KG5vZnJhbWVzVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgICAg
IHJldHVybiBub25lQXRvbSgpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
YWRkcmVzc1RhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShib2R5VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoY2VudGVyVGFnKQog
ICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkZFRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGRpclRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKGRsVGFnKQogICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZyYW1lVGFnKQpAQCAtMTAxNyw3ICsx
MDE4LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3RyaW5nIGZvbnRLZXJuaW5nID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250S2Vybmlu
Zyk7CiAgICAgU3RyaW5nIGxldHRlclNwYWNpbmcgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9y
Tm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOwogICAgIGlmIChmb250S2Vy
bmluZy5sZW5ndGgoKSB8fCBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChm
b250S2VybmluZyA9PSAibm9uZSIpCisgICAgICAgIGlmIChmb250S2VybmluZyA9PSBub25lQXRv
bSgpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUga2VyblZhbCA9
IGxldHRlclNwYWNpbmcubGVuZ3RoKCkgPyBsZXR0ZXJTcGFjaW5nLnRvRG91YmxlKCkgOiAwLjA7
CkBAIC0xMTEwLDcgKzExMTEsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1
dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgICAgICBTdHJp
bmcgaHlwaGVuYXRpb24gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tF
bGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpOwogICAgICAgICBpZiAoaHlwaGVuYXRp
b24ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmIChoeXBoZW5hdGlvbiA9PSAiYXV0byIpCisg
ICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgICAg
ICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0b3I6MS4wXTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0
b3I6MC4wXTsKQEAgLTE2MTAsNyArMTYxMSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2VudGVy
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBCT09MIGVtYmVkZGVkKQogCiAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhZW1iZWRkZWQpCiAgICAgICAgIF9wcm9jZXNzSGVh
ZEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoIWRpc3BsYXlWYWx1ZS5sZW5ndGgoKSB8
fCAhKGRpc3BsYXlWYWx1ZSA9PSAibm9uZSIgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1
bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uLWdyb3VwIikpIHsKKyAgICBlbHNl
IGlmICghZGlzcGxheVZhbHVlLmxlbmd0aCgpIHx8ICEoZGlzcGxheVZhbHVlID09IG5vbmVBdG9t
KCkgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAi
dGFibGUtY29sdW1uLWdyb3VwIikpIHsKICAgICAgICAgaWYgKF9jYWNoZXMtPmlzQmxvY2tFbGVt
ZW50KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpICYmICEoZGlzcGxheVZh
bHVlID09ICJ0YWJsZS1jZWxsIiAmJiBbX3RleHRUYWJsZXMgY291bnRdID09IDApCiAgICAgICAg
ICAgICAmJiAhKFtfdGV4dExpc3RzIGNvdW50XSA+IDAgJiYgZGlzcGxheVZhbHVlID09ICJibG9j
ayIgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShsaVRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZSh1
bFRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpKQogICAgICAgICAgICAgX25ld1Bh
cmFncmFwaEZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC50YWdOYW1lKCksIE5PLCBZRVMpOwpA
QCAtMTg2NSw3ICsxODY2LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBpZiAoZWxlbWVu
dC5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGlucHV0RWxlbWVudC50eXBlKCkgPT0gInRleHQiKSB7CisgICAgICAgICAgICBpZiAoaW5wdXRF
bGVtZW50LnR5cGUoKSA9PSB0ZXh0QXRvbSgpKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcg
KnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIFt2YWx1ZSBsZW5ndGhdID4gMCkKICAgICAgICAgICAgICAgICAgICAgX2FkZFZhbHVlKHZh
bHVlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzYWVlOWNmOWRk
N2RlNmUzZGM4MTUxMDQ4NWU3YzE3ZjRlMGVlZTI0Li44MGE4ODQzNTAyZWI1N2YwM2VkYjJlYjMx
ZGMyNzcxYzBmOWQzOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
QEAgLTEyODUsNyArMTI4Niw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8v
IFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVs
ZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5
ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKICAgICAgICAgZnJhZ21lbnQt
PnBhcnNlSFRNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKLSAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYg
KHNvdXJjZU1JTUVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKQogICAgICAgICBm
cmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgV1RGTW92
ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bFBh
cnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNlU3RyaW5nKSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCmluZGV4IGQ2N2RjNzkyOTQ4NjIxNDM5NDE1
Y2VmZTg2MzY5MDc4ZjY0NzVlYmQuLjQwZTJhOTBlZWMwOTE1MjMwZmYwYjUyZDM1M2RiMjM3NjQy
NDU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NiwxMCArNTcsOCBAQCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6OkRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBudWxsQXRvbSgpOwotICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpOb25lOiB7
Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdmFsdWVOb25lKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgICAgICByZXR1cm4gdmFsdWVOb25lOwotICAgIH0KKyAgICBjYXNlIEF1dG9jYXBpdGFsaXpl
VHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAgICAgY2FzZSBBdXRvY2Fw
aXRhbGl6ZVR5cGU6OlNlbnRlbmNlczogewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlU2VudGVuY2VzKCJzZW50ZW5jZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiB2YWx1ZVNl
bnRlbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZGU1MTg1ZTE3YjM3ZTg0ZGIz
NzE0ODhiNDY4YmZkYzMyNTg3ZDQyOC4uOWRlNzBiN2M2YWRhYzNkZWNlZTA2ZDI1Y2M0MmI2YzQ5
MTIwZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRvZmlsbC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
QEAgLTEzNiw5ICsxMzcsNiBAQCBzdGF0aWMgdW5zaWduZWQgbWF4VG9rZW5zRm9yQXV0b2ZpbGxG
aWVsZENhdGVnb3J5KEF1dG9maWxsQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI3Byb2Nlc3NpbmctbW9kZWwtMwog
QXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotCiAgICAgLy8gTGFiZWw6IERlZmF1bHQKICAgICAvLyAyNi4gTGV0
IHRoZSBlbGVtZW50J3MgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIGVtcHR5IHN0
cmluZywgYW5kIGl0cyBhdXRvZmlsbCBoaW50IHNldCBhbmQgYXV0b2ZpbGwgc2NvcGUgYmUgZW1w
dHkuCiAgICAgLy8gMjcuIElmIHRoZSBlbGVtZW50J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBp
cyB3ZWFyaW5nIHRoZSBhdXRvZmlsbCBhbmNob3IgbWFudGxlLCB0aGVuIGxldCB0aGUgZWxlbWVu
dCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIGVtcHR5IHN0cmluZyBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCkBAIC0xNDksOSArMTQ3LDkgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6
Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAg
ICAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gZm9ybSA9IGVsZW1lbnQuZm9ybSgpOwotICAgICAgICBpZiAoZm9y
bSAmJiBmb3JtLT5hdXRvY29tcGxldGUoKSA9PSBvZmYpCi0gICAgICAgICAgICByZXR1cm4geyBv
ZmYsIGVtcHR5U3RyaW5nKCkgfTsKLSAgICAgICAgcmV0dXJuIHsgb24sIGVtcHR5U3RyaW5nKCkg
fTsKKyAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0b2NvbXBsZXRlKCkgPT0gb2ZmQXRvbSgp
KQorICAgICAgICAgICAgcmV0dXJuIHsgb2ZmQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CiAgICAgfTsKIAogCkBAIC0x
OTksMTMgKzE5NywxMyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIGF1dG9maWxs
IGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhwb3NlZCBhdXRvZmlsbCB2YWx1
ZSBiZSB0aGUgc3RyaW5nICJvZmYiLgogICAgIC8vIFRoZW4sIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChjYXRlZ29yeSA9PSBBdXRvZmlsbENhdGVnb3J5OjpPZmYpCi0gICAgICAgIHJldHVy
biB7IG9mZiwgb2ZmLmdldCgpLnN0cmluZygpIH07CisgICAgICAgIHJldHVybiB7IG9mZkF0b20o
KSwgb2ZmQXRvbSgpLnN0cmluZygpIH07CiAKICAgICAvLyA4LiBJZiBjYXRlZ29yeSBpcyBBdXRv
bWF0aWMsIGxldCB0aGUgZWxlbWVudCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIHN0cmlu
ZyAib24iLAogICAgIC8vIGxldCBpdHMgYXV0b2ZpbGwgaGludCBzZXQgYmUgZW1wdHksIGFuZCBs
ZXQgaXRzIElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBzdHJpbmcKICAgICAvLyAi
b24iLiBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdvcnkgPT0gQXV0b2Zp
bGxDYXRlZ29yeTo6QXV0b21hdGljKQotICAgICAgICByZXR1cm4geyBvbiwgb24uZ2V0KCkuc3Ry
aW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgb25BdG9tKCksIG9uQXRvbSgpLnN0cmluZygpIH07
CiAKICAgICAvLyA5LiBMZXQgc2NvcGUgdG9rZW5zIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgLy8g
MTAuIExldCBoaW50IHRva2VucyBiZSBhbiBlbXB0eSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAppbmRleCA4YTU0Y2EwNTM1NGE5MzAyNzU5
YWI3NWJhM2ExNzU1ZjdiOWY0NTVkLi4yYjIzZTFmZDVjN2E4ZjNkODM2NzZjY2VjYTA0ZDA4Mzdl
OTRhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlw
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00NiwxMyArNDcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIEZvcm1Db250cm9sU3RhdGUgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwotICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gIm9uIl9zIDogIm9mZiJf
cyB9OworICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gb25BdG9tKCkgOiBvZmZB
dG9tKCkgfTsKIH0KIAogdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLSAgICBlbGVtZW50KCktPnNldENoZWNrZWQoc3RhdGVbMF0gPT0gIm9uIik7
CisgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09IG9uQXRvbSgpKTsKIH0KIAog
Ym9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYg
Zm9ybURhdGEpIGNvbnN0CkBAIC05OSw4ICsxMDAsNyBAQCBib29sIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKIAogU3RyaW5nIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb24oIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBvbi5nZXQoKTsKKyAg
ICByZXR1cm4gb25BdG9tKCk7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhp
bnQuY3BwCmluZGV4IDk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEuLmI3
NzU2OTRhMzIxMTE0NTllMjBkZDU0NGM3ZDU3MDA2YWYyNjJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFbnRlcktleUhpbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW50ZXJLZXlIaW50IGVudGVyS2V5SGludEZv
ckF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC02Myw3ICs2NSw3IEBAIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZUZvckVudGVyS2V5SGludChFbnRlcktleUhpbnQgaGludCkKICAg
ICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlvdXM6CiAgICAgICAgIHJldHVybiAicHJldmlvdXMi
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJzZWFy
Y2giX3M7CisgICAgICAgIHJldHVybiBzZWFyY2hBdG9tKCk7CiAgICAgY2FzZSBFbnRlcktleUhp
bnQ6OlNlbmQ6CiAgICAgICAgIHJldHVybiAic2VuZCJfczsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAppbmRleCBhOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4
YjEyYWVhMDYzMzAwMzMyLi44ZWI2YzNlZjhmMzEzNGQ4NmIzNjg5MWM1ZTQwMDFiYjY0MmQ1ZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxl
Z2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IHNyYykKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBm
YWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihw
cmVsb2FkQXR0ciwgImF1dG8iX3MpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIGF1dG9BdG9tKCkpOwogICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAgICByZXR1
cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
aW5kZXggODc5NDg2N2M2ZTA0ZDUwMTYxNzNiZjk3ZDcyMzAwN2U5ZGFmMWRmZC4uOWMzNzMxNWFj
YjU2YmYwMGJjOTVlMzJkN2EwMTNhNzI1NzExNmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtODIsMTYgKzgzLDEyIEBAIGlu
dCBIVE1MQnV0dG9uRWxlbWVudDo6ZGVmYXVsdFRhYkluZGV4KCkgY29uc3QKIGNvbnN0IEF0b21T
dHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1Ym1pdCgi
c3VibWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICAgICAg
cmV0dXJuIHN1Ym1pdDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJVVFRPTjoKLSAgICAgICAg
ICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7Ci0gICAgICAgIGNh
c2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcmVzZXQoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwotICAgICAgICB9CisgICAgY2Fz
ZSBTVUJNSVQ6CisgICAgICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CisgICAgY2FzZSBCVVRUT046
CisgICAgICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7CisgICAg
Y2FzZSBSRVNFVDoKKyAgICAgICAgcmV0dXJuIHJlc2V0QXRvbSgpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5
YzM5YzU2ZDM0MTQzOGQwZTA4YjU1MTNlNjcyYjY5YTYwOWIxYjFkLi45MDEwNTA1ZGUxNTI5ZGQ0
OTZkOTRmOGYyYzMyNzYxNTczMjIxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCkBAIC00
MTUsMTMgKzQxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRvVmFsaWRE
aXJWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGx0clZhbHVlKCJsdHIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBydGxWYWx1ZSgicnRsIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbHVlKCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImx0ciIpKQogICAgICAgICByZXR1cm4gbHRyVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCiAgICAgICAgIHJldHVybiBydGxWYWx1
ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikp
Ci0gICAgICAgIHJldHVybiBhdXRvVmFsdWU7CisgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwog
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCkBAIC01NzgsMTcgKzU3OCwxMSBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgY2FzZSBDb250ZW50RWRp
dGFibGVUeXBlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIGZhbHNlQXRvbSgpOwogICAgIGNhc2Ug
Q29udGVudEVkaXRhYmxlVHlwZTo6UGxhaW50ZXh0T25seToKLSAgICAgICAgcmV0dXJuICJwbGFp
bnRleHQtb25seSJfczsKKyAgICAgICAgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tKCk7CiAgICAg
fQogICAgIHJldHVybiAiaW5oZXJpdCJfczsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHBsYWludGV4dE9ubHlOYW1lKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxhaW50ZXh0LW9ubHki
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHBsYWludGV4
dE9ubHlWYWx1ZS5nZXQoKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNl
dENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCkBAIC01OTYsNyArNTkw
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShj
b25zdCBTdHJpbmcmIGVuYWJsZWQpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCiAgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgZmFsc2VBdG9tKCkpOwogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQt
b25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRl
bnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9ubHlOYW1lKCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9u
bHlBdG9tKCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
YWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFi
bGVBdHRyKTsKICAgICBlbHNlCkBAIC0xMDY0LDkgKzEwNTgsNyBAQCBib29sIEhUTUxFbGVtZW50
OjpzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9j
b3JyZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbk5hbWUoIm9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb2ZmTmFtZSgib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJl
Y3RBdHRyLCBhdXRvY29ycmVjdCA/IG9uTmFtZS5nZXQoKSA6IG9mZk5hbWUuZ2V0KCkpOworICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRv
Y29ycmVjdCA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTdlMDhmZmE5M2Q2MWQwZGQ4MDk3OWRk
Zjg0YjFjM2NmNTJkMGUwNS4uNWUwMTY5YTczMTcwNDkxM2JkY2U2MDRiNmNmMDMzZjg4YzBjYTkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5o
IgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAt
MTAxMiwxMCArMTAxMyw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29tcGxldGUo
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxGb3JtRWxl
bWVudDo6YXV0b2NvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmIDogb247CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmQXRvbSgpIDogb25BdG9tKCk7CiB9
CiAKIFJlZlB0cjxET01Gb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpjb25zdHJ1Y3RFbnRyeUxp
c3QoUmVmPERPTUZvcm1EYXRhPiYmIGRvbUZvcm1EYXRhLCBTdHJpbmdQYWlyVmVjdG9yKiBmb3Jt
VmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAx
ZTgxZjU0MjViMDdlMjRkOWE5YzEyMDdlYjM1NTkyMTcyNDY1Yzg0Li5mMjhlNmQ5NjE1NmVhZGJk
MTBhYzVjMzk5MGEwMmEzMWI1ZWNkODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFbGVt
ZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNTcsOSArMTU4LDcgQEAgY29u
c3QgRmVhdHVyZVBvbGljeSYgSFRNTElGcmFtZUVsZW1lbnQ6OmZlYXR1cmVQb2xpY3koKSBjb25z
dAogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRp
bmdzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenkoImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBsYXp5IDogZWFn
ZXI7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBs
YXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7CiB9CiAKIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnNl
dExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDAwY2RkNjJmZTA0NjM4NjQyNGU1Nzgx
NThhM2NjNWRkOTljOTZiYmIuLjhjNzM1MjBjNTRkNjdiYmEyMzlhNjRlZTdmODc2Y2JhZjU0NjBj
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTY3NCw3ICs2NzUsNyBAQCBTdHJpbmcgSFRNTElt
YWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25zdAogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBdXRv
OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuICJhdXRvIl9zOworICAgIHJldHVy
biBhdXRvQXRvbSgpOwogfQogCiBEZWNvZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmdNb2RlKCkgY29uc3QKQEAgLTg5NiwxMCArODk3LDggQEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1l
bnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpIGNvbnN0CiAKIGNvbnN0
IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJs
YXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGF1dG8mIGF0dHJp
YnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omxv
YWRpbmdBdHRyKTsKLSAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlVmFsdWUpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVybiBoYXNMYXp5TG9hZGFibGVB
dHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVWYWx1ZSkgPyBsYXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7
CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0TG9hZGluZ0ZvckJpbmRpbmdzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggMjY0YTdhODgyNjZhODM5YmZkOGYzZWM5NTRiNjI5NzlmMTliMTkzZi4uZjI2MzBh
Y2QwYmU2Y2NkZGJkNjQ1MjBmMzc5MzdkODE2ODQ3NjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKICNpbmNsdWRlICJDb250ZW50UnVsZUxpc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCkBAIC0zNjQ5LDE2ICszNjUwLDE2IEBAIFN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9t
ZWRpYWNhcHR1cmUtbWFpbi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCiAgICAgLy8g
InByZWxvYWQiIC0gT24gZ2V0dGluZzogbm9uZS4gT24gc2V0dGluZzogaWdub3JlZC4KICAgICBp
ZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3ByZWxvYWQp
IHsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lOgotICAgICAgICByZXR1cm4g
Im5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhOgogICAgICAgICByZXR1cm4gIm1ldGFkYXRhIl9zOwogICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86Ci0gICAgICAgIHJldHVybiAiYXV0byJf
czsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhi
ZjMuLmFiOGQ2YTI5OWVmNmNjZjBhMWQyMTAwMTEzODZiMWI5ZjNhOGU2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQzNCwxMyArNDM1
LDEyIEBAIHVuc2lnbmVkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlU2VsZWN0
aW9uRW5kKCkgY29uc3QKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZSgibm9uZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZvcndhcmQoImZvcndhcmQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBiYWNrd2FyZCgiYmFja3dhcmQiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAg
IGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiBub25lOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJl
Y3Rpb246CiAgICAgICAgIHJldHVybiBmb3J3YXJkOwogICAgIGNhc2UgU2VsZWN0aW9uSGFzQmFj
a3dhcmREaXJlY3Rpb246CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGRpcmVjdGlvblN0cmluZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBub25lOwor
ICAgIHJldHVybiBub25lQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRNb2RlLmNwcAppbmRleCAzNDlkODViNTYyZTdiYjljNWFkZmVkNTI3MTFmNTMwNWM0N2Rl
NDllLi43ZTgwYzc3ZjdlZjk0Y2Y4MDgwMDdlMGNjNDZjZjAyNmJmZjQ1ZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dE1vZGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MiwzMiArODMsMjcgQEAgbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzIHsKIAogY29uc3Qg
QXRvbVN0cmluZyYgbm9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBub25lQXRvbSgpOwogfQog
CiBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInRleHQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRleHRBdG9t
KCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRl
bEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInVybCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1
cm4gdXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJlbWFp
bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsK
KyAgICByZXR1cm4gZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIG51bWVyaWMo
KQpAQCAtMTI0LDggKzEyMCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRlY2ltYWwoKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBzZWFyY2goKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBzZWFyY2hBdG9t
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlTmFtZXMuY3BwCmluZGV4IDQ1MDM2OWVjODFkY2JmMTAzMzY5MGQ3ZjY0MzcxNjVm
MWVlOGM1NmYuLjZmZmJjZjVjZjIyNTY5MzI3OTlmMWFlZTNhMWM0M2M1MWI1MWVhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDggKzY0LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgZGF0ZXRpbWVsb2NhbCgpCiAKIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoImVt
YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBlbWFpbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgZmlsZSgp
CkBAIC0xMTcsMzIgKzExNywyNyBAQCBjb25zdCBBdG9tU3RyaW5nJiByYW5nZSgpCiAKIGNvbnN0
IEF0b21TdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiByZXNldEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInNlYXJjaCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c2VhcmNoQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXQoKQogewotICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgic3Vi
bWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbGVw
aG9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJ0ZWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHRlbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBuYW1lKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0aW1lKCkKQEAgLTE1Myw4ICsxNDgsNyBAQCBjb25zdCBBdG9tU3RyaW5n
JiB0aW1lKCkKIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInVybCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
dXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWVrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IDkzMDQ4NGI4NWFiMjVhZTU0N2RmN2YzMWZkN2QyMGE1YWEyYmU2ZmEuLjdmNDczNTA3ZmJm
YWRiZWY4M2Q1MWM4ZmYxMDliOTYyYTEyM2RiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMTUwLDggKzE1MSw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkCiAK
IHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHlJbXBsKGJvb2wgaXNFZGl0YWJsZSwgYm9vbCBpbml0aWFsaXphdGlvbikKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBs
YWluVGV4dE9ubHlOYW1lKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBwbGFpblRl
eHRPbmx5TmFtZS5nZXQoKSA6IGZhbHNlQXRvbSgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlID0g
aXNFZGl0YWJsZSA/IHBsYWludGV4dE9ubHlBdG9tKCkgOiBmYWxzZUF0b20oKTsKICAgICBpZiAo
aW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlcyB7
IEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCB2YWx1ZSkgfTsKICAgICAgICAgcGFyc2Vy
U2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCmluZGV4IDY5OTRiMTEzMWUyMzQ4ZTRlZTlkMjVjMDlhY2Q0ZGY2NTg3YzEwM2Yu
LjdiYWVhYTA2NWM3MzQwOThlMmJhMDNkMzMzMDllMzE4ODM5ZWQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAtMzgsMjggKzM4LDE3IEBACiAjaW5jbHVk
ZSAiQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5o
IgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdv
cmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKLX0KLQogY29uc3QgQXRvbVN0cmlu
ZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlw
dGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3Jk
KCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG1haW4oIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIG1haW47Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNj
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtNzIsMTIgKzYxLDYgQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6dHJhbnNsYXRpb25LZXl3b3JkKCkKICAgICByZXR1cm4gdHJhbnNsYXRpb247CiB9CiAKLWNv
bnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNvbW1lbnRhcnk7Ci19Ci0KIEF1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTEyMywxMCArMTA2
LDEwIEBAIHZvaWQgQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpCiAKIGJvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgp
Ci0gICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKKyAgICByZXR1cm4gdmFs
dWUgPT0gYWx0ZXJuYXRpdmVBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUF0
b20oKQogICAgICAgICB8fCB2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKQotICAgICAgICB8
fCB2YWx1ZSA9PSBtYWluS2V5d29yZCgpCisgICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkK
ICAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkKICAgICAgICAgfHwgdmFsdWUg
PT0gdHJhbnNsYXRpb25LZXl3b3JkKCk7CiB9CkBAIC0yMDgsMTMgKzE5MSwxMyBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmtpbmQoKSkgewogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgot
ICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CiAgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpOwpAQCAtMjIzLDcgKzIwNiw3IEBAIHZvaWQgQXVk
aW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKICAgICAgICAgc2V0S2luZChBdWRpb1Ry
YWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVk
aW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CiAgICAg
ICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5oCmluZGV4IDRlMTg2YzE2NjIwN2IwN2E3OGQwZTc2ZWM0ZDNkZDA5MDk5NjE3MjguLmJk
YjdmMWIyMmMwMjE5MTY5Y2MxMzI3ZjQ1MzUxNTIxZmU3ZTdiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC00NiwxMiArNDYsOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVz
Y3JpcHRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5LZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RW5hYmxlZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAppbmRleCAxMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiLi45MTU4YWU0
ZDMwNDE4NzBiNWI3Mzg3OWY4NTgxOWI4MDJkOWM0Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCkBAIC01MCwxOCArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2spOwogCi1jb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRs
ZXMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRp
dGxlczsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVzY3Jp
cHRpb25zS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTEwMyw3ICs5MSw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IGtpbmQsIGNvCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHJhY2tU
eXBlKHR5cGUpCiB7Ci0gICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYg
KGtpbmQgPT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIG1fa2luZCA9IEtpbmQ6OkNhcHRpb25z
OwogICAgIGVsc2UgaWYgKGtpbmQgPT0gY2hhcHRlcnNLZXl3b3JkKCkpCiAgICAgICAgIG1fa2lu
ZCA9IEtpbmQ6OkNoYXB0ZXJzOwpAQCAtMTY3LDkgKzE1NSw5IEBAIGJvb2wgVGV4dFRyYWNrOjpl
bmFibGVkKCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29y
ZCgpKQorICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICBpZiAodmFsdWUg
PT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg3LDcg
KzE3NSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25z
dAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBLaW5kOjpDYXB0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGNhcHRpb25zS2V5d29yZCgpOworICAgICAgICByZXR1cm4gY2FwdGlvbnNB
dG9tKCk7CiAgICAgY2FzZSBLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJuIGNoYXB0ZXJz
S2V5d29yZCgpOwogICAgIGNhc2UgS2luZDo6RGVzY3JpcHRpb25zOgpAQCAtMTk3LDEwICsxODUs
MTAgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiAg
ICAgY2FzZSBLaW5kOjpNZXRhZGF0YToKICAgICAgICAgcmV0dXJuIG1ldGFkYXRhS2V5d29yZCgp
OwogICAgIGNhc2UgS2luZDo6U3VidGl0bGVzOgotICAgICAgICByZXR1cm4gc3VidGl0bGVzS2V5
d29yZCgpOworICAgICAgICByZXR1cm4gc3VidGl0bGVzQXRvbSgpOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3VidGl0bGVzS2V5d29yZCgpOworICAgIHJl
dHVybiBzdWJ0aXRsZXNBdG9tKCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQg
bmV3S2luZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDk0MGMwMjQ2
MmU4NjkzY2I4ODg5ZDAyN2I2YzlhODZlZjJlOTBjZjUuLjJiNjI3NGMyNWY0NWQ2OTQyMGM5NDJi
MTQyZGEzMTAxMzMzNTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1l
bnVPZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVBdXRvbWF0aWNJ
dGVtKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgp
OwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9tU3RyaW5nJik7
CiAKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggYWJmNzU2OTY0YzM3OWU4Nzc0ZGFjZWFiODEyMGUy
OGZjZDE0YWE3Yy4uZTI3MjVjOGU4NDgwOWFjNjcwMmUyZTYzMzIyMGRlODQwY2ZiOGEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBA
IC0xMzcsMTIgKzEzOCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGxpbmVSaWdodEtleXdvcmQo
KQogICAgIHJldHVybiBsaW5lUmlnaHQ7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcmIGF1dG9L
ZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBhdXRv
WChNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpKTsKLSAgICByZXR1cm4gYXV0b1g7Ci19
Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVmPFZUVEN1ZUJveD4gVlRU
Q3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKQEAgLTQ3Nyw3
ICs0NzIsNyBAQCBjb25zdCBTdHJpbmcmIFZUVEN1ZTo6cG9zaXRpb25BbGlnbigpIGNvbnN0CiAg
ICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDoKICAgICAgICAgcmV0dXJuIGxpbmVS
aWdodEtleXdvcmQoKTsKICAgICBjYXNlIFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG86Ci0gICAg
ICAgIHJldHVybiBhdXRvS2V5d29yZCgpOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CkBAIC00OTMsNyArNDg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRU
Q3VlOjpzZXRQb3NpdGlvbkFsaWduKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHBvc2l0
aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQ2VudGVyOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IGxpbmVSaWdodEtleXdvcmQoKSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQg
PSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRv
S2V5d29yZCgpKQorICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHBv
c2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQXV0bzsKICAgICBlbHNlCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0xMzI5LDEzICsxMzI0LDEzIEBAIHZvaWQgVlRUQ3VlOjp0
b0pTT04oSlNPTjo6T2JqZWN0JiBvYmplY3QpIGNvbnN0CiAgICAgb2JqZWN0LnNldFN0cmluZygi
dmVydGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9M
aW5lcyJfcywgc25hcFRvTGluZXMoKSk7CiAgICAgaWYgKG1fbGluZVBvc2l0aW9uKQotICAgICAg
ICBvYmplY3Quc2V0U3RyaW5nKCJsaW5lIl9zLCAiYXV0byJfcyk7CisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoImxpbmUiX3MsIGF1dG9BdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0
LnNldERvdWJsZSgibGluZSJfcywgKm1fbGluZVBvc2l0aW9uKTsKICAgICBpZiAobV90ZXh0UG9z
aXRpb24pCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCAqbV90ZXh0UG9z
aXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3Ms
ICJhdXRvIl9zKTsKKyAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsIGF1dG9B
dG9tKCkpOwogICAgIG9iamVjdC5zZXRJbnRlZ2VyKCJzaXplIl9zLCBtX2N1ZVNpemUpOwogICAg
IG9iamVjdC5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDczZTlkMGYxN2FmNTY1YjdhMmQxZDk5M2M5
MmM3MzdkNzk0ZjQ0YTcuLjA3MWE3NzQyNmRmMDRiNWM0ZjkwODI1YzU1MmUyOTlmNjdiNzVhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0Nv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgpAQCAtNDYsNDIgKzQ3
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gYWx0ZXJuYXRpdmU7
Ci19Ci0KLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpt
YWluS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNpZ247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcm
IFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlczsK
LX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gY29tbWVudGFyeTsKLX0KLQogVmlkZW9UcmFjazo6VmlkZW9UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQogICAgIDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6OlZp
ZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQ
cml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQpAQCAtMTE4
LDEyICs4OSwxMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKIAogYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRp
dmVLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKQotICAg
ICAgICB8fCB2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBt
YWluS2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlQXRvbSgpCisgICAg
ICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY2Fw
dGlvbnNBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkF0b20oKQogICAgICAgICB8fCB2
YWx1ZSA9PSBzaWduS2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IHN1YnRpdGxlc0tleXdv
cmQoKTsKKyAgICAgICAgfHwgdmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpOwogfQogCiB2b2lkIFZp
ZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCkBAIC0yNDEsMjIgKzIx
MiwyMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY2Fw
dGlvbnNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAg
ICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OlNpZ246CiAgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpT
dWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgp
KTsKKyAgICAgICAgc2V0S2luZChzdWJ0aXRsZXNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKLSAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChjb21tZW50
YXJ5QXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CiAgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCmluZGV4IGUxZTBlOWIwMjU4ZDUxMjc2Mjk3MDZkMGVjNDIyYTNj
YmQwM2Y2OTkuLjFlMjJiYmI0NTM3MTJmOGUyYTkxMWI3Mzg4OTlmNDNiM2RiZDY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC00OSwxMiArNDksNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IG1haW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpZ25LZXl3b3Jk
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJv
b2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IGY4ZGRiZDM4MDViNDU4MGE4ZDc2NDQ4OTEyM2NkOTIxZWMy
NjA1ZjQuLmM2OTQ0MDAzODZkY2I5ZjM3OTNkYjc4NzhjZmI0MWZjZTQzOTcyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5j
bHVkZSAiSVNPVlRUQ3VlLmgiCkBAIC05Miw3ICs5Myw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpw
YXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNo
YXIKIAogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50JiBjbGll
bnQsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBQ
QUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIFBBTDo6VVRGOEVuY29kaW5nKCkp
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBhZTAyOWJmYmJl
OTMzODI4YmRiMGM5ZWFiNTk5MmUwMDQ5NDk4NTY5Li4yNDQwZTNhYjcxYTY5YjJjMGM4MjI5Mjcx
NTNkOTgyNzNkMmM1NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC03ODIsNyArNzgzLDcgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JE
b2N1bWVudChEb2MKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHN0eWxlRWxl
bWVudCA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgc3R5bGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dHlwZUF0
dHIsIEF0b21TdHJpbmcoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgY3NzQ29udGVudFR5cGVBdG9tKCkpOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogdGFyZ2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURv
Y3VtZW50cywgZm9yIGV4YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAppbmRleCAyYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwLi45ZmIw
MDUyN2M5MzY1NDE5OWM4Nzk3OWEyMjk4M2YxYWNmMWEwY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgpAQCAtMTAzLDcg
KzEwNCw3IEBAIFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGlu
Z1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQogICAgICAgICByZXR1cm4gIm11
bHRpcGFydC9mb3JtLWRhdGEiX3M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsK
KyAgICAgICAgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpOwogICAgIHJldHVybiAi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggZjA0M2NkNTk3MDU0MTk3
NzYzOGI2ZGY0MjJmYTBmZDM5N2ViN2UxYS4uMmQxYWRmM2Y3ZTA5ZjAzMzAyYjYxZGZlZmQ2Yjc5
OTZhMDJhOWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIu
aCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKLSAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXBsYWNlbWVudFJlc3BvbnNlIHsgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgInRleHQvcGxh
aW4iX3MsIDAsICJVVEYtOCJfcyB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2Vt
ZW50UmVzcG9uc2UgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCB0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgMCwgIlVURi04Il9zIH07CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2Vt
ZW50RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCks
IHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAwNjEyOGI2YTNhM2MzNzMx
ZTFmYjcxNjlkNGU5ZjE1MzFlYzhkOWIyLi41ZTkzZGY2MGYyNDBmMzQ0YTZiYzBlY2IzM2E5YzE0
YTg3NzZkYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC0zMjksNyArMzMwLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNob3VsZFByZXBlbmRCT00oY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogLy8gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcv
I3V0Zi04LWRlY29kZQogU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgYXV0byBk
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRG
LTgiKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUodGV4
dFBsYWluQ29udGVudFR5cGVBdG9tKCksICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5k
Qk9NKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJm
IiwgMyk7CiAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKaW5kZXggY2RlN2FlNGNjMTBlZWY1YTZiMzg0ODI3MTA1N2IzNzA4ZjViNTczNS4uZjU5
ZWNmYzZjMDk2ZDQ0MDIwZWNkMzI2MmRjYTJkMjU0MjBmYWUzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2lmIEVOQUJMRShNSFRNTCkKICNpbmNsdWRlICJNSFRNTFBhcnNlci5oIgogCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJNSFRNTEFyY2hpdmUuaCIK
ICNpbmNsdWRlICJNSU1FSGVhZGVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpA
QCAtMTE5LDcgKzEyMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKIHZvaWQgTUhUTUxQYXJzZXI6
OmFkZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJj
aGl2ZSogYXJjaGl2ZSkKIHsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7Ci0gICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBtaW1lVHlwZSA9PSAidGV4dC9jc3MiKSB7Cisg
ICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
KG1pbWVUeXBlKSB8fCBtaW1lVHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKSkgewogICAgICAg
ICBtX3Jlc291cmNlcy5hcHBlbmQocmVzb3VyY2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IDE0Y2NkMmEzYjlmMzE3ZTVlMjRiNmVkN2Q2ZTE1YzVlY2E2OWVkMjkuLmY1MmE5
MmQwM2U1MzI4YzZkOTdjNTFjMGM1MTM3OGJmNjJhZGM4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGll
bnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKQEAgLTQwLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVK
YXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpDU1NTdHls
ZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9zLCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRv
bSgpLCByZXF1ZXN0LmNoYXJzZXQoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCBjMTQ0MzAyZjAzYmQ5
NTU2OWM2YzIwNDc0M2FlZGI4YmFlYWFlMzI4Li5iYjhhZTA2M2QwN2Y1ZTg1MWJkMmVlOTc1ZDFk
MmU2NmRhY2NhNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBFTkFCTEUoTUFU
SE1MKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TWFwRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAxMjUzYjU4MDA1YjUyZmJhMjQxMDgyODYxMjdj
NGQxMzJmMGQwNDVjLi45NDAzZTY1MmM4YjI4Yzc2MWQ0ODYwMjJkNzNkMjRmYzQ5NGMyZGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3Qu
aCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCkBAIC03MzAsNyAr
NzMxLDcgQEAgc3RhdGljIFN0cmluZyBhZGRBdWRpb1RyYWNrS2luZERpc3BsYXlOYW1lSWZOZWVk
ZWQoY29uc3QgQXVkaW9UcmFjayYgdHJhY2ssIGNvbnMKICAgICBpZiAoKHRyYWNrLmtpbmQoKSA9
PSBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKSB8fCB0cmFjay5raW5kKCkgPT0gQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpICYmICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tL
aW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKSkpCiAgICAgICAgIHJldHVybiBhZGRBdWRpb1Ry
YWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCh0ZXh0KTsKIAotICAgIGlmICh0cmFjay5raW5kKCkg
PT0gQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSAmJiAhdGV4dC5jb250YWlucyhhdWRp
b1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpKSkKKyAgICBpZiAodHJhY2sua2luZCgp
ID09IGNvbW1lbnRhcnlBdG9tKCkgJiYgIXRleHQuY29udGFpbnMoYXVkaW9UcmFja0tpbmRDb21t
ZW50YXJ5RGlzcGxheU5hbWUoKSkpCiAgICAgICAgIHJldHVybiBhZGRBdWRpb1RyYWNrS2luZENv
bW1lbnRhcnlTdWZmaXgodGV4dCk7CiAKICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKaW5kZXggOGQ3ZDllNjZkN2JjMWQ0MjlhYTVkN2ZmNDY2ODUwNDAwOGFh
Y2Q0ZC4uZDFiZDZkZjVjMzQ1Mjk5OGJkM2RlMTQ4YzA3NmQwOTQ5NzNlMTU1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFdmVu
dFNvdXJjZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgpAQCAtNTksNyArNjAsNyBAQCBpbmxpbmUgRXZlbnRTb3VyY2U6OkV2ZW50U291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLAogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV91cmwodXJsKQogICAgICwgbV93aXRo
Q3JlZGVudGlhbHMoZXZlbnRTb3VyY2VJbml0LndpdGhDcmVkZW50aWFscykKLSAgICAsIG1fZGVj
b2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJVVEYtOCIp
KQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSh0ZXh0UGxhaW5D
b250ZW50VHlwZUF0b20oKSwgIlVURi04IikpCiAgICAgLCBtX2Nvbm5lY3RUaW1lcigmY29udGV4
dCwgKnRoaXMsICZFdmVudFNvdXJjZTo6Y29ubmVjdCkKIHsKICAgICBtX2Nvbm5lY3RUaW1lci5z
dXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDkzNThiODQ2NGJiNTkzOTEw
NWE2ODk4NDc2ZmY2OTFhZWYzYzM3ODAuLmJjY2RlNTgxNTEwY2EyZmIxZjZjN2ZkMGQ4ZDY0NDYw
ODU3YzdlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRl
ICJDb25zdGFudFByb3BlcnR5TWFwLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKQEAgLTIwNjYsNyArMjA2Nyw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHlsZVNo
ZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpKS0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgcmV0dXJuIG1f
dXNlclN0eWxlU2hlZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmlu
ZGV4IDdmOWUxYjdhMjcwZDJiNWRiNjFmZTk4ZDdiMTA1MDBhN2U2Y2VlMTYuLjUwODk0ZTBkMjkw
Y2QzY2U1ZjIxOGJjNmYwODBiZGY4ODU4Yjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5o
IgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMu
aCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0y
NjAsNyArMjYxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5k
IGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRl
eHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFT
U0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5l
bmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgY3NzQ29udGVudFR5
cGVBdG9tKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4
dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAg
ICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAppbmRleCA0MzcxMjgwNDE5YzJlYWFiODk4ODJmMTRhMzRjYTkyNTc5
MjVmYzk4Li43ZGIzYjliYjYxZmJmZjZiOTMxY2JiNTk3ZTU4ZWFhNWJlYzRlMTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYyLDcgKzM2Myw3IEBA
IFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgaW50IHBhCiAgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9y
IHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUs
ICJtYXJnaW4tbGVmdCIpKSB7CiAgICAgICAgIGlmIChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0
bygpKQotICAgICAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1
dG9BdG9tKCk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVm
dCgpLnZhbHVlKCkpOwogICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5l
LWhlaWdodCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBkZmEz
ZTgyYTYyODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyLi5iZTIzODM0ZDdiZTQ1OTJmZmRj
MzI2MmVjM2FlYzdmZjg2NjFjYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
b2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5n
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NXYXJtaW5nLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5o
IgpAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFByb2Nlc3NXYXJt
aW5nOjppbml0aWFsaXplTmFtZXMoKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAg
ICBRdWFsaWZpZWROYW1lOjppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMThlNDJjOTlhMzIzMGUxMGFiZWUzNWJmNDUzNDI3NjBlZWY0YWE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCkBA
IC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlQXRvbURh
dGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9B
dG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y2FwdGlvbnNBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gY29tbWVudGFyeUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbWFpbEF0b21EYXRhOwor
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21E
YXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5
QXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IG1haW5BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gbm9uZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBvZmZBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb25BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcGxhaW50ZXh0T25seUF0b21EYXRhOworTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzZWFyY2hBdG9tRGF0YTsKK01h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURh
dGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRp
dGxlc0F0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB0ZWxBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gdGV4dEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cnVlQXRvbURhdGE7CitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCit2
b2lkIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpCit7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGluaXRpYWxpemVLZXk7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwg
W10geworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHNvIHRo
aXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZmlyc3QuCisg
ICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgICAgICBhbHRlcm5hdGl2ZUF0b21EYXRh
LmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGF1dG9BdG9tRGF0YS5jb25zdHJ1Y3RXaXRo
b3V0QWNjZXNzQ2hlY2soImF1dG8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgICAgIGNhcHRpb25zQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJj
YXB0aW9ucyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY29t
bWVudGFyeUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiY29tbWVudGFyeSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY3NzQ29udGVudFR5
cGVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvY3NzIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBlYWdlckF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIGVtYWlsQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0No
ZWNrKCJlbWFpbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAg
ZmFsc2VBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBsYXp5QXRvbURhdGEuY29uc3Ry
dWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJsYXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICBtYWluQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNr
KCJtYWluIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBub25l
QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJub25lIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBvZmZBdG9tRGF0YS5jb25zdHJ1Y3RXaXRo
b3V0QWNjZXNzQ2hlY2soIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICAgICAgb25BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBwbGFpbnRleHRPbmx5QXRv
bURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJwbGFpbnRleHQtb25seSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgcmVzZXRBdG9tRGF0YS5jb25z
dHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgICAgICBzZWFyY2hBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNz
Q2hlY2soInNlYXJjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgc3VibWl0QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJtaXQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN1YnRpdGxlc0F0b21E
YXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICB0ZWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRo
b3V0QWNjZXNzQ2hlY2soInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICAgICAgdGV4dEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvcGxhaW4i
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRydWVBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHVybEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nl
c3NDaGVjaygidXJsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0p
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29tbW9uQXRvbVN0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjQ2NDA3ODg2OTE5NWFkNjY3OTEyMTMy
YWMxOTI5NmFjNjJiZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29tbW9uQXRvbVN0cmluZ3MuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZXh0ZXJuIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRpdmVB
dG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IGF1dG9BdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IGNhcHRpb25zQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7Citl
eHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3ND
b250ZW50VHlwZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gZWFnZXJBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRvbURhdGE7CitleHRlcm4gTWFp
blRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRh
OworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bGF6eUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gbWFpbkF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb2ZmQXRvbURhdGE7CitleHRlcm4g
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRh
OworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
cGxhaW50ZXh0T25seUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcmVzZXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21EYXRhOworZXh0ZXJu
IE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRv
bURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBzdWJ0aXRsZXNBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHRlbEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEF0b21EYXRhOworZXh0ZXJuIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCitpbmxpbmUgY29uc3Qg
QXRvbVN0cmluZyYgYWx0ZXJuYXRpdmVBdG9tKCkgeyByZXR1cm4gYWx0ZXJuYXRpdmVBdG9tRGF0
YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9BdG9tKCkgeyByZXR1cm4g
YXV0b0F0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY2FwdGlvbnNB
dG9tKCkgeyByZXR1cm4gY2FwdGlvbnNBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0
b21TdHJpbmcmIGNvbW1lbnRhcnlBdG9tKCkgeyByZXR1cm4gY29tbWVudGFyeUF0b21EYXRhLmdl
dCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY3NzQ29udGVudFR5cGVBdG9tKCkgeyBy
ZXR1cm4gY3NzQ29udGVudFR5cGVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21T
dHJpbmcmIGVhZ2VyQXRvbSgpIHsgcmV0dXJuIGVhZ2VyQXRvbURhdGEuZ2V0KCk7IH0KK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbEF0b20oKSB7IHJldHVybiBlbWFpbEF0b21EYXRhLmdl
dCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgZmFsc2VBdG9tKCkgeyByZXR1cm4gZmFs
c2VBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGxhenlBdG9tKCkg
eyByZXR1cm4gbGF6eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYg
bWFpbkF0b20oKSB7IHJldHVybiBtYWluQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBB
dG9tU3RyaW5nJiBub25lQXRvbSgpIHsgcmV0dXJuIG5vbmVBdG9tRGF0YS5nZXQoKTsgfQoraW5s
aW5lIGNvbnN0IEF0b21TdHJpbmcmIG9mZkF0b20oKSB7IHJldHVybiBvZmZBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIG9uQXRvbSgpIHsgcmV0dXJuIG9uQXRvbURh
dGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5QXRvbSgp
IHsgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0
b21TdHJpbmcmIHJlc2V0QXRvbSgpIHsgcmV0dXJuIHJlc2V0QXRvbURhdGEuZ2V0KCk7IH0KK2lu
bGluZSBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hBdG9tKCkgeyByZXR1cm4gc2VhcmNoQXRvbURh
dGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXRBdG9tKCkgeyByZXR1
cm4gc3VibWl0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0
aXRsZXNBdG9tKCkgeyByZXR1cm4gc3VidGl0bGVzQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0ZWxBdG9tKCkgeyByZXR1cm4gdGVsQXRvbURhdGEuZ2V0KCk7IH0K
K2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0QXRvbSgpIHsgcmV0dXJuIHRleHRBdG9tRGF0
YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbkNvbnRlbnRUeXBl
QXRvbSgpIHsgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGEuZ2V0KCk7IH0KK2lu
bGluZSBjb25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5n
ZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHVybEF0b20oKSB7IHJldHVybiB1cmxB
dG9tRGF0YS5nZXQoKTsgfQorCitXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVDb21tb25B
dG9tU3RyaW5ncygpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYz
ZWQ1ZGY5NTguLjQ1Y2NiNmIzOTY4ODJlMGVlYTI2YzExYmRmYjc2ZTFmYTJkYzVlNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDQs
NyArNDUsNyBAQCBQYXN0ZWJvYXJkQnVmZmVyOjp+UGFzdGVib2FyZEJ1ZmZlcigpID0gZGVmYXVs
dDsKIAogYm9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0
eXBlID09ICJ0ZXh0L2h0bWwiIHx8IHR5cGUgPT0gInRleHQvdXJpLWxpc3QiOworICAgIHJldHVy
biB0eXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHx8IHR5cGUgPT0gInRleHQvaHRt
bCIgfHwgdHlwZSA9PSAidGV4dC91cmktbGlzdCI7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2Fu
RXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3Bw
CmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjVlYzJkOTA3
MWIyZGQyZGVkZDYxYjQ4ZDQ4OWQ3MGZkYTdlY2UwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3Jp
dGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6
d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7
Ci0gICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0KTsKKyAg
ICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHRl
eHQpOwogfQogCiB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5jcHAKaW5kZXggYzcxMjAxNjEwOTU4N2FkNWRjNGM5ZTFjOWEzNjFkYmU4ZjY5MzMyYS4uOTRm
NDFmNzRmM2U2N2ZhM2YwZGNlOWE2YTdlOTBlYWFlMmE0MDhiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMjksNyArMTMwLDcgQEAgYm9v
bCBBbmltYXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIG90aGVyLCBib29s
IG1hdGNoUHJvcGVydGllcykgY28KIAogYXV0byBBbmltYXRpb246OmluaXRpYWxOYW1lKCkgLT4g
Y29uc3QgTmFtZSYKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmFtZT4gaW5pdGlhbFZh
bHVlIHsgTmFtZSB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJub25lIiksIHRydWUgfSB9Owor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBpbml0aWFsVmFsdWUgeyBOYW1lIHsgbm9u
ZUF0b20oKSwgdHJ1ZSB9IH07CiAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGMw
OGUxZmYxMWU3YjcxNWI3YjlmMDhmZmJkYTc1M2Q5MmY5Mjk4OTkuLjhhMDZhYzZiZDI4NTk3MTk1
OGUyZGY0MjEzMzY1NDhhYWM0MGI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFR5cGUuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJGb3VyQ0MuaCIKQEAgLTMzMSwxMiArMzMyLDYgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogICAgIHJldHVybiBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKLXsKLSAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQ
bGFpbigidGV4dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICByZXR1cm4gdGV4dFBsYWluOwotfQotCiBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UqIE1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLmdldCgpOwpAQCAtNDg1LDcgKzQ4MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
CiAKICAgICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcgb3IgaXMgbm90IG1lYW5pbmdm
dWwsIHRyeSB0byBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4KICAgICBBdG9tU3RyaW5nIGNv
bnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKLSAgICBpZiAoY29u
dGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgeworICAgIGlmIChjb250
YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRT
dHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKSB7
CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICAgICAgbV9jb250
ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkp
KTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0KaW5kZXggZWIyOWYyNThmZDE4M2U0MDIwNTk1ZWY2YWQ4NzExNDcw
YzQ3MTk0Zi4uOWNkYjdkZmRkOTdhMTBhMDEzZDFiZDk4NDg2Mjc5NTJlYTk0NThjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIK
QEAgLTY5Miw2ICs2OTMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICAv
LyBJbml0aWFsaXplIEF0b21TdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFdURjo6QXRv
bVN0cmluZzo6aW5pdCgpOworICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAg
ICAgLy8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJIHRocmVhZCBz
byB0aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQgaXQncyB0aHJl
YWQtc3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA2NjcwOGVj
MDAxNGUwZTAyNzI5ODU4MGM4N2QwNzljODZiN2QzODViLi4yMmRhYmViNDJhMDQ4YmY2ZDRlYzhk
OTM1NTJlNTRjYWJkMzUwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5n
cy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJO
YW1lcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlP
Uy5oCmluZGV4IGYzMDI4NzgwMmFlMjQwNjlmNWJhMjI4MjM1MDY5OWU5MDM2MjA4YTUuLmRjZTFi
Yjg3NTdmN2VmZjE3ZGZiMDJkYmQzOTZlYzY5YWI1ODA2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlP
Uy5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC00MiwxMCArNDMsMTAgQEAgaW5saW5lIGJvb2wgc2hvdWxkVXNlUXVpY2tM
b29rRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoKCFNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpICAgICAg
IC8vIGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdlIE1JTUUgdHlwZXMKICAgICAgICAgICYmICFN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpICAgICAg
IC8vIGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlNRSB0eXBlcwotICAgICAgICAgJiYgbWltZVR5
cGUgIT0gInRleHQvY3NzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWdub3JlIGNzcworICAgICAgICAgJiYgbWltZVR5cGUgIT0gY3NzQ29udGVudFR5cGVBdG9tKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIGNzcwogICAgICAgICAgJiYgbWlt
ZVR5cGUgIT0gImFwcGxpY2F0aW9uL3BkZiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWdub3JlIHBkZgogICAgICAgICAgKQotICAgICAgICB8fCBtaW1lVHlwZSA9PSAidGV4dC9w
bGFpbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGtlZXAgdGV4
dC9wbGFpbiB3aGljaCBpcyB0b28gZ2VuZXJpYyBhbmQgY2FuIGhpZGUgc29tZXRoaW5nCisgICAg
ICAgIHx8IG1pbWVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpICAgICAgICAgICAg
ICAgICAgICAgICAvLyBidXQga2VlcCB0ZXh0L3BsYWluIHdoaWNoIGlzIHRvbyBnZW5lcmljIGFu
ZCBjYW4gaGlkZSBzb21ldGhpbmcKICAgICAgICAgfHwgKG1pbWVUeXBlID09ICJ0ZXh0L3htbCIg
fHwgbWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIpKSAgIC8vIGFuZCBrZWVwIFhNTCB0eXBl
cyBmb3IgLm1vYmlsZWNvbmZpZyBmaWxlcwogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcAppbmRleCBjODRkNDkwYzMyZDhjY2M3Yjc0ZjQ0N2Jm
YjA5NzY1MDI3YmE3N2Q4Li5jNDQ0MTJhZDk0YTU5OWFjNjAzMWYxYmJmY2MzODZhMjBlNjM0YTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJDU1NBbmltYXRpb24uaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIkNTU1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCkBAIC0yNTcsNyArMjU4LDcgQEAgYm9v
bCBTdHlsZWFibGU6OmFuaW1hdGlvbkxpc3RDb250YWluc05ld2x5VmFsaWRBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uTGlzdCYgYW4KIAogICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0
aW9ucykgewogICAgICAgICBhdXRvJiBuYW1lID0gYW5pbWF0aW9uLT5uYW1lKCkuc3RyaW5nOwot
ICAgICAgICBpZiAobmFtZSAhPSAibm9uZSIgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtleWZyYW1l
RWZmZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAmJiBrZXlm
cmFtZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQoKSwgbmFt
ZSkpCisgICAgICAgIGlmIChuYW1lICE9IG5vbmVBdG9tKCkgJiYgIW5hbWUuaXNFbXB0eSgpICYm
IGtleWZyYW1lRWZmZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1l
KSAmJiBrZXlmcmFtZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5n
ZXQoKSwgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMwMiw3
ICszMDMsNyBAQCB2b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBhdXRvJiBhbmltYXRpb25OYW1lID0gY3VycmVudEFuaW1hdGlv
bi0+bmFtZSgpLnN0cmluZzsKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1lID09ICJub25l
IiB8fCBhbmltYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChhbmltYXRpb25O
YW1lID09IG5vbmVBdG9tKCkgfHwgYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICgha2V5ZnJhbWVzUnVsZUV4aXN0c0Zv
ckFuaW1hdGlvbihlbGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25OYW1l
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAK
aW5kZXggNGI2YzUzMGJlOWRjZDBlZjRlNTIwYThmMTBmMmJjNDZhMTM1ZmRhYi4uYTY1ZWMxYzhl
ODEzZTQ2MmFmOWNlNDE0MTFlOTIyODAwY2EwMGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgpAQCAtMTEwLDEwICsxMTEsOSBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dAogICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbCgiYXV0byIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9SZXZlcnNlKCJhdXRvLXJldmVyc2UiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm90
YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKLSAgICBpZiAocm90YXRl
ID09IGF1dG9WYWwpCisgICAgYXV0byYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpy
b3RhdGVBdHRyKTsKKyAgICBpZiAocm90YXRlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHJldHVy
biBSb3RhdGVBdXRvOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1JldmVyc2UpCiAgICAgICAgIHJl
dHVybiBSb3RhdGVBdXRvUmV2ZXJzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAppbmRleCA1MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYwZTIwNDYxODRl
Li5lNzdhMTU3MzMzNGQ0MzNiNGRjYWZhNjAxODA3ZjMxM2Q2Y2U2NmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0zMTksMTggKzMxOSwyMiBAQCBT
dHJpbmcgU1ZHQW5pbWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgY29uc3QKICAgICByZXR1cm4g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZnJvbUF0dHIpOwogfQog
Ci1ib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAorc3RhdGljIGNv
bnN0IEF0b21TdHJpbmcmIHN1bUF0b20oKQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VtKCJzdW0iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHN1bTsKK30KKworYm9vbCBTVkdBbmltYXRpb25F
bGVtZW50Ojppc0FkZGl0aXZlKCkgY29uc3QKK3sKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFkZGl0aXZlQXR0
cik7Ci0gICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0
aW9uTW9kZTo6Qnk7CisgICAgcmV0dXJuIHZhbHVlID09IHN1bUF0b20oKSB8fCBhbmltYXRpb25N
b2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6Qnk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVu
dDo6aXNBY2N1bXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKLSAgICByZXR1
cm4gdmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25Nb2RlOjpUbzsK
KyAgICByZXR1cm4gdmFsdWUgPT0gc3VtQXRvbSgpICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmlt
YXRpb25Nb2RlOjpUbzsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1RhcmdldEF0
dHJpYnV0ZUNTU1Byb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmM2FkMTU3MDExNmNlMmEwN2U1MTQxMDEx
MGI2ZGJhZDIyODc5NzgzLi43YzE2NjQzZWU5ZDY5N2QxMGQ0ZDYzNzgxZjFjZTM4ZjUyZDZlZTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmlu
Z3MuaCIKICNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggOWFkMWU0YzM4YWU1N2RiZDhl
ZjNmMmNkNGZiNmU2OWRkOWQyNDJiYi4uODk5MmVjOTkzNjhkZTNiYWNkNTc4ODZmMzhkMGJmM2U4
MWI0Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKICNpbmNs
dWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtNDAsNyAr
NDEsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgICAg
IGNhc2UgRWRnZU1vZGVUeXBlOjpXcmFwOgogICAgICAgICAgICAgcmV0dXJuICJ3cmFwIl9zOwog
ICAgICAgICBjYXNlIEVkZ2VNb2RlVHlwZTo6Tm9uZToKLSAgICAgICAgICAgIHJldHVybiAibm9u
ZSJfczsKKyAgICAgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgICAgICB9CiAKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01Myw3ICs1NCw3IEBAIHN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+IHsKICAgICAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5
cGU6OkR1cGxpY2F0ZTsKICAgICAgICAgaWYgKHZhbHVlID09ICJ3cmFwIikKICAgICAgICAgICAg
IHJldHVybiBFZGdlTW9kZVR5cGU6OldyYXA7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAibm9uZSIp
CisgICAgICAgIGlmICh2YWx1ZSA9PSBub25lQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIEVk
Z2VNb2RlVHlwZTo6Tm9uZTsKICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6VW5rbm93bjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCmluZGV4IDA2NzAzNDE1ZTg5OTVk
OGViNDU5ODAzMGI3YjMwZmMxNDliOThkMDAuLmFmOTYzYzI4ZDA2ZDU5ZmM0Nzc3ODIwYzA1ZDM1
MzQ2YjM3ZGQxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMu
aCIKIApAQCAtNzUsMTEgKzc2LDYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtl
clVuaXRzVHlwZT4gewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
TWFya2VyT3JpZW50VHlwZT4gewotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0cmluZygp
Ci0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRv
U3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8iKTsKLSAgICAgICAgcmV0dXJu
IGF1dG9TdHJpbmc7Ci0gICAgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0YXJ0UmV2
ZXJzZVN0cmluZygpCiAgICAgewogICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
ImF1dG8tc3RhcnQtcmV2ZXJzZSIpOwpAQCAtODgsNyArODQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdo
ZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHTWFya2VyT3JpZW50QW5nbGU7IH0KICAgICBzdGF0
aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ICAgIHsKLSAgICAgICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkpCisgICAgICAgIGlmIChz
dHJpbmcgPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRB
dXRvOwogICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKSkKICAg
ICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlOwpAQCAtOTcs
NyArOTMsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4g
ewogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyT3JpZW50VHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKLSAgICAgICAg
ICAgIHJldHVybiBhdXRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsK
ICAgICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0b1N0YXJ0UmV2ZXJzZSkKICAg
ICAgICAgICAgIHJldHVybiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCk7CiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRl
eCAwOGNmNGIwM2MyNTE1YjYyMDgwMDA1NzI1ZjAyMjkyM2I0ZDZiN2FiLi42YTAzMWIwYmM0YjI0
YTVkYjc0ODM4ZTdhZjAwNWQ5NTEwNmM0NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5o
IgogCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJp
bmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5l
cy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC02NSw5ICs2Niw4IEBAIHZvaWQgU1ZHU3R5
bGVFbGVtZW50OjpzZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25zdCBBdG9tU3Ry
aW5nJiBTVkdTdHlsZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2Nz
cyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9tU3Ry
aW5nJiBuID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7Ci0gICAgcmV0dXJuIG4u
aXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOworICAgIGF1dG8mIHR5cGVWYWx1ZSA9
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOworICAgIHJldHVybiB0eXBlVmFsdWUu
aXNOdWxsKCkgPyBjc3NDb250ZW50VHlwZUF0b20oKSA6IHR5cGVWYWx1ZTsKIH0KIAogdm9pZCBT
VkdTdHlsZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCA2YTIyNDhjN2Y4NWE2MDQ0NGQ2N2Ri
N2E5MWE3ZDhlYjliY2MxZjAwLi41ZGNlZGUzMTMzM2UwMjgzYzJjZjYwMDAyOTk4ZTVjMWJjMzU3
MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0yMCw2ICsy
MCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RleHRDb250ZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtNzcsNyArNzgsNyBAQCBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gewogICAgICAgICBjYXNl
IFNWR1RleHRQYXRoU3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKICAgICAgICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOgotICAgICAgICAgICAg
cmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgICAg
IGNhc2UgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1cm4gImV4YWN0
Il9zOwogICAgICAgICB9CkBAIC04OCw3ICs4OSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiB7CiAKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFj
aW5nVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewotICAgICAgICBp
ZiAodmFsdWUgPT0gImF1dG8iKQorICAgICAgICBpZiAodmFsdWUgPT0gYXV0b0F0b20oKSkKICAg
ICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOwogICAgICAgICBpZiAodmFs
dWUgPT0gImV4YWN0IikKICAgICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdFeGFj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAK
aW5kZXggMTZlYWI2NTIwZTg4YmNjYzM1Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNS4uNGNjNWRkNzIz
YjhiYTkxOGMxZTU2OTVmMjg2N2NjZmM3ZTllYzZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHN0YXRp
YyBTTUlMRXZlbnRTZW5kZXImIHNtaWxFbmRFdmVudFNlbmRlcigpCiAgICAgcmV0dXJuIHNlbmRl
cjsKIH0KIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluZGVmaW5pdGVBdG9tKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVm
aW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gaW5kZWZpbml0ZVZhbHVlOworfQorCiAvLyBUaGlzIGlzIHVzZWQgZm9y
IGR1cmF0aW9uIHR5cGUgdGltZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBuZWdhdGl2ZS4KIHN0YXRp
YyBjb25zdCBkb3VibGUgaW52YWxpZENhY2hlZFRpbWUgPSAtMS47CiAgICAgCkBAIC0zMzgsOSAr
MzQ0LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdW
aWV3IGRhdGEpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCiAgICAg
YXV0byBwYXJzZSA9IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5k
ZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAocGFy
c2UgPT0gaW5kZWZpbml0ZVZhbHVlLmdldCgpKQorICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRl
QXRvbSgpKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKIAogICAgIGRv
dWJsZSByZXN1bHQgPSAwOwpAQCAtNjk4LDggKzcwMiw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVt
ZW50OjpyZXBlYXRDb3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmlu
aXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICh2YWx1ZSA9
PSBpbmRlZmluaXRlVmFsdWUpCisgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVBdG9tKCkpCiAg
ICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CiAgICAg
ZG91YmxlIHJlc3VsdCA9IHZhbHVlLnN0cmluZygpLnRvRG91YmxlKCZvayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCBlNzc2
NWFjY2U4NDgzMzE1ZDNiNzQ0MmM4MDA5ZDkzYmQ5MjcyNDBiLi42MGE2OTkwYjJkZDUwOGE3OTc1
Y2VjMTM2MWU2YTlkN2RiMDFmMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJD
U1NQYXJzZXIuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFsaXph
dGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYTE2ZGZjNGEyMmRiMDIzNTYyMGE3
YjlmN2U5Yzc4ZDE5N2JiOTA3Ni4uNmRhZDJkNGZlMzg5YWJlZGU5M2M5ZjY0MDdiYjZhOTZhNjRl
Y2IzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29u
dGV4dERhdGEsCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5n
Ojppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiB9CiAKIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoVmFsdWUuY3BwCmluZGV4IGQyMjk1NGJiYTNmMWNlMGI4YTFkZTk2YmE2MDIxNjkz
ZjQ4MTMzOTEuLmMzMDViYzBiNWUyNzg0NzVhYmJjMjQ3NmI4YjIyMmNmNDllYmRjMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJYUGF0aFZhbHVlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIlhQYXRoRXhwcmVzc2lvbk5vZGUuaCIKICNpbmNsdWRlICJYUGF0
aFV0aWwuaCIKICNpbmNsdWRlIDxsaW1pdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAKaW5kZXggMTY1OGZjMDAwZDFmNzgwNzUyOTZlODgzMDY1MTk0MWY2MjZjMjBjNi4u
N2FmZDg5MzhmYzQ0Njg3NjBhNzg5NzA4NTU2ZGU2ZWEzMzI5Y2U2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1v
bkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZW1vcnlSZWxlYXNlLmg+CkBAIC0yMjcsNiArMjI4LDcgQEAgdm9pZCBHUFVQcm9j
ZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBHUFVQcm9jZXNzOjpp
bml0aWFsaXplR1BVUHJvY2VzczoiLCB0aGlzKTsKICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVu
dFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIGF1dG8mIG1lbW9y
eVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExvd01lbW9yeUhhbmRsZXIoW3RoaXNdIChDcml0
aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNTMwY2JjZDVhMDZl
MDQyZGI2NjVhNTA4YTBjNmIwY2Q0ZDE4MWYxOS4uZDgxYWQ4OTEyZTJhY2E2ZDk3ZmMyNDgzOGVm
NTQ0NWVkOTkxMTEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3Ry
aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9ETlMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpA
QCAtMzE4LDYgKzMxOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBXVEY6OlRo
cmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6
OmluaXQoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAog
ICAgIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBwYXJhbWV0ZXJzLnNob3VsZFN1
cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVBy
ZXNzdXJlSGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YktpdDJJbml0aWFsaXplQ29jb2EubW0KaW5kZXggYzI4MGNmZmUzOTgzZmZjOWRmY2M1ZjUxNjRi
MzRjNjQ0YjMyYWY2Zi4uYjRkOTEyMWJjYmU3M2M3ZGQ5NDVjYjEwN2RhMDZhZDBiMjIyMjVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6
ZUNvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5o
IgogCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVKSVRPcGVyYXRpb25zLmg+CiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHd0Zi9HZW5lcmF0
ZVByb2ZpbGVzLmg+CkBAIC01MCw2ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkluaXRpYWxpemF0
aW9uQ29kZSh2b2lkKiA9IG51bGxwdHIpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KFtOU1RocmVhZCBpc01haW5UaHJlYWRdLCAiSW5pdGlhbGl6ZVdlYktpdDIgc2hvdWxkIGJlIGNh
bGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQiKTsKIAogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEluaXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAppbmRleCBlNWMw
OTZmMjhkMjhhYmZmNDNjOTM3MTRmNjVkZTdiZjMyYTMyY2RhLi4wM2ZjYzExMTlmYWIyYWIxY2Iw
OTdkYjI4MGNlMTgxOThjNzVhZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJLaXQySW5pdGlhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0Mklu
aXRpYWxpemUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dJbml0aWFsaXph
dGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUpJVE9wZXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvR2VuZXJhdGVQcm9maWxlcy5oPgpAQCAtNDUsNiArNDYs
NyBAQCB2b2lkIEluaXRpYWxpemVXZWJLaXQyKCkKICAgICBKU0M6OmluaXRpYWxpemUoKTsKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwor
ICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgV1RGOjpS
ZWZDb3VudGVkQmFzZTo6ZW5hYmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKaW5kZXggN2Y2OGZkMzIzNjdlOTViOTdjNTM1M2ZmMjhiY2NjMWQ5ZjE1ODhkNS4uNzdi
OWE1ZWEzYmVlYTU1ZGQxYTY3MjA4YTE5MDA4MjRhOTA5Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVM
aXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuaD4KQEAgLTU0Niw2ICs1NDcsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpjb21waWxlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgV1RGOgog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgp
OworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIFdlYkNv
cmU6OlF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICAKICAgICBhdXRvIHBhcnNlZFJ1bGVzID0g
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoanNvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKaW5kZXggODc1NTQ4YmM0ZmE1YzYy
Y2RiMjAzYWNhOWUxYzVjYjdiZTUyNDViYS4uZjZhNzc2ZmI1MGI2YWMwYWEzMDczN2U2OTdiOWIx
NmUwODQ5NDhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0R3Jh
cGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zv
bnRDYXNjYWRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250RGVzY3JpcHRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgpAQCAtNDcsNiArNDgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBGb250Q2FzY2FkZSBtYWtlRm9udChjb25zdCBXZWJGb250
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIFN0cmluZyBm
b250RmFtaWx5U3RyaW5nKGRlc2NyaXB0aW9uLmZhbWlseSwgZGVzY3JpcHRpb24uZmFtaWx5TGVu
Z3RoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ1ZTZjMTg3YzdkODUwOTE2ZDEzNmM5MWJmMGU4NTI1NTNiZGNjNWEuLmY4YmYyMDViZDBm
YzgwMzRkN2E5MGFjZmIyOWZjMjkwOTRmMDE5NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21T
dHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpt
YWtlQmFja2VuZCk6CisKIDIwMjItMDQtMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHJlY2VudCBkZXByZWNhdGlvbiB3YXJuaW5n
cyBvbiBpT1MuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCA3YjY4Njk3ZTY0ZmVkZmU4NjljNzE4OThiZGYz
ZTNlNGJiNjI5ZDQ5Li43Y2Y2YjcyNTUxZmE0Mzc0YTdhMTAzNjM5YmQyZWVhY2U3ZGZlZTZlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVu
c2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db21iaW5lZFVSTEZpbHRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1v
bkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaD4KQEAgLTIxMyw2ICsyMTQsNyBA
QCBzdGF0aWMgUmVzb3VyY2VMb2FkSW5mbyByZXF1ZXN0SW5Ub3BBbmRGcmFtZVVSTHMoQVNDSUlM
aXRlcmFsIHVybCwgQVNDSUlMaXRlcmFsCiBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kIG1ha2VCYWNrZW5kKFN0cmluZyYmIGpzb24pCiB7CiAgICAgQXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
ICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKGpzb24pKTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kIGJhY2tlbmQ7CiAgICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJ0
ZXN0RmlsdGVyIl9zLCBXVEZNb3ZlKGV4dGVuc2lvbiksIHsgfSk7Cg==
</data>
<flag name="commit-queue"
          id="486798"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458038</attachid>
            <date>2022-04-20 21:25:52 -0700</date>
            <delta_ts>2022-04-21 08:24:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220420212551.patch</filename>
            <type>text/plain</type>
            <size>128698</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2NGY4MzU4ZmEwZTU1NTNjYzc2ZWU5
YzlmZDkzNDdhZjIwOGJhY2MuLjNjZDM0MDhhYzNiOWY2NDFlYTUzMDY1YTQ3NTYzYWYyZTdkMzBm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHRydWUgLyBmYWxz
ZSBBdG9tU3RyaW5ncyB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIHJldXNlIHRoZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1NjA5YjUzOTk3MWE4NzQzZGNlNzcyMjNkMmFhYTdiZWQ4ZTM3Yjg5Li45YzllZDRh
MmU2YjY5Y2NjNjIwOWQyNDkyY2RkN2EwZWI5OTBhMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjI2IEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21v
dGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkVmZmVjdDo6Z2V0VGltaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkVmZmVjdDo6dXBkYXRlVGltaW5nKToKKyAgICAgICAgKiBhbmltYXRpb24vRWZm
ZWN0VGltaW5nLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aXNWYWxp
ZENTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZGlzcGxheSBj
b25zdCk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRmVhdHVyZU5hbWVzOjppbml0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6OmRyb3BFZmZlY3QgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6Cisg
ICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9Gb250U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZhbHVl
Rm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAgKiBodG1sL0F1
dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhU
TUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVWYWx1ZUZv
ckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlG
dW5jdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVmFsaWRE
aXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OmF1dG9jb21wbGV0ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJp
bmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlbG9hZCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvSW5wdXRNb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0TW9kZU5hbWVzOjpub25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0ZWwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1v
ZGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnNlYXJj
aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFt
ZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eUltcGwpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmtpbmRLZXl3b3JkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjYXB0aW9uc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpwb3NpdGlvbkFsaWduIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZUVEN1ZTo6c2V0UG9zaXRpb25BbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRD
dWU6OnRvSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdXRvS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVmlkZW9UcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9j
dW1lbnQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUpOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjphZGRSZXNv
dXJjZVRvQXJjaGl2ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREaXNwbGF5TmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpFdmVudFNvdXJjZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICog
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6aW5pdGlhbGl6ZU5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJp
bmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsdGVybmF0aXZlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjphdXRv
QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpjYXB0aW9uc0F0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tbWVudGFyeUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y3NzQ29udGVudFR5cGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OmVhZ2VyQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjplbWFp
bEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2VBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmxhenlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om1haW5BdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6Om5vbmVBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om9mZkF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6b25BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlBdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc2V0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ym1pdEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c3Vi
dGl0bGVzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZWxBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRQbGFpbkNvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp1cmxB
dG9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0UGxhaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZVF1
aWNrTG9va0Zvck1JTUVUeXBlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphbmltYXRpb25MaXN0Q29udGFpbnNOZXdseVZhbGlk
QW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdW1BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWRkaXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlw
ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VN
b2RlVHlwZT46OmZyb21TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJUeXBlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyT3JpZW50VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+OjphdXRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
RWxlbWVudDo6dHlwZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGVmaW5pdGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50IGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bV9ub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVl
LmNwcDoKKwogMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgdHJ1ZSAvIGZhbHNlIEF0b21TdHJpbmdzIHRvIGEgY2VudHJhbCBsb2NhdGlv
biBhbmQgcmV1c2UgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDAwOGM3YTg1NGM3NDIxZDc3ODRkZjM5MWFi
MzU0ZDJjMjIxNzA3Li5kYjczMmMyMDY2YTMwZWYzZTYxYWY1YjRlMzBjYjlkZjNkZWUxOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21t
b24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZUdQVVByb2Nlc3MpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnJ1bkluaXRp
YWxpemF0aW9uQ29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisKIDIwMjItMDQtMjAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVh
c2UgYXNzZXJ0IGxvZ2dpbmcgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGEyMDc5
ZjNhYjVmNmE4ZThhODViYjUxNjk4YmYxY2U0MjdlMGQ5MzQuLjA5YmI0Mzk3ZDhkMGI4NWFkMDli
ODQ3MDNmMmI0ZDhkNTcwMTAyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBw
cm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKG1ha2VGb250KToKKwogMjAyMi0w
NC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3Ry
aW5nOjp0cnVuY2F0ZSgpIGFuZCB1c2UgU3RyaW5nOjpsZWZ0KCkgaW5zdGVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZy5jcHAKaW5kZXggOTMwZmNiMjk5NzY4NDhkMzE4ZmNiZTEyODM0YTlmNGIz
ZWM1YTgwMy4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRmYTA3Y2EzYTFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMzcsOCArMTM3LDYgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRh
OwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sQXRvbURhdGE7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB4bWxuc0F0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOwotV1RGX0VYUE9SVF9QUklW
QVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VB
dG9tRGF0YTsKIAogdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKIHsKQEAgLTE1OSw4ICsxNTcsNiBA
QCB2b2lkIEF0b21TdHJpbmc6OmluaXQoKQogICAgICAgICBzdGFyQXRvbURhdGEuY29uc3RydWN0
V2l0aG91dEFjY2Vzc0NoZWNrKCIqIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1sbnNBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbG5zIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICB0cnVlQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFj
Y2Vzc0NoZWNrKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
ICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2UiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nLmgKaW5kZXggNzYzMTE1YTY2NjdiODg4M2JlNWNiY2UzYmViZjQ1NDYwMzEz
NTk1Yi4uMGFkZjUyMjNiYjYwMjljM2RlOTg5YzY4MzE3NDAxNjZmMDZjNzA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmgKQEAgLTI5MywxNiArMjkzLDEyIEBAIGV4dGVybiBXVEZfRVhQT1JU
X1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtcHR5QXRvbURh
dGE7CiBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0
b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbG5zQXRvbURhdGE7Ci1leHRlcm4gV1RGX0VYUE9S
VF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
dHJ1ZUF0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBudWxsQXRvbSgpIHsgcmV0dXJuIG51bGxBdG9tRGF0YS5nZXQoKTsg
fQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRv
bURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdGFyQXRvbSgpIHsgcmV0
dXJuIHN0YXJBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHhtbEF0
b20oKSB7IHJldHVybiB4bWxBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHhtbG5zQXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGZhbHNlQXRvbSgpIHsgcmV0dXJuIGZhbHNlQXRv
bURhdGEuZ2V0KCk7IH0KIAogaW5saW5lIEF0b21TdHJpbmcgQXRvbVN0cmluZzo6ZnJvbVVURjgo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTM2Miw5ICszNTgs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRv
bVN0cmluZz4gewogdXNpbmcgV1RGOjpBdG9tU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsK
IHVzaW5nIFdURjo6ZW1wdHlBdG9tOwotdXNpbmcgV1RGOjpmYWxzZUF0b207CiB1c2luZyBXVEY6
OnN0YXJBdG9tOwotdXNpbmcgV1RGOjp0cnVlQXRvbTsKIHVzaW5nIFdURjo6eG1sQXRvbTsKIHVz
aW5nIFdURjo6eG1sbnNBdG9tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4MGJiZWE4ZTcyMzRm
MDU1ZWZkNmUzNDAwNzUwYjM3ZjMzMTc4Y2FlLi4yOTc0MGNmNmE0MTlkYjg5NWI4MjFjYzlmOTI2
ZTdlOWQ1N2YwMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDAsNiArMTI0MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9DUFVNb25p
dG9yLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXIuaAogICAgIHBsYXRmb3JtL0NvbG9yQ2hv
b3NlckNsaWVudC5oCisgICAgcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaAogICAgIHBsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuaAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQ5ZjNiMzA3NTcy
MTE1Nzc3Nzg1OWMwYmFiMTYwMWQwY2Y4ZTk1ZTkuLjQ2OWNjM2FkYjVmYmY3YjM4MTQ5MmQzZWNk
NDIxOTI2Y2RjZmRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3RpdmVQYXN0
ZWJvYXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKICAgICB9CiAKLSAg
ICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgIGlmICh0eXBlID09IHRleHRQbGFp
bkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5U
ZXh0UmVhZGVyOwogICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFk
ZXIsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKICAg
ICAgICAgcmVzdWx0QXNTdHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCmluZGV4IGM5YjdmYzFkNTJmYTZmYTI0NjNkNTBmNTZiODk0ZWI1ZTZmYjUwNDEu
LjgzYmY5ZTUwMTYzZjRlOWNjYTFiMzRhYTMwYTQ1YTI0YTg2YjRiNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEzNiw3ICsxMzcsNiBAQCBj
b25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzcGVl
Y2hIaW50KCJzcGVlY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtdXNpY0hp
bnQoIm11c2ljIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgi
ZGV0YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEhpbnQoInRleHQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb3Rpb25IaW50KCJtb3Rpb24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKG1fcHJpdmF0
ZS0+Y29udGVudEhpbnQoKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50KCkgY29uc3QKICAgICBjYXNlIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkRldGFpbDoKICAgICAgICAgcmV0dXJuIGRldGFp
bEhpbnQ7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0
OgotICAgICAgICByZXR1cm4gdGV4dEhpbnQ7CisgICAgICAgIHJldHVybiB0ZXh0QXRvbSgpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICB9CkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRDb250ZW50SGludChjb25zdCBT
dHJpbmcmIGhpbnRWYWx1ZSkKICAgICAgICAgICAgIHZhbHVlID0gTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OkhpbnRWYWx1ZTo6RGV0YWlsOwogICAgICAgICBlbHNlIGlmIChoaW50VmFsdWUgPT0g
Im1vdGlvbiIpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpI
aW50VmFsdWU6Ok1vdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJ0ZXh0IikK
KyAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09IHRleHRBdG9tKCkpCiAgICAgICAgICAgICB2
YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OlRleHQ7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMGFmM2QwNmE1YjBi
YmM2OGZjMDExMzNiY2NmZTFmMmNkOTcwZTg5ZS4uNWQyMzE2ZmFjNzM5MzEwYzU4MGRiNmJlNWRi
ZWY0MWE5OTFhZmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjcsNiArMTg2Nyw3IEBAIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcAorcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCiBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMyOTEzMGViYzc2N2U1NzgzOTk5ZjdkMDY4N2IxZjExMjJlZDkyYjYu
LmVkZGE0MzA5NjIzN2NjOGI0ODIwZmE2MzgyNGRkODcxMzU3MmE2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzIsNiAr
MjczMiw3IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJG
MkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1
Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQu
aCAqLzsgfTsKIAkJODM5QkU2RDUyNEY1ODc2MjAwNERGNTBGIC8qIElJUkZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QkU2RDIyNEY1ODc1
NTAwNERGNTBGIC8qIElJUkZpbHRlci5oICovOyB9OworCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOUM2OUNFMjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3Ry
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzQTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDcz
RCAvKiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8q
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlF
MDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwpAQCAtMTIzMDMsNiArMTIzMDQs
OCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDIyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDQyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZp
bHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJGaWx0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMkFCRDgyNEQ4NkRDNjAwRTJENzNEIC8qIERlbGF5
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBMkFCREEyNEQ4NkRDNzAwRTJENzNEIC8qIERlbGF5T3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVsYXlPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE2Nyw2ICszMDE3MCw4IEBACiAJCQkJ
QzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLAogCQkJCUMzN0NE
RUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLywKIAkJCQlCQ0M4
Q0ZDQTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAorCQkJCTgzOUM2OUNE
MjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5jcHAgKi8sCisJCQkJODM5QzY5
Q0UyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8sCiAJCQkJQTE0MDkw
RkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovLAog
CQkJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJ
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0zNDA2NCw2
ICszNDA2OSw3IEBACiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzlD
NjlEMDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21t
b25DcnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGMzJCMURGQkIxMDcw
MDQxNkQ2QyAvKiBDb21tb25WTS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDQzMWZkZWExNTcyNjI3MmEyYjY4Zjk3
NGIyNmUwYWU2YTU1ZmMwYWEuLjA3ZTE5ODM2ZDcwZDFkYjE1M2U4ODZmMTgyN2Y2YjliZjBlMWMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAKICNpbmNsdWRl
ICJDU1NBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvbi5oIgpAQCAtNjksNyArNzAsNyBAQCBFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRUaW1pbmcoKSBjb25zdAogICAgIHRpbWluZy5pdGVyYXRpb25TdGFy
dCA9IG1faXRlcmF0aW9uU3RhcnQ7CiAgICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlv
bnM7CiAgICAgaWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcu
ZHVyYXRpb24gPSAiYXV0byJfczsKKyAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gYXV0b0F0b20o
KTsKICAgICBlbHNlCiAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1h
dGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIHRpbWluZy5kaXJlY3Rpb24g
PSBtX2RpcmVjdGlvbjsKQEAgLTM5OSw3ICs0MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmlt
YXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGlt
aQogICAgICAgICAgICAgaWYgKGR1cmF0aW9uQXNEb3VibGUgPCAwIHx8IHN0ZDo6aXNuYW4oZHVy
YXRpb25Bc0RvdWJsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSAiYXV0byIpCisgICAgICAgICAgICBpZiAo
c3RkOjpnZXQ8U3RyaW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9IGF1dG9BdG9tKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRp
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCmluZGV4IDIx
MDczZmE0NzMwM2Y2NGZkMmJhMjYxOWFlOTE4N2Y1ODE1OTUwNmUuLmU4YzBmMWJkOGQ5NTkyMTQ2
YzExM2U2NDM0NTlhYzEwZGRiZmQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9FZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0
VGltaW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxh
eWJhY2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtMzMsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRWZmZWN0VGltaW5nIHsKLSAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgImF1dG8iX3MgfTsKKyAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgYXV0b0F0b20oKSB9OwogICAgIGRvdWJs
ZSBkZWxheSB7IDAgfTsKICAgICBkb3VibGUgZW5kRGVsYXkgeyAwIH07CiAgICAgZG91YmxlIGl0
ZXJhdGlvblN0YXJ0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAwOGZhNDY3Yzhh
MmUzNWU4MDE5Mzc3OTBjZjJkOTBmYmI4YmVjZjBmLi40OGMyNzMyYjEzMGFiZjRhNDBhOTBkYjY2
YjI2NGU4ZWFiNDNiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uRXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIgpAQCAtMjA0LDYgKzIwNSw3IEBAIGJvb2wgaXNW
YWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNv
bW1vbkF0b21TdHJpbmdzKCk7CiAgICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChIVE1MUXVpcmtzTW9kZSk7CiAgICAgQ1NTUGFyc2VyIHBhcnNl
cihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1
YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAuLjM0Njc3OTZmYjNhMWZjODc3Y2U4YTAyMGQ5
NTRlNDQ1YTg4ZWM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiAr
MjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBO
b2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBp
c0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0
cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3Ry
aW5nIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b20oKTsgfQog
CiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJ
bmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDRk
NTExYjVlNjg1NDEzMDVkNDBjMWMzM2I3OTA5YTY1MDY1NTZmNjIuLmQ5NWIwOTg3M2RkZThhN2I3
YjFjYTdiYjRmNWYzNmQwMDAwMjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDA1
LDcgKzQwNSw3IEBAIFN0cmluZyBGb250RmFjZTo6ZGlzcGxheShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGNvbnN0IGF1dG8mIGxvYWRpbmdCZWhhdmlvcldyYXBwZWQgPSBtX2JhY2tpbmctPmxv
YWRpbmdCZWhhdmlvcigpOwogICAgIGlmICghbG9hZGluZ0JlaGF2aW9yV3JhcHBlZCkKLSAgICAg
ICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1
cm4gY29udGV4dC5jc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsb2FkaW5nQmVoYXZpb3JXcmFw
cGVkLnZhbHVlKCkpLT5jc3NUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwCmluZGV4IDJmNWI4YjA0NzM5NWEyY2JkNzU1YWMxY2Y1MzRiZmRjZWY1NzEw
NTcuLjZkNTA5MTlkOTUxNmFiNzU3NGRhMDVmMjFiMGUwNGQ2Njk3MDBkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMgewogCkBAIC0zMyw2ICszNSw3IEBAIHZvaWQgaW5pdCgpCiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAg
ICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogI2RlZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3Ry
dWN0KHN0cmluZywgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBD
U1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9C
QUwpCiAjdW5kZWYgSU5JVElBTElaRV9HTE9CQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKaW5kZXggMGVkMmJlZDk2MjMyMDRmOWEwYmViOWZjYjE1YTEwZGQ3ZTVkOGYzOS4uNjY2YmNj
Nzk2NThjOWRlZGYxOWIyOTU3OTU0M2M4YmNiNjM2OTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTEyNyw3
ICsxMjgsNyBAQCBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiAgICAgU3RyaW5nIGxvd2VyY2FzZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXModHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAobG93ZXJj
YXNlVHlwZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWlu
OyIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVybiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8
fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCiAgICAgICAgIHJl
dHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRo
KCJ0ZXh0L2h0bWw7IikpCkBAIC0yNjUsNyArMjY2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNl
dERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CiAgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHVybC5zdHJpbmcoKTsKLSAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSB0
ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgc2FuaXRpemVkRGF0YSA9IGRhdGE7
IC8vIE5vdGhpbmcgdG8gc2FuaXRpemUuCiAKICAgICBpZiAoc2FuaXRpemVkRGF0YSAhPSBkYXRh
KQpAQCAtNDI4LDcgKzQyOSw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0
bWxUZXh0KQogewogICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKLSAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxh
aW5UZXh0KTsKKyAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9o
dG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZl
bnQpKTsKIH0KQEAgLTQ2Nyw3ICs0NjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiAKIFN0cmluZyBEYXRhVHJh
bnNmZXI6OmRyb3BFZmZlY3QoKSBjb25zdAogewotICAgIHJldHVybiAibm9uZSJfczsKKyAgICBy
ZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyb3BFZmZlY3Qo
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNDE1NWY2MWQwMDJi
ZjJmNmYwN2UxNmRhZDU4YmQzYWQ3Njk0YWIuLmE5OGQyZjI1NGVhNjA0MmNlNzE1YzQxM2FjZDAx
OGUyNzA1ZmNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkV2ZW50LmgiCkBAIC02MDA3LDcgKzYwMDgsNyBAQCB2b2lkIERvY3VtZW50Ojpz
ZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiAKIFN0cmluZyBEb2N1bWVudDo6ZGVz
aWduTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gIm9uIl9zIDog
Im9mZiJfczsKKyAgICByZXR1cm4gaW5EZXNpZ25Nb2RlKCkgPyBvbkF0b20oKSA6IG9mZkF0b20o
KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCBk
MmFhOGQxZjdlMzk5ZTMzZGZhNWMxMTEwNjQxZDJmNDAxZTZjM2EwLi4wNWM4MmZiYWE5MThiZTBh
MWU2Mzc4NWIyYWFkZjM4YjdlNTRkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRPd25lci5oIgogCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE1MSw4ICsx
NTIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICAvLyBGSVhNRTogU2hvdWxkIE1JTUUgdHlw
ZXMgcmVhbGx5IGJlIGNhc2Ugc2Vuc2l0aXZlIGluIFhNTCBkb2N1bWVudHM/IERvZXNuJ3Qgc2Vl
bSBsaWtlIHRoZXkgc2hvdWxkLAogICAgIC8vIGV2ZW4gdGhvdWdoIG90aGVyIHRoaW5ncyBhcmUg
Y2FzZSBzZW5zaXRpdmUgaW4gdGhhdCBjb250ZXh0LiBNSU1FIHR5cGVzIHNob3VsZCBuZXZlciBi
ZSBjYXNlIHNlbnNpdGl2ZS4KICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoaXMgYW5kIHRoZW4g
cmVtb3ZlIHRoZSBpc0hUTUxFbGVtZW50IGNoZWNrIGhlcmUuCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZSgidGV4dC9j
c3MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InRleHQvY3NzIikgOiB0eXBlID09IGNzc0NvbnRlbnRUeXBlOworICAgIHJldHVybiBlbGVtZW50
LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKTsKIH0KIAogdm9pZCBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKaW5kZXggYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZS4uOTFiYzRm
ZWI4OWRjNTgzYmYwYjNmNzA3MDVmYmQyYThiZGMyOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTk0LDcgKzk1LDcgQEAgdm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKLSAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKKyAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAg
ICAgICAgIG1faXNYU0wgPSB0eXBlID09ICJ0ZXh0L3htbCIgfHwgdHlwZSA9PSAidGV4dC94c2wi
IHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24veGh0
bWwreG1sIiB8fCB0eXBlID09ICJhcHBsaWNhdGlvbi9yc3MreG1sIiB8fCB0eXBlID09ICJhcHBs
aWNhdGlvbi9hdG9tK3htbCI7CiAgICAgICAgIGlmICghbV9pc0NTUyAmJiAhbV9pc1hTTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCmluZGV4IDU0ZDZjZjBl
NTgwNzk3NDExNWU2Y2VlZDcyNjdjNzhmYmRlMjIzNGUuLmIyNTZhMzJhNjhlZTEwYmFhOGRmYmQ4
NTQzMDIyMTU5MTA2OTMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1h
Z2VDb250cm9sc01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5l
cy5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9u
dFNoYWRvdy5jcHAKaW5kZXggMjg4NDgwYjY1NzdlOGVkMWEwM2Y3NThiMGI0ODQ3YjgxNzVmZmU4
Mi4uMjcwNzI0MGJjYWM1OGM1YjIwNzM2OTNjNDUwZTQxMjgzZjkxZTk0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRm9u
dFNoYWRvdy5oIgogCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAi
Q29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBGb250U2hhZG93JiBzaGFk
b3cpCiB7CiAgICAgaWYgKHNoYWRvdy5vZmZzZXQuaXNaZXJvKCkgJiYgIXNoYWRvdy5ibHVyUmFk
aXVzKQotICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgp
OwogCiAgICAgaWYgKCFzaGFkb3cuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gIm5v
bmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgInB4ICIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA1ZWIzYmQwODczNDMyYjRkMGM4ZDlmOTEwZDI4N2RiMWI1OThkZmMzLi5hOWM0
YzYzOTQ3MDhlMzVjNTJmMmFhZDhiNWMyYzkwMDBlMzdhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKICNpbmNsdWRlICJDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNzE4LDcgKzcxOSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgICAg
ICBpZiAoaXNCbG9jayhlbGVtZW50KSkKICAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0
eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3Ms
IGZhbHNlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1l
bnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJu
b25lIl9zLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgbm9uZUF0b20oKSwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tCmluZGV4IGI1ZTBhY2E2ZTIxYmIyNmJiZGMzYzU4ZWJkMzUwOTY1ZDA4NDZk
ZjcuLjk0YTQ2MGY1MzQ5NDg0Y2FiMDhiZGU5ODhhMjdmYjE3NDAwMGE5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbXBvcnQgIkNvbG9yQ29udmVy
c2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW1wb3J0ICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAj
aW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDUz
Y2M2YWIwMTZiZTgyZTcwZWI1NTU1YTc5NjNlYTUwOWJiYmYzMDQuLjQyYjZjMjJlNTllMjg4Y2Fi
MDI2ODg5NmRmYWRkYjYwMTAxZjQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkNoYXJhY3Rl
ckRhdGEuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisj
aW1wb3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNTk3LDcgKzU5OCw3IEBAIFN0cmluZyBIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZh
bHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CiAgICAgICAgIGlmIChl
bGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KG5vZnJhbWVzVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgICAg
IHJldHVybiBub25lQXRvbSgpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
YWRkcmVzc1RhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShib2R5VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoY2VudGVyVGFnKQog
ICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkZFRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGRpclRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKGRsVGFnKQogICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZyYW1lVGFnKQpAQCAtMTAxNyw3ICsx
MDE4LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3RyaW5nIGZvbnRLZXJuaW5nID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250S2Vybmlu
Zyk7CiAgICAgU3RyaW5nIGxldHRlclNwYWNpbmcgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9y
Tm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOwogICAgIGlmIChmb250S2Vy
bmluZy5sZW5ndGgoKSB8fCBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChm
b250S2VybmluZyA9PSAibm9uZSIpCisgICAgICAgIGlmIChmb250S2VybmluZyA9PSBub25lQXRv
bSgpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUga2VyblZhbCA9
IGxldHRlclNwYWNpbmcubGVuZ3RoKCkgPyBsZXR0ZXJTcGFjaW5nLnRvRG91YmxlKCkgOiAwLjA7
CkBAIC0xMTEwLDcgKzExMTEsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1
dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgICAgICBTdHJp
bmcgaHlwaGVuYXRpb24gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tF
bGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpOwogICAgICAgICBpZiAoaHlwaGVuYXRp
b24ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmIChoeXBoZW5hdGlvbiA9PSAiYXV0byIpCisg
ICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgICAg
ICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0b3I6MS4wXTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0
b3I6MC4wXTsKQEAgLTE2MTAsNyArMTYxMSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2VudGVy
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBCT09MIGVtYmVkZGVkKQogCiAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhZW1iZWRkZWQpCiAgICAgICAgIF9wcm9jZXNzSGVh
ZEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoIWRpc3BsYXlWYWx1ZS5sZW5ndGgoKSB8
fCAhKGRpc3BsYXlWYWx1ZSA9PSAibm9uZSIgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1
bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uLWdyb3VwIikpIHsKKyAgICBlbHNl
IGlmICghZGlzcGxheVZhbHVlLmxlbmd0aCgpIHx8ICEoZGlzcGxheVZhbHVlID09IG5vbmVBdG9t
KCkgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAi
dGFibGUtY29sdW1uLWdyb3VwIikpIHsKICAgICAgICAgaWYgKF9jYWNoZXMtPmlzQmxvY2tFbGVt
ZW50KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpICYmICEoZGlzcGxheVZh
bHVlID09ICJ0YWJsZS1jZWxsIiAmJiBbX3RleHRUYWJsZXMgY291bnRdID09IDApCiAgICAgICAg
ICAgICAmJiAhKFtfdGV4dExpc3RzIGNvdW50XSA+IDAgJiYgZGlzcGxheVZhbHVlID09ICJibG9j
ayIgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShsaVRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZSh1
bFRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpKQogICAgICAgICAgICAgX25ld1Bh
cmFncmFwaEZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC50YWdOYW1lKCksIE5PLCBZRVMpOwpA
QCAtMTg2NSw3ICsxODY2LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBpZiAoZWxlbWVu
dC5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGlucHV0RWxlbWVudC50eXBlKCkgPT0gInRleHQiKSB7CisgICAgICAgICAgICBpZiAoaW5wdXRF
bGVtZW50LnR5cGUoKSA9PSB0ZXh0QXRvbSgpKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcg
KnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIFt2YWx1ZSBsZW5ndGhdID4gMCkKICAgICAgICAgICAgICAgICAgICAgX2FkZFZhbHVlKHZh
bHVlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzYWVlOWNmOWRk
N2RlNmUzZGM4MTUxMDQ4NWU3YzE3ZjRlMGVlZTI0Li44MGE4ODQzNTAyZWI1N2YwM2VkYjJlYjMx
ZGMyNzcxYzBmOWQzOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
QEAgLTEyODUsNyArMTI4Niw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8v
IFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVs
ZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5
ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKICAgICAgICAgZnJhZ21lbnQt
PnBhcnNlSFRNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKLSAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYg
KHNvdXJjZU1JTUVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKQogICAgICAgICBm
cmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgV1RGTW92
ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bFBh
cnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNlU3RyaW5nKSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCmluZGV4IGQ2N2RjNzkyOTQ4NjIxNDM5NDE1
Y2VmZTg2MzY5MDc4ZjY0NzVlYmQuLjQwZTJhOTBlZWMwOTE1MjMwZmYwYjUyZDM1M2RiMjM3NjQy
NDU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NiwxMCArNTcsOCBAQCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6OkRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBudWxsQXRvbSgpOwotICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpOb25lOiB7
Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdmFsdWVOb25lKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgICAgICByZXR1cm4gdmFsdWVOb25lOwotICAgIH0KKyAgICBjYXNlIEF1dG9jYXBpdGFsaXpl
VHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAgICAgY2FzZSBBdXRvY2Fw
aXRhbGl6ZVR5cGU6OlNlbnRlbmNlczogewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlU2VudGVuY2VzKCJzZW50ZW5jZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiB2YWx1ZVNl
bnRlbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZGU1MTg1ZTE3YjM3ZTg0ZGIz
NzE0ODhiNDY4YmZkYzMyNTg3ZDQyOC4uOWRlNzBiN2M2YWRhYzNkZWNlZTA2ZDI1Y2M0MmI2YzQ5
MTIwZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRvZmlsbC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
QEAgLTEzNiw5ICsxMzcsNiBAQCBzdGF0aWMgdW5zaWduZWQgbWF4VG9rZW5zRm9yQXV0b2ZpbGxG
aWVsZENhdGVnb3J5KEF1dG9maWxsQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI3Byb2Nlc3NpbmctbW9kZWwtMwog
QXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotCiAgICAgLy8gTGFiZWw6IERlZmF1bHQKICAgICAvLyAyNi4gTGV0
IHRoZSBlbGVtZW50J3MgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIGVtcHR5IHN0
cmluZywgYW5kIGl0cyBhdXRvZmlsbCBoaW50IHNldCBhbmQgYXV0b2ZpbGwgc2NvcGUgYmUgZW1w
dHkuCiAgICAgLy8gMjcuIElmIHRoZSBlbGVtZW50J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBp
cyB3ZWFyaW5nIHRoZSBhdXRvZmlsbCBhbmNob3IgbWFudGxlLCB0aGVuIGxldCB0aGUgZWxlbWVu
dCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIGVtcHR5IHN0cmluZyBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCkBAIC0xNDksOSArMTQ3LDkgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6
Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAg
ICAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gZm9ybSA9IGVsZW1lbnQuZm9ybSgpOwotICAgICAgICBpZiAoZm9y
bSAmJiBmb3JtLT5hdXRvY29tcGxldGUoKSA9PSBvZmYpCi0gICAgICAgICAgICByZXR1cm4geyBv
ZmYsIGVtcHR5U3RyaW5nKCkgfTsKLSAgICAgICAgcmV0dXJuIHsgb24sIGVtcHR5U3RyaW5nKCkg
fTsKKyAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0b2NvbXBsZXRlKCkgPT0gb2ZmQXRvbSgp
KQorICAgICAgICAgICAgcmV0dXJuIHsgb2ZmQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CiAgICAgfTsKIAogCkBAIC0x
OTksMTMgKzE5NywxMyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIGF1dG9maWxs
IGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhwb3NlZCBhdXRvZmlsbCB2YWx1
ZSBiZSB0aGUgc3RyaW5nICJvZmYiLgogICAgIC8vIFRoZW4sIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChjYXRlZ29yeSA9PSBBdXRvZmlsbENhdGVnb3J5OjpPZmYpCi0gICAgICAgIHJldHVy
biB7IG9mZiwgb2ZmLmdldCgpLnN0cmluZygpIH07CisgICAgICAgIHJldHVybiB7IG9mZkF0b20o
KSwgb2ZmQXRvbSgpLnN0cmluZygpIH07CiAKICAgICAvLyA4LiBJZiBjYXRlZ29yeSBpcyBBdXRv
bWF0aWMsIGxldCB0aGUgZWxlbWVudCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIHN0cmlu
ZyAib24iLAogICAgIC8vIGxldCBpdHMgYXV0b2ZpbGwgaGludCBzZXQgYmUgZW1wdHksIGFuZCBs
ZXQgaXRzIElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBzdHJpbmcKICAgICAvLyAi
b24iLiBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdvcnkgPT0gQXV0b2Zp
bGxDYXRlZ29yeTo6QXV0b21hdGljKQotICAgICAgICByZXR1cm4geyBvbiwgb24uZ2V0KCkuc3Ry
aW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgb25BdG9tKCksIG9uQXRvbSgpLnN0cmluZygpIH07
CiAKICAgICAvLyA5LiBMZXQgc2NvcGUgdG9rZW5zIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgLy8g
MTAuIExldCBoaW50IHRva2VucyBiZSBhbiBlbXB0eSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAppbmRleCA4YTU0Y2EwNTM1NGE5MzAyNzU5
YWI3NWJhM2ExNzU1ZjdiOWY0NTVkLi4yYjIzZTFmZDVjN2E4ZjNkODM2NzZjY2VjYTA0ZDA4Mzdl
OTRhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlw
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00NiwxMyArNDcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIEZvcm1Db250cm9sU3RhdGUgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwotICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gIm9uIl9zIDogIm9mZiJf
cyB9OworICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gb25BdG9tKCkgOiBvZmZB
dG9tKCkgfTsKIH0KIAogdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLSAgICBlbGVtZW50KCktPnNldENoZWNrZWQoc3RhdGVbMF0gPT0gIm9uIik7
CisgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09IG9uQXRvbSgpKTsKIH0KIAog
Ym9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYg
Zm9ybURhdGEpIGNvbnN0CkBAIC05OSw4ICsxMDAsNyBAQCBib29sIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKIAogU3RyaW5nIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb24oIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBvbi5nZXQoKTsKKyAg
ICByZXR1cm4gb25BdG9tKCk7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhp
bnQuY3BwCmluZGV4IDk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEuLmI3
NzU2OTRhMzIxMTE0NTllMjBkZDU0NGM3ZDU3MDA2YWYyNjJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFbnRlcktleUhpbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW50ZXJLZXlIaW50IGVudGVyS2V5SGludEZv
ckF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC02Myw3ICs2NSw3IEBAIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZUZvckVudGVyS2V5SGludChFbnRlcktleUhpbnQgaGludCkKICAg
ICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlvdXM6CiAgICAgICAgIHJldHVybiAicHJldmlvdXMi
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJzZWFy
Y2giX3M7CisgICAgICAgIHJldHVybiBzZWFyY2hBdG9tKCk7CiAgICAgY2FzZSBFbnRlcktleUhp
bnQ6OlNlbmQ6CiAgICAgICAgIHJldHVybiAic2VuZCJfczsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAppbmRleCBhOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4
YjEyYWVhMDYzMzAwMzMyLi44ZWI2YzNlZjhmMzEzNGQ4NmIzNjg5MWM1ZTQwMDFiYjY0MmQ1ZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxl
Z2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IHNyYykKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBm
YWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihw
cmVsb2FkQXR0ciwgImF1dG8iX3MpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIGF1dG9BdG9tKCkpOwogICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAgICByZXR1
cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
aW5kZXggODc5NDg2N2M2ZTA0ZDUwMTYxNzNiZjk3ZDcyMzAwN2U5ZGFmMWRmZC4uOWMzNzMxNWFj
YjU2YmYwMGJjOTVlMzJkN2EwMTNhNzI1NzExNmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtODIsMTYgKzgzLDEyIEBAIGlu
dCBIVE1MQnV0dG9uRWxlbWVudDo6ZGVmYXVsdFRhYkluZGV4KCkgY29uc3QKIGNvbnN0IEF0b21T
dHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1Ym1pdCgi
c3VibWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICAgICAg
cmV0dXJuIHN1Ym1pdDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJVVFRPTjoKLSAgICAgICAg
ICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7Ci0gICAgICAgIGNh
c2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcmVzZXQoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwotICAgICAgICB9CisgICAgY2Fz
ZSBTVUJNSVQ6CisgICAgICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CisgICAgY2FzZSBCVVRUT046
CisgICAgICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7CisgICAg
Y2FzZSBSRVNFVDoKKyAgICAgICAgcmV0dXJuIHJlc2V0QXRvbSgpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5
YzM5YzU2ZDM0MTQzOGQwZTA4YjU1MTNlNjcyYjY5YTYwOWIxYjFkLi45MDEwNTA1ZGUxNTI5ZGQ0
OTZkOTRmOGYyYzMyNzYxNTczMjIxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCkBAIC00
MTUsMTMgKzQxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRvVmFsaWRE
aXJWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGx0clZhbHVlKCJsdHIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBydGxWYWx1ZSgicnRsIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbHVlKCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImx0ciIpKQogICAgICAgICByZXR1cm4gbHRyVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCiAgICAgICAgIHJldHVybiBydGxWYWx1
ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikp
Ci0gICAgICAgIHJldHVybiBhdXRvVmFsdWU7CisgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwog
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCkBAIC01NzgsMTcgKzU3OCwxMSBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgY2FzZSBDb250ZW50RWRp
dGFibGVUeXBlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIGZhbHNlQXRvbSgpOwogICAgIGNhc2Ug
Q29udGVudEVkaXRhYmxlVHlwZTo6UGxhaW50ZXh0T25seToKLSAgICAgICAgcmV0dXJuICJwbGFp
bnRleHQtb25seSJfczsKKyAgICAgICAgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tKCk7CiAgICAg
fQogICAgIHJldHVybiAiaW5oZXJpdCJfczsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHBsYWludGV4dE9ubHlOYW1lKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxhaW50ZXh0LW9ubHki
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHBsYWludGV4
dE9ubHlWYWx1ZS5nZXQoKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNl
dENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCkBAIC01OTYsNyArNTkw
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShj
b25zdCBTdHJpbmcmIGVuYWJsZWQpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCiAgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgZmFsc2VBdG9tKCkpOwogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQt
b25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRl
bnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9ubHlOYW1lKCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9u
bHlBdG9tKCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
YWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFi
bGVBdHRyKTsKICAgICBlbHNlCkBAIC0xMDY0LDkgKzEwNTgsNyBAQCBib29sIEhUTUxFbGVtZW50
OjpzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9j
b3JyZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbk5hbWUoIm9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb2ZmTmFtZSgib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJl
Y3RBdHRyLCBhdXRvY29ycmVjdCA/IG9uTmFtZS5nZXQoKSA6IG9mZk5hbWUuZ2V0KCkpOworICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRv
Y29ycmVjdCA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTdlMDhmZmE5M2Q2MWQwZGQ4MDk3OWRk
Zjg0YjFjM2NmNTJkMGUwNS4uNWUwMTY5YTczMTcwNDkxM2JkY2U2MDRiNmNmMDMzZjg4YzBjYTkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5o
IgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAt
MTAxMiwxMCArMTAxMyw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29tcGxldGUo
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxGb3JtRWxl
bWVudDo6YXV0b2NvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmIDogb247CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmQXRvbSgpIDogb25BdG9tKCk7CiB9
CiAKIFJlZlB0cjxET01Gb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpjb25zdHJ1Y3RFbnRyeUxp
c3QoUmVmPERPTUZvcm1EYXRhPiYmIGRvbUZvcm1EYXRhLCBTdHJpbmdQYWlyVmVjdG9yKiBmb3Jt
VmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAx
ZTgxZjU0MjViMDdlMjRkOWE5YzEyMDdlYjM1NTkyMTcyNDY1Yzg0Li5mMjhlNmQ5NjE1NmVhZGJk
MTBhYzVjMzk5MGEwMmEzMWI1ZWNkODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFbGVt
ZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNTcsOSArMTU4LDcgQEAgY29u
c3QgRmVhdHVyZVBvbGljeSYgSFRNTElGcmFtZUVsZW1lbnQ6OmZlYXR1cmVQb2xpY3koKSBjb25z
dAogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRp
bmdzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenkoImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBsYXp5IDogZWFn
ZXI7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBs
YXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7CiB9CiAKIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnNl
dExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDAwY2RkNjJmZTA0NjM4NjQyNGU1Nzgx
NThhM2NjNWRkOTljOTZiYmIuLjhjNzM1MjBjNTRkNjdiYmEyMzlhNjRlZTdmODc2Y2JhZjU0NjBj
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTY3NCw3ICs2NzUsNyBAQCBTdHJpbmcgSFRNTElt
YWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25zdAogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBdXRv
OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuICJhdXRvIl9zOworICAgIHJldHVy
biBhdXRvQXRvbSgpOwogfQogCiBEZWNvZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmdNb2RlKCkgY29uc3QKQEAgLTg5NiwxMCArODk3LDggQEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1l
bnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpIGNvbnN0CiAKIGNvbnN0
IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJs
YXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGF1dG8mIGF0dHJp
YnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omxv
YWRpbmdBdHRyKTsKLSAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlVmFsdWUpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVybiBoYXNMYXp5TG9hZGFibGVB
dHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVWYWx1ZSkgPyBsYXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7
CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0TG9hZGluZ0ZvckJpbmRpbmdzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggMjY0YTdhODgyNjZhODM5YmZkOGYzZWM5NTRiNjI5NzlmMTliMTkzZi4uZjI2MzBh
Y2QwYmU2Y2NkZGJkNjQ1MjBmMzc5MzdkODE2ODQ3NjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKICNpbmNsdWRlICJDb250ZW50UnVsZUxpc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCkBAIC0zNjQ5LDE2ICszNjUwLDE2IEBAIFN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9t
ZWRpYWNhcHR1cmUtbWFpbi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCiAgICAgLy8g
InByZWxvYWQiIC0gT24gZ2V0dGluZzogbm9uZS4gT24gc2V0dGluZzogaWdub3JlZC4KICAgICBp
ZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3ByZWxvYWQp
IHsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lOgotICAgICAgICByZXR1cm4g
Im5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhOgogICAgICAgICByZXR1cm4gIm1ldGFkYXRhIl9zOwogICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86Ci0gICAgICAgIHJldHVybiAiYXV0byJf
czsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhi
ZjMuLmFiOGQ2YTI5OWVmNmNjZjBhMWQyMTAwMTEzODZiMWI5ZjNhOGU2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQzNCwxMyArNDM1
LDEyIEBAIHVuc2lnbmVkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlU2VsZWN0
aW9uRW5kKCkgY29uc3QKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZSgibm9uZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZvcndhcmQoImZvcndhcmQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBiYWNrd2FyZCgiYmFja3dhcmQiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAg
IGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiBub25lOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJl
Y3Rpb246CiAgICAgICAgIHJldHVybiBmb3J3YXJkOwogICAgIGNhc2UgU2VsZWN0aW9uSGFzQmFj
a3dhcmREaXJlY3Rpb246CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGRpcmVjdGlvblN0cmluZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBub25lOwor
ICAgIHJldHVybiBub25lQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRNb2RlLmNwcAppbmRleCAzNDlkODViNTYyZTdiYjljNWFkZmVkNTI3MTFmNTMwNWM0N2Rl
NDllLi43ZTgwYzc3ZjdlZjk0Y2Y4MDgwMDdlMGNjNDZjZjAyNmJmZjQ1ZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dE1vZGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MiwzMiArODMsMjcgQEAgbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzIHsKIAogY29uc3Qg
QXRvbVN0cmluZyYgbm9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBub25lQXRvbSgpOwogfQog
CiBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInRleHQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRleHRBdG9t
KCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRl
bEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInVybCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1
cm4gdXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJlbWFp
bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsK
KyAgICByZXR1cm4gZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIG51bWVyaWMo
KQpAQCAtMTI0LDggKzEyMCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRlY2ltYWwoKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBzZWFyY2goKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBzZWFyY2hBdG9t
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlTmFtZXMuY3BwCmluZGV4IDQ1MDM2OWVjODFkY2JmMTAzMzY5MGQ3ZjY0MzcxNjVm
MWVlOGM1NmYuLjZmZmJjZjVjZjIyNTY5MzI3OTlmMWFlZTNhMWM0M2M1MWI1MWVhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDggKzY0LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgZGF0ZXRpbWVsb2NhbCgpCiAKIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoImVt
YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBlbWFpbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgZmlsZSgp
CkBAIC0xMTcsMzIgKzExNywyNyBAQCBjb25zdCBBdG9tU3RyaW5nJiByYW5nZSgpCiAKIGNvbnN0
IEF0b21TdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiByZXNldEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInNlYXJjaCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c2VhcmNoQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXQoKQogewotICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgic3Vi
bWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbGVw
aG9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJ0ZWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHRlbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBuYW1lKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0aW1lKCkKQEAgLTE1Myw4ICsxNDgsNyBAQCBjb25zdCBBdG9tU3RyaW5n
JiB0aW1lKCkKIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInVybCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
dXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWVrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IDkzMDQ4NGI4NWFiMjVhZTU0N2RmN2YzMWZkN2QyMGE1YWEyYmU2ZmEuLjdmNDczNTA3ZmJm
YWRiZWY4M2Q1MWM4ZmYxMDliOTYyYTEyM2RiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMTUwLDggKzE1MSw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkCiAK
IHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHlJbXBsKGJvb2wgaXNFZGl0YWJsZSwgYm9vbCBpbml0aWFsaXphdGlvbikKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBs
YWluVGV4dE9ubHlOYW1lKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBwbGFpblRl
eHRPbmx5TmFtZS5nZXQoKSA6IGZhbHNlQXRvbSgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlID0g
aXNFZGl0YWJsZSA/IHBsYWludGV4dE9ubHlBdG9tKCkgOiBmYWxzZUF0b20oKTsKICAgICBpZiAo
aW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlcyB7
IEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCB2YWx1ZSkgfTsKICAgICAgICAgcGFyc2Vy
U2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCmluZGV4IDY5OTRiMTEzMWUyMzQ4ZTRlZTlkMjVjMDlhY2Q0ZGY2NTg3YzEwM2Yu
LjdiYWVhYTA2NWM3MzQwOThlMmJhMDNkMzMzMDllMzE4ODM5ZWQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAtMzgsMjggKzM4LDE3IEBACiAjaW5jbHVk
ZSAiQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5o
IgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdv
cmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKLX0KLQogY29uc3QgQXRvbVN0cmlu
ZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlw
dGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3Jk
KCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG1haW4oIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIG1haW47Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNj
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtNzIsMTIgKzYxLDYgQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6dHJhbnNsYXRpb25LZXl3b3JkKCkKICAgICByZXR1cm4gdHJhbnNsYXRpb247CiB9CiAKLWNv
bnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNvbW1lbnRhcnk7Ci19Ci0KIEF1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTEyMywxMCArMTA2
LDEwIEBAIHZvaWQgQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpCiAKIGJvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgp
Ci0gICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKKyAgICByZXR1cm4gdmFs
dWUgPT0gYWx0ZXJuYXRpdmVBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUF0
b20oKQogICAgICAgICB8fCB2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKQotICAgICAgICB8
fCB2YWx1ZSA9PSBtYWluS2V5d29yZCgpCisgICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkK
ICAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkKICAgICAgICAgfHwgdmFsdWUg
PT0gdHJhbnNsYXRpb25LZXl3b3JkKCk7CiB9CkBAIC0yMDgsMTMgKzE5MSwxMyBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmtpbmQoKSkgewogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgot
ICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CiAgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpOwpAQCAtMjIzLDcgKzIwNiw3IEBAIHZvaWQgQXVk
aW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKICAgICAgICAgc2V0S2luZChBdWRpb1Ry
YWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVk
aW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CiAgICAg
ICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5oCmluZGV4IDRlMTg2YzE2NjIwN2IwN2E3OGQwZTc2ZWM0ZDNkZDA5MDk5NjE3MjguLmJk
YjdmMWIyMmMwMjE5MTY5Y2MxMzI3ZjQ1MzUxNTIxZmU3ZTdiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC00NiwxMiArNDYsOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVz
Y3JpcHRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5LZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RW5hYmxlZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAppbmRleCAxMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiLi45MTU4YWU0
ZDMwNDE4NzBiNWI3Mzg3OWY4NTgxOWI4MDJkOWM0Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCkBAIC01MCwxOCArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2spOwogCi1jb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRs
ZXMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRp
dGxlczsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVzY3Jp
cHRpb25zS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTEwMyw3ICs5MSw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IGtpbmQsIGNvCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHJhY2tU
eXBlKHR5cGUpCiB7Ci0gICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYg
KGtpbmQgPT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIG1fa2luZCA9IEtpbmQ6OkNhcHRpb25z
OwogICAgIGVsc2UgaWYgKGtpbmQgPT0gY2hhcHRlcnNLZXl3b3JkKCkpCiAgICAgICAgIG1fa2lu
ZCA9IEtpbmQ6OkNoYXB0ZXJzOwpAQCAtMTY3LDkgKzE1NSw5IEBAIGJvb2wgVGV4dFRyYWNrOjpl
bmFibGVkKCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29y
ZCgpKQorICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICBpZiAodmFsdWUg
PT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg3LDcg
KzE3NSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25z
dAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBLaW5kOjpDYXB0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGNhcHRpb25zS2V5d29yZCgpOworICAgICAgICByZXR1cm4gY2FwdGlvbnNB
dG9tKCk7CiAgICAgY2FzZSBLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJuIGNoYXB0ZXJz
S2V5d29yZCgpOwogICAgIGNhc2UgS2luZDo6RGVzY3JpcHRpb25zOgpAQCAtMTk3LDEwICsxODUs
MTAgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiAg
ICAgY2FzZSBLaW5kOjpNZXRhZGF0YToKICAgICAgICAgcmV0dXJuIG1ldGFkYXRhS2V5d29yZCgp
OwogICAgIGNhc2UgS2luZDo6U3VidGl0bGVzOgotICAgICAgICByZXR1cm4gc3VidGl0bGVzS2V5
d29yZCgpOworICAgICAgICByZXR1cm4gc3VidGl0bGVzQXRvbSgpOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3VidGl0bGVzS2V5d29yZCgpOworICAgIHJl
dHVybiBzdWJ0aXRsZXNBdG9tKCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQg
bmV3S2luZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDk0MGMwMjQ2
MmU4NjkzY2I4ODg5ZDAyN2I2YzlhODZlZjJlOTBjZjUuLjJiNjI3NGMyNWY0NWQ2OTQyMGM5NDJi
MTQyZGEzMTAxMzMzNTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1l
bnVPZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVBdXRvbWF0aWNJ
dGVtKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgp
OwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9tU3RyaW5nJik7
CiAKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggYWJmNzU2OTY0YzM3OWU4Nzc0ZGFjZWFiODEyMGUy
OGZjZDE0YWE3Yy4uZTI3MjVjOGU4NDgwOWFjNjcwMmUyZTYzMzIyMGRlODQwY2ZiOGEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBA
IC0xMzcsMTIgKzEzOCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGxpbmVSaWdodEtleXdvcmQo
KQogICAgIHJldHVybiBsaW5lUmlnaHQ7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcmIGF1dG9L
ZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBhdXRv
WChNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpKTsKLSAgICByZXR1cm4gYXV0b1g7Ci19
Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVmPFZUVEN1ZUJveD4gVlRU
Q3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKQEAgLTQ3Nyw3
ICs0NzIsNyBAQCBjb25zdCBTdHJpbmcmIFZUVEN1ZTo6cG9zaXRpb25BbGlnbigpIGNvbnN0CiAg
ICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDoKICAgICAgICAgcmV0dXJuIGxpbmVS
aWdodEtleXdvcmQoKTsKICAgICBjYXNlIFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG86Ci0gICAg
ICAgIHJldHVybiBhdXRvS2V5d29yZCgpOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CkBAIC00OTMsNyArNDg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRU
Q3VlOjpzZXRQb3NpdGlvbkFsaWduKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHBvc2l0
aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQ2VudGVyOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IGxpbmVSaWdodEtleXdvcmQoKSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQg
PSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRv
S2V5d29yZCgpKQorICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHBv
c2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQXV0bzsKICAgICBlbHNlCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0xMzI5LDEzICsxMzI0LDEzIEBAIHZvaWQgVlRUQ3VlOjp0
b0pTT04oSlNPTjo6T2JqZWN0JiBvYmplY3QpIGNvbnN0CiAgICAgb2JqZWN0LnNldFN0cmluZygi
dmVydGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9M
aW5lcyJfcywgc25hcFRvTGluZXMoKSk7CiAgICAgaWYgKG1fbGluZVBvc2l0aW9uKQotICAgICAg
ICBvYmplY3Quc2V0U3RyaW5nKCJsaW5lIl9zLCAiYXV0byJfcyk7CisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoImxpbmUiX3MsIGF1dG9BdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0
LnNldERvdWJsZSgibGluZSJfcywgKm1fbGluZVBvc2l0aW9uKTsKICAgICBpZiAobV90ZXh0UG9z
aXRpb24pCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCAqbV90ZXh0UG9z
aXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3Ms
ICJhdXRvIl9zKTsKKyAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsIGF1dG9B
dG9tKCkpOwogICAgIG9iamVjdC5zZXRJbnRlZ2VyKCJzaXplIl9zLCBtX2N1ZVNpemUpOwogICAg
IG9iamVjdC5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDczZTlkMGYxN2FmNTY1YjdhMmQxZDk5M2M5
MmM3MzdkNzk0ZjQ0YTcuLjA3MWE3NzQyNmRmMDRiNWM0ZjkwODI1YzU1MmUyOTlmNjdiNzVhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0Nv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgpAQCAtNDYsNDIgKzQ3
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gYWx0ZXJuYXRpdmU7
Ci19Ci0KLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpt
YWluS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNpZ247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcm
IFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlczsK
LX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gY29tbWVudGFyeTsKLX0KLQogVmlkZW9UcmFjazo6VmlkZW9UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQogICAgIDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6OlZp
ZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQ
cml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQpAQCAtMTE4
LDEyICs4OSwxMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKIAogYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRp
dmVLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKQotICAg
ICAgICB8fCB2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBt
YWluS2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlQXRvbSgpCisgICAg
ICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY2Fw
dGlvbnNBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkF0b20oKQogICAgICAgICB8fCB2
YWx1ZSA9PSBzaWduS2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IHN1YnRpdGxlc0tleXdv
cmQoKTsKKyAgICAgICAgfHwgdmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpOwogfQogCiB2b2lkIFZp
ZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCkBAIC0yNDEsMjIgKzIx
MiwyMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY2Fw
dGlvbnNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAg
ICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OlNpZ246CiAgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpT
dWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgp
KTsKKyAgICAgICAgc2V0S2luZChzdWJ0aXRsZXNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKLSAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChjb21tZW50
YXJ5QXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CiAgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCmluZGV4IGUxZTBlOWIwMjU4ZDUxMjc2Mjk3MDZkMGVjNDIyYTNj
YmQwM2Y2OTkuLjFlMjJiYmI0NTM3MTJmOGUyYTkxMWI3Mzg4OTlmNDNiM2RiZDY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC00OSwxMiArNDksNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IG1haW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpZ25LZXl3b3Jk
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJv
b2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IGY4ZGRiZDM4MDViNDU4MGE4ZDc2NDQ4OTEyM2NkOTIxZWMy
NjA1ZjQuLmM2OTQ0MDAzODZkY2I5ZjM3OTNkYjc4NzhjZmI0MWZjZTQzOTcyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5j
bHVkZSAiSVNPVlRUQ3VlLmgiCkBAIC05Miw3ICs5Myw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpw
YXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNo
YXIKIAogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50JiBjbGll
bnQsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBQ
QUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIFBBTDo6VVRGOEVuY29kaW5nKCkp
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBhZTAyOWJmYmJl
OTMzODI4YmRiMGM5ZWFiNTk5MmUwMDQ5NDk4NTY5Li4yNDQwZTNhYjcxYTY5YjJjMGM4MjI5Mjcx
NTNkOTgyNzNkMmM1NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC03ODIsNyArNzgzLDcgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JE
b2N1bWVudChEb2MKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHN0eWxlRWxl
bWVudCA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgc3R5bGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dHlwZUF0
dHIsIEF0b21TdHJpbmcoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgY3NzQ29udGVudFR5cGVBdG9tKCkpOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogdGFyZ2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURv
Y3VtZW50cywgZm9yIGV4YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAppbmRleCAyYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwLi45ZmIw
MDUyN2M5MzY1NDE5OWM4Nzk3OWEyMjk4M2YxYWNmMWEwY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgpAQCAtMTAzLDcg
KzEwNCw3IEBAIFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGlu
Z1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQogICAgICAgICByZXR1cm4gIm11
bHRpcGFydC9mb3JtLWRhdGEiX3M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsK
KyAgICAgICAgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpOwogICAgIHJldHVybiAi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggZjA0M2NkNTk3MDU0MTk3
NzYzOGI2ZGY0MjJmYTBmZDM5N2ViN2UxYS4uMmQxYWRmM2Y3ZTA5ZjAzMzAyYjYxZGZlZmQ2Yjc5
OTZhMDJhOWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIu
aCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKLSAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXBsYWNlbWVudFJlc3BvbnNlIHsgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgInRleHQvcGxh
aW4iX3MsIDAsICJVVEYtOCJfcyB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2Vt
ZW50UmVzcG9uc2UgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCB0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgMCwgIlVURi04Il9zIH07CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2Vt
ZW50RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCks
IHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAwNjEyOGI2YTNhM2MzNzMx
ZTFmYjcxNjlkNGU5ZjE1MzFlYzhkOWIyLi41ZTkzZGY2MGYyNDBmMzQ0YTZiYzBlY2IzM2E5YzE0
YTg3NzZkYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC0zMjksNyArMzMwLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNob3VsZFByZXBlbmRCT00oY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogLy8gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcv
I3V0Zi04LWRlY29kZQogU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgYXV0byBk
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRG
LTgiKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUodGV4
dFBsYWluQ29udGVudFR5cGVBdG9tKCksICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5k
Qk9NKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJm
IiwgMyk7CiAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKaW5kZXggY2RlN2FlNGNjMTBlZWY1YTZiMzg0ODI3MTA1N2IzNzA4ZjViNTczNS4uZjU5
ZWNmYzZjMDk2ZDQ0MDIwZWNkMzI2MmRjYTJkMjU0MjBmYWUzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2lmIEVOQUJMRShNSFRNTCkKICNpbmNsdWRlICJNSFRNTFBhcnNlci5oIgogCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJNSFRNTEFyY2hpdmUuaCIK
ICNpbmNsdWRlICJNSU1FSGVhZGVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpA
QCAtMTE5LDcgKzEyMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKIHZvaWQgTUhUTUxQYXJzZXI6
OmFkZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJj
aGl2ZSogYXJjaGl2ZSkKIHsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7Ci0gICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBtaW1lVHlwZSA9PSAidGV4dC9jc3MiKSB7Cisg
ICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
KG1pbWVUeXBlKSB8fCBtaW1lVHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKSkgewogICAgICAg
ICBtX3Jlc291cmNlcy5hcHBlbmQocmVzb3VyY2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IDE0Y2NkMmEzYjlmMzE3ZTVlMjRiNmVkN2Q2ZTE1YzVlY2E2OWVkMjkuLmY1MmE5
MmQwM2U1MzI4YzZkOTdjNTFjMGM1MTM3OGJmNjJhZGM4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGll
bnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKQEAgLTQwLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVK
YXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpDU1NTdHls
ZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9zLCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRv
bSgpLCByZXF1ZXN0LmNoYXJzZXQoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCBjMTQ0MzAyZjAzYmQ5
NTU2OWM2YzIwNDc0M2FlZGI4YmFlYWFlMzI4Li5iYjhhZTA2M2QwN2Y1ZTg1MWJkMmVlOTc1ZDFk
MmU2NmRhY2NhNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBFTkFCTEUoTUFU
SE1MKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TWFwRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAxMjUzYjU4MDA1YjUyZmJhMjQxMDgyODYxMjdj
NGQxMzJmMGQwNDVjLi45NDAzZTY1MmM4YjI4Yzc2MWQ0ODYwMjJkNzNkMjRmYzQ5NGMyZGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3Qu
aCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCkBAIC03MzAsNyAr
NzMxLDcgQEAgc3RhdGljIFN0cmluZyBhZGRBdWRpb1RyYWNrS2luZERpc3BsYXlOYW1lSWZOZWVk
ZWQoY29uc3QgQXVkaW9UcmFjayYgdHJhY2ssIGNvbnMKICAgICBpZiAoKHRyYWNrLmtpbmQoKSA9
PSBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKSB8fCB0cmFjay5raW5kKCkgPT0gQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpICYmICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tL
aW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKSkpCiAgICAgICAgIHJldHVybiBhZGRBdWRpb1Ry
YWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCh0ZXh0KTsKIAotICAgIGlmICh0cmFjay5raW5kKCkg
PT0gQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSAmJiAhdGV4dC5jb250YWlucyhhdWRp
b1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpKSkKKyAgICBpZiAodHJhY2sua2luZCgp
ID09IGNvbW1lbnRhcnlBdG9tKCkgJiYgIXRleHQuY29udGFpbnMoYXVkaW9UcmFja0tpbmRDb21t
ZW50YXJ5RGlzcGxheU5hbWUoKSkpCiAgICAgICAgIHJldHVybiBhZGRBdWRpb1RyYWNrS2luZENv
bW1lbnRhcnlTdWZmaXgodGV4dCk7CiAKICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKaW5kZXggOGQ3ZDllNjZkN2JjMWQ0MjlhYTVkN2ZmNDY2ODUwNDAwOGFh
Y2Q0ZC4uZDFiZDZkZjVjMzQ1Mjk5OGJkM2RlMTQ4YzA3NmQwOTQ5NzNlMTU1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFdmVu
dFNvdXJjZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgpAQCAtNTksNyArNjAsNyBAQCBpbmxpbmUgRXZlbnRTb3VyY2U6OkV2ZW50U291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLAogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV91cmwodXJsKQogICAgICwgbV93aXRo
Q3JlZGVudGlhbHMoZXZlbnRTb3VyY2VJbml0LndpdGhDcmVkZW50aWFscykKLSAgICAsIG1fZGVj
b2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJVVEYtOCIp
KQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSh0ZXh0UGxhaW5D
b250ZW50VHlwZUF0b20oKSwgIlVURi04IikpCiAgICAgLCBtX2Nvbm5lY3RUaW1lcigmY29udGV4
dCwgKnRoaXMsICZFdmVudFNvdXJjZTo6Y29ubmVjdCkKIHsKICAgICBtX2Nvbm5lY3RUaW1lci5z
dXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDkzNThiODQ2NGJiNTkzOTEw
NWE2ODk4NDc2ZmY2OTFhZWYzYzM3ODAuLmJjY2RlNTgxNTEwY2EyZmIxZjZjN2ZkMGQ4ZDY0NDYw
ODU3YzdlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRl
ICJDb25zdGFudFByb3BlcnR5TWFwLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKQEAgLTIwNjYsNyArMjA2Nyw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHlsZVNo
ZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpKS0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgcmV0dXJuIG1f
dXNlclN0eWxlU2hlZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmlu
ZGV4IDdmOWUxYjdhMjcwZDJiNWRiNjFmZTk4ZDdiMTA1MDBhN2U2Y2VlMTYuLjUwODk0ZTBkMjkw
Y2QzY2U1ZjIxOGJjNmYwODBiZGY4ODU4Yjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5o
IgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMu
aCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0y
NjAsNyArMjYxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5k
IGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRl
eHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFT
U0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5l
bmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgY3NzQ29udGVudFR5
cGVBdG9tKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4
dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAg
ICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAppbmRleCA0MzcxMjgwNDE5YzJlYWFiODk4ODJmMTRhMzRjYTkyNTc5
MjVmYzk4Li43ZGIzYjliYjYxZmJmZjZiOTMxY2JiNTk3ZTU4ZWFhNWJlYzRlMTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYyLDcgKzM2Myw3IEBA
IFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgaW50IHBhCiAgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9y
IHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUs
ICJtYXJnaW4tbGVmdCIpKSB7CiAgICAgICAgIGlmIChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0
bygpKQotICAgICAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1
dG9BdG9tKCk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVm
dCgpLnZhbHVlKCkpOwogICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5l
LWhlaWdodCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBkZmEz
ZTgyYTYyODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyLi5iZTIzODM0ZDdiZTQ1OTJmZmRj
MzI2MmVjM2FlYzdmZjg2NjFjYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
b2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5n
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NXYXJtaW5nLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5o
IgpAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFByb2Nlc3NXYXJt
aW5nOjppbml0aWFsaXplTmFtZXMoKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAg
ICBRdWFsaWZpZWROYW1lOjppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMThlNDJjOTlhMzIzMGUxMGFiZWUzNWJmNDUzNDI3NjBlZWY0YWE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCkBA
IC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlQXRvbURh
dGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9B
dG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y2FwdGlvbnNBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gY29tbWVudGFyeUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbWFpbEF0b21EYXRhOwor
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21E
YXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5
QXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IG1haW5BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gbm9uZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBvZmZBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb25BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcGxhaW50ZXh0T25seUF0b21EYXRhOworTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzZWFyY2hBdG9tRGF0YTsKK01h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURh
dGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRp
dGxlc0F0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB0ZWxBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gdGV4dEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cnVlQXRvbURhdGE7CitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCit2
b2lkIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpCit7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGluaXRpYWxpemVLZXk7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwg
W10geworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHNvIHRo
aXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZmlyc3QuCisg
ICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgICAgICBhbHRlcm5hdGl2ZUF0b21EYXRh
LmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGF1dG9BdG9tRGF0YS5jb25zdHJ1Y3RXaXRo
b3V0QWNjZXNzQ2hlY2soImF1dG8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgICAgIGNhcHRpb25zQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJj
YXB0aW9ucyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY29t
bWVudGFyeUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiY29tbWVudGFyeSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY3NzQ29udGVudFR5
cGVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvY3NzIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBlYWdlckF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIGVtYWlsQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0No
ZWNrKCJlbWFpbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAg
ZmFsc2VBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBsYXp5QXRvbURhdGEuY29uc3Ry
dWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJsYXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICBtYWluQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNr
KCJtYWluIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBub25l
QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJub25lIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBvZmZBdG9tRGF0YS5jb25zdHJ1Y3RXaXRo
b3V0QWNjZXNzQ2hlY2soIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICAgICAgb25BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBwbGFpbnRleHRPbmx5QXRv
bURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJwbGFpbnRleHQtb25seSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgcmVzZXRBdG9tRGF0YS5jb25z
dHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgICAgICBzZWFyY2hBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNz
Q2hlY2soInNlYXJjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgc3VibWl0QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJtaXQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN1YnRpdGxlc0F0b21E
YXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICB0ZWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRo
b3V0QWNjZXNzQ2hlY2soInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICAgICAgdGV4dEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvcGxhaW4i
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRydWVBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHVybEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nl
c3NDaGVjaygidXJsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0p
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29tbW9uQXRvbVN0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjQ2NDA3ODg2OTE5NWFkNjY3OTEyMTMy
YWMxOTI5NmFjNjJiZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29tbW9uQXRvbVN0cmluZ3MuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZXh0ZXJuIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRpdmVB
dG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IGF1dG9BdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IGNhcHRpb25zQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7Citl
eHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3ND
b250ZW50VHlwZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gZWFnZXJBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRvbURhdGE7CitleHRlcm4gTWFp
blRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRh
OworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bGF6eUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gbWFpbkF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb2ZmQXRvbURhdGE7CitleHRlcm4g
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRh
OworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
cGxhaW50ZXh0T25seUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcmVzZXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21EYXRhOworZXh0ZXJu
IE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRv
bURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBzdWJ0aXRsZXNBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHRlbEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEF0b21EYXRhOworZXh0ZXJuIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCitpbmxpbmUgY29uc3Qg
QXRvbVN0cmluZyYgYWx0ZXJuYXRpdmVBdG9tKCkgeyByZXR1cm4gYWx0ZXJuYXRpdmVBdG9tRGF0
YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9BdG9tKCkgeyByZXR1cm4g
YXV0b0F0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY2FwdGlvbnNB
dG9tKCkgeyByZXR1cm4gY2FwdGlvbnNBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0
b21TdHJpbmcmIGNvbW1lbnRhcnlBdG9tKCkgeyByZXR1cm4gY29tbWVudGFyeUF0b21EYXRhLmdl
dCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY3NzQ29udGVudFR5cGVBdG9tKCkgeyBy
ZXR1cm4gY3NzQ29udGVudFR5cGVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21T
dHJpbmcmIGVhZ2VyQXRvbSgpIHsgcmV0dXJuIGVhZ2VyQXRvbURhdGEuZ2V0KCk7IH0KK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbEF0b20oKSB7IHJldHVybiBlbWFpbEF0b21EYXRhLmdl
dCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgZmFsc2VBdG9tKCkgeyByZXR1cm4gZmFs
c2VBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGxhenlBdG9tKCkg
eyByZXR1cm4gbGF6eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYg
bWFpbkF0b20oKSB7IHJldHVybiBtYWluQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBB
dG9tU3RyaW5nJiBub25lQXRvbSgpIHsgcmV0dXJuIG5vbmVBdG9tRGF0YS5nZXQoKTsgfQoraW5s
aW5lIGNvbnN0IEF0b21TdHJpbmcmIG9mZkF0b20oKSB7IHJldHVybiBvZmZBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIG9uQXRvbSgpIHsgcmV0dXJuIG9uQXRvbURh
dGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5QXRvbSgp
IHsgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0
b21TdHJpbmcmIHJlc2V0QXRvbSgpIHsgcmV0dXJuIHJlc2V0QXRvbURhdGEuZ2V0KCk7IH0KK2lu
bGluZSBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hBdG9tKCkgeyByZXR1cm4gc2VhcmNoQXRvbURh
dGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXRBdG9tKCkgeyByZXR1
cm4gc3VibWl0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0
aXRsZXNBdG9tKCkgeyByZXR1cm4gc3VidGl0bGVzQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0ZWxBdG9tKCkgeyByZXR1cm4gdGVsQXRvbURhdGEuZ2V0KCk7IH0K
K2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0QXRvbSgpIHsgcmV0dXJuIHRleHRBdG9tRGF0
YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbkNvbnRlbnRUeXBl
QXRvbSgpIHsgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGEuZ2V0KCk7IH0KK2lu
bGluZSBjb25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5n
ZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHVybEF0b20oKSB7IHJldHVybiB1cmxB
dG9tRGF0YS5nZXQoKTsgfQorCitXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVDb21tb25B
dG9tU3RyaW5ncygpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYz
ZWQ1ZGY5NTguLjQ1Y2NiNmIzOTY4ODJlMGVlYTI2YzExYmRmYjc2ZTFmYTJkYzVlNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDQs
NyArNDUsNyBAQCBQYXN0ZWJvYXJkQnVmZmVyOjp+UGFzdGVib2FyZEJ1ZmZlcigpID0gZGVmYXVs
dDsKIAogYm9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0
eXBlID09ICJ0ZXh0L2h0bWwiIHx8IHR5cGUgPT0gInRleHQvdXJpLWxpc3QiOworICAgIHJldHVy
biB0eXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHx8IHR5cGUgPT0gInRleHQvaHRt
bCIgfHwgdHlwZSA9PSAidGV4dC91cmktbGlzdCI7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2Fu
RXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3Bw
CmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjVlYzJkOTA3
MWIyZGQyZGVkZDYxYjQ4ZDQ4OWQ3MGZkYTdlY2UwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3Jp
dGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6
d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7
Ci0gICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0KTsKKyAg
ICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHRl
eHQpOwogfQogCiB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5jcHAKaW5kZXggYzcxMjAxNjEwOTU4N2FkNWRjNGM5ZTFjOWEzNjFkYmU4ZjY5MzMyYS4uOTRm
NDFmNzRmM2U2N2ZhM2YwZGNlOWE2YTdlOTBlYWFlMmE0MDhiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMjksNyArMTMwLDcgQEAgYm9v
bCBBbmltYXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIG90aGVyLCBib29s
IG1hdGNoUHJvcGVydGllcykgY28KIAogYXV0byBBbmltYXRpb246OmluaXRpYWxOYW1lKCkgLT4g
Y29uc3QgTmFtZSYKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmFtZT4gaW5pdGlhbFZh
bHVlIHsgTmFtZSB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJub25lIiksIHRydWUgfSB9Owor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBpbml0aWFsVmFsdWUgeyBOYW1lIHsgbm9u
ZUF0b20oKSwgdHJ1ZSB9IH07CiAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGMw
OGUxZmYxMWU3YjcxNWI3YjlmMDhmZmJkYTc1M2Q5MmY5Mjk4OTkuLjhhMDZhYzZiZDI4NTk3MTk1
OGUyZGY0MjEzMzY1NDhhYWM0MGI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFR5cGUuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJGb3VyQ0MuaCIKQEAgLTMzMSwxMiArMzMyLDYgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogICAgIHJldHVybiBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKLXsKLSAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQ
bGFpbigidGV4dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICByZXR1cm4gdGV4dFBsYWluOwotfQotCiBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UqIE1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLmdldCgpOwpAQCAtNDg1LDcgKzQ4MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
CiAKICAgICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcgb3IgaXMgbm90IG1lYW5pbmdm
dWwsIHRyeSB0byBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4KICAgICBBdG9tU3RyaW5nIGNv
bnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKLSAgICBpZiAoY29u
dGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgeworICAgIGlmIChjb250
YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRT
dHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKSB7
CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICAgICAgbV9jb250
ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkp
KTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0KaW5kZXggZWIyOWYyNThmZDE4M2U0MDIwNTk1ZWY2YWQ4NzExNDcw
YzQ3MTk0Zi4uNTUzMWY3NmY1NDhlZjA1ZmZlYTk2ZWQzMDFjYWQwM2NkNWViOTJjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIK
QEAgLTY5Miw2ICs2OTMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICAv
LyBJbml0aWFsaXplIEF0b21TdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFdURjo6QXRv
bVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJ
IHRocmVhZCBzbyB0aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQg
aXQncyB0aHJlYWQtc3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRl
eCA2NjcwOGVjMDAxNGUwZTAyNzI5ODU4MGM4N2QwNzljODZiN2QzODViLi4yMmRhYmViNDJhMDQ4
YmY2ZDRlYzhkOTM1NTJlNTRjYWJkMzUwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9u
c2VJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxS
ZXNwb25zZUlPUy5oCmluZGV4IGYzMDI4NzgwMmFlMjQwNjlmNWJhMjI4MjM1MDY5OWU5MDM2MjA4
YTUuLmRjZTFiYjg3NTdmN2VmZjE3ZGZiMDJkYmQzOTZlYzY5YWI1ODA2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlP
Uy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxS
ZXNwb25zZUlPUy5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MiwxMCArNDMsMTAgQEAgaW5saW5lIGJvb2wgc2hvdWxk
VXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBp
ZiAoKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5
cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdlIE1JTUUgdHlwZXMKICAgICAg
ICAgICYmICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5
cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlNRSB0eXBlcwotICAgICAgICAg
JiYgbWltZVR5cGUgIT0gInRleHQvY3NzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWdub3JlIGNzcworICAgICAgICAgJiYgbWltZVR5cGUgIT0gY3NzQ29udGVudFR5
cGVBdG9tKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIGNzcwogICAgICAg
ICAgJiYgbWltZVR5cGUgIT0gImFwcGxpY2F0aW9uL3BkZiIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWdub3JlIHBkZgogICAgICAgICAgKQotICAgICAgICB8fCBtaW1lVHlwZSA9
PSAidGV4dC9wbGFpbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0
IGtlZXAgdGV4dC9wbGFpbiB3aGljaCBpcyB0b28gZ2VuZXJpYyBhbmQgY2FuIGhpZGUgc29tZXRo
aW5nCisgICAgICAgIHx8IG1pbWVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpICAg
ICAgICAgICAgICAgICAgICAgICAvLyBidXQga2VlcCB0ZXh0L3BsYWluIHdoaWNoIGlzIHRvbyBn
ZW5lcmljIGFuZCBjYW4gaGlkZSBzb21ldGhpbmcKICAgICAgICAgfHwgKG1pbWVUeXBlID09ICJ0
ZXh0L3htbCIgfHwgbWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIpKSAgIC8vIGFuZCBrZWVw
IFhNTCB0eXBlcyBmb3IgLm1vYmlsZWNvbmZpZyBmaWxlcwogICAgIHsKICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcAppbmRleCBjODRkNDkwYzMyZDhjY2M3
Yjc0ZjQ0N2JmYjA5NzY1MDI3YmE3N2Q4Li5jNDQ0MTJhZDk0YTU5OWFjNjAzMWYxYmJmY2MzODZh
MjBlNjM0YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJDU1NBbmltYXRpb24uaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1h
dGlvbi5oIgogI2luY2x1ZGUgIkNTU1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCkBAIC0yNTcsNyArMjU4
LDcgQEAgYm9vbCBTdHlsZWFibGU6OmFuaW1hdGlvbkxpc3RDb250YWluc05ld2x5VmFsaWRBbmlt
YXRpb24oY29uc3QgQW5pbWF0aW9uTGlzdCYgYW4KIAogICAgIGZvciAoYXV0byYgYW5pbWF0aW9u
IDogYW5pbWF0aW9ucykgewogICAgICAgICBhdXRvJiBuYW1lID0gYW5pbWF0aW9uLT5uYW1lKCku
c3RyaW5nOwotICAgICAgICBpZiAobmFtZSAhPSAibm9uZSIgJiYgIW5hbWUuaXNFbXB0eSgpICYm
IGtleWZyYW1lRWZmZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1l
KSAmJiBrZXlmcmFtZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5n
ZXQoKSwgbmFtZSkpCisgICAgICAgIGlmIChuYW1lICE9IG5vbmVBdG9tKCkgJiYgIW5hbWUuaXNF
bXB0eSgpICYmIGtleWZyYW1lRWZmZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9u
TmFtZShuYW1lKSAmJiBrZXlmcmFtZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFu
aW1hdGlvbi5nZXQoKSwgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTMwMiw3ICszMDMsNyBAQCB2b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhj
b25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBhbmltYXRpb25OYW1lID0gY3VycmVu
dEFuaW1hdGlvbi0+bmFtZSgpLnN0cmluZzsKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1l
ID09ICJub25lIiB8fCBhbmltYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChh
bmltYXRpb25OYW1lID09IG5vbmVBdG9tKCkgfHwgYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICgha2V5ZnJhbWVzUnVs
ZUV4aXN0c0ZvckFuaW1hdGlvbihlbGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLmdldCgpLCBhbmlt
YXRpb25OYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHAKaW5kZXggNGI2YzUzMGJlOWRjZDBlZjRlNTIwYThmMTBmMmJjNDZhMTM1ZmRhYi4u
YTY1ZWMxYzhlODEzZTQ2MmFmOWNlNDE0MTFlOTIyODAwY2EwMGE0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
RWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtMTEwLDEwICsxMTEsOSBAQCB2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdAogICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbCgiYXV0byIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9SZXZlcnNlKCJhdXRvLXJldmVy
c2UiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbVN0
cmluZyYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKLSAgICBp
ZiAocm90YXRlID09IGF1dG9WYWwpCisgICAgYXV0byYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNW
R05hbWVzOjpyb3RhdGVBdHRyKTsKKyAgICBpZiAocm90YXRlID09IGF1dG9BdG9tKCkpCiAgICAg
ICAgIHJldHVybiBSb3RhdGVBdXRvOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1JldmVyc2UpCiAg
ICAgICAgIHJldHVybiBSb3RhdGVBdXRvUmV2ZXJzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcAppbmRleCA1MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYw
ZTIwNDYxODRlLi5lNzdhMTU3MzMzNGQ0MzNiNGRjYWZhNjAxODA3ZjMxM2Q2Y2U2NmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0zMTksMTggKzMx
OSwyMiBAQCBTdHJpbmcgU1ZHQW5pbWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgY29uc3QKICAg
ICByZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZnJvbUF0
dHIpOwogfQogCi1ib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAor
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1bUF0b20oKQogewogICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VtKCJzdW0iLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHN1bTsKK30KKworYm9vbCBTVkdB
bmltYXRpb25FbGVtZW50Ojppc0FkZGl0aXZlKCkgY29uc3QKK3sKICAgICBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFk
ZGl0aXZlQXR0cik7Ci0gICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRpb25Nb2RlKCkg
PT0gQW5pbWF0aW9uTW9kZTo6Qnk7CisgICAgcmV0dXJuIHZhbHVlID09IHN1bUF0b20oKSB8fCBh
bmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6Qnk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsK
LSAgICByZXR1cm4gdmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25N
b2RlOjpUbzsKKyAgICByZXR1cm4gdmFsdWUgPT0gc3VtQXRvbSgpICYmIGFuaW1hdGlvbk1vZGUo
KSAhPSBBbmltYXRpb25Nb2RlOjpUbzsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojpp
c1RhcmdldEF0dHJpYnV0ZUNTU1Byb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmM2FkMTU3MDExNmNlMmEw
N2U1MTQxMDExMGI2ZGJhZDIyODc5NzgzLi43YzE2NjQzZWU5ZDY5N2QxMGQ0ZDYzNzgxZjFjZTM4
ZjUyZDZlZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggOWFkMWU0YzM4
YWU1N2RiZDhlZjNmMmNkNGZiNmU2OWRkOWQyNDJiYi4uODk5MmVjOTkzNjhkZTNiYWNkNTc4ODZm
MzhkMGJmM2U4MWI0Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXgu
aCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApA
QCAtNDAsNyArNDEsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7
CiAgICAgICAgIGNhc2UgRWRnZU1vZGVUeXBlOjpXcmFwOgogICAgICAgICAgICAgcmV0dXJuICJ3
cmFwIl9zOwogICAgICAgICBjYXNlIEVkZ2VNb2RlVHlwZTo6Tm9uZToKLSAgICAgICAgICAgIHJl
dHVybiAibm9uZSJfczsKKyAgICAgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgICAgICB9
CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01Myw3ICs1NCw3IEBAIHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+IHsKICAgICAgICAgICAgIHJldHVybiBF
ZGdlTW9kZVR5cGU6OkR1cGxpY2F0ZTsKICAgICAgICAgaWYgKHZhbHVlID09ICJ3cmFwIikKICAg
ICAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5cGU6OldyYXA7Ci0gICAgICAgIGlmICh2YWx1ZSA9
PSAibm9uZSIpCisgICAgICAgIGlmICh2YWx1ZSA9PSBub25lQXRvbSgpKQogICAgICAgICAgICAg
cmV0dXJuIEVkZ2VNb2RlVHlwZTo6Tm9uZTsKICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6
VW5rbm93bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCmluZGV4IDA2NzAz
NDE1ZTg5OTVkOGViNDU5ODAzMGI3YjMwZmMxNDliOThkMDAuLmFmOTYzYzI4ZDA2ZDU5ZmM0Nzc3
ODIwYzA1ZDM1MzQ2YjM3ZGQxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVy
dHlUcmFpdHMuaCIKIApAQCAtNzUsMTEgKzc2LDYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR01hcmtlclVuaXRzVHlwZT4gewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0
b1N0cmluZygpCi0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBhdXRvU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8iKTsKLSAgICAg
ICAgcmV0dXJuIGF1dG9TdHJpbmc7Ci0gICAgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0
b1N0YXJ0UmV2ZXJzZVN0cmluZygpCiAgICAgewogICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RS
SU5HX0lNUEwoImF1dG8tc3RhcnQtcmV2ZXJzZSIpOwpAQCAtODgsNyArODQsNyBAQCBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRpYyB1bnNp
Z25lZCBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHTWFya2VyT3JpZW50QW5nbGU7IH0K
ICAgICBzdGF0aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIHsKLSAgICAgICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkpCisgICAg
ICAgIGlmIChzdHJpbmcgPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJr
ZXJPcmllbnRBdXRvOwogICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdGFydFJldmVyc2VTdHJp
bmcoKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNl
OwpAQCAtOTcsNyArOTMsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3Jp
ZW50VHlwZT4gewogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyT3JpZW50VHlw
ZSB0eXBlKQogICAgIHsKICAgICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykK
LSAgICAgICAgICAgIHJldHVybiBhdXRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gYXV0
b0F0b20oKTsKICAgICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0b1N0YXJ0UmV2
ZXJzZSkKICAgICAgICAgICAgIHJldHVybiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCk7CiAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcAppbmRleCAwOGNmNGIwM2MyNTE1YjYyMDgwMDA1NzI1ZjAyMjkyM2I0ZDZiN2FiLi42YTAz
MWIwYmM0YjI0YTVkYjc0ODM4ZTdhZjAwNWQ5NTEwNmM0NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVFbGVtZW50LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxl
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVt
ZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC02NSw5ICs2Niw4IEBAIHZv
aWQgU1ZHU3R5bGVFbGVtZW50OjpzZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBTVkdTdHlsZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGVmYXVsdFZhbHVl
KCJ0ZXh0L2NzcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25z
dCBBdG9tU3RyaW5nJiBuID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7Ci0gICAg
cmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOworICAgIGF1dG8mIHR5
cGVWYWx1ZSA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOworICAgIHJldHVybiB0
eXBlVmFsdWUuaXNOdWxsKCkgPyBjc3NDb250ZW50VHlwZUF0b20oKSA6IHR5cGVWYWx1ZTsKIH0K
IAogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCA2YTIyNDhjN2Y4NWE2
MDQ0NGQ2N2RiN2E5MWE3ZDhlYjliY2MxZjAwLi41ZGNlZGUzMTMzM2UwMjgzYzJjZjYwMDAyOTk4
ZTVjMWJjMzU3MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBA
IC0yMCw2ICsyMCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RleHRDb250ZW50
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtNzcsNyArNzgsNyBA
QCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gewogICAg
ICAgICBjYXNlIFNWR1RleHRQYXRoU3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICAgICAgICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOgotICAg
ICAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7
CiAgICAgICAgIGNhc2UgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1
cm4gImV4YWN0Il9zOwogICAgICAgICB9CkBAIC04OCw3ICs4OSw3IEBAIHN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiB7CiAKICAgICBzdGF0aWMgU1ZHVGV4
dFBhdGhTcGFjaW5nVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewot
ICAgICAgICBpZiAodmFsdWUgPT0gImF1dG8iKQorICAgICAgICBpZiAodmFsdWUgPT0gYXV0b0F0
b20oKSkKICAgICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOwogICAgICAg
ICBpZiAodmFsdWUgPT0gImV4YWN0IikKICAgICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNw
YWNpbmdFeGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5jcHAKaW5kZXggMTZlYWI2NTIwZTg4YmNjYzM1Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNS4u
NGNjNWRkNzIzYjhiYTkxOGMxZTU2OTVmMjg2N2NjZmM3ZTllYzZjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTY4LDYgKzY4LDEy
IEBAIHN0YXRpYyBTTUlMRXZlbnRTZW5kZXImIHNtaWxFbmRFdmVudFNlbmRlcigpCiAgICAgcmV0
dXJuIHNlbmRlcjsKIH0KIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluZGVmaW5pdGVBdG9t
KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICByZXR1cm4gaW5kZWZpbml0ZVZhbHVlOworfQorCiAvLyBUaGlzIGlz
IHVzZWQgZm9yIGR1cmF0aW9uIHR5cGUgdGltZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBuZWdhdGl2
ZS4KIHN0YXRpYyBjb25zdCBkb3VibGUgaW52YWxpZENhY2hlZFRpbWUgPSAtMS47CiAgICAgCkBA
IC0zMzgsOSArMzQ0LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1
ZShTdHJpbmdWaWV3IGRhdGEpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgp
OwogCiAgICAgYXV0byBwYXJzZSA9IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVW
YWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICBpZiAocGFyc2UgPT0gaW5kZWZpbml0ZVZhbHVlLmdldCgpKQorICAgIGlmIChwYXJzZSA9PSBp
bmRlZmluaXRlQXRvbSgpKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsK
IAogICAgIGRvdWJsZSByZXN1bHQgPSAwOwpAQCAtNjk4LDggKzcwMiw3IEBAIFNNSUxUaW1lIFNW
R1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVl
KCJpbmRlZmluaXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlm
ICh2YWx1ZSA9PSBpbmRlZmluaXRlVmFsdWUpCisgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVB
dG9tKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogICAgIGJvb2wg
b2s7CiAgICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLnN0cmluZygpLnRvRG91YmxlKCZvayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0
cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApp
bmRleCBlNzc2NWFjY2U4NDgzMzE1ZDNiNzQ0MmM4MDA5ZDkzYmQ5MjcyNDBiLi42MGE2OTkwYjJk
ZDUwOGE3OTc1Y2VjMTM2MWU2YTlkN2RiMDFmMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9y
U2VyaWFsaXphdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlF1YWxp
ZmllZE5hbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYTE2ZGZjNGEyMmRi
MDIzNTYyMGE3YjlmN2U5Yzc4ZDE5N2JiOTA3Ni4uNmRhZDJkNGZlMzg5YWJlZGU5M2M5ZjY0MDdi
YjZhOTZhNjRlY2IzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRM
b29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiYgY29udGV4dERhdGEsCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
dG9tU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiB9
CiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCmluZGV4IGQyMjk1NGJiYTNmMWNlMGI4YTFkZTk2
YmE2MDIxNjkzZjQ4MTMzOTEuLmMzMDViYzBiNWUyNzg0NzVhYmJjMjQ3NmI4YjIyMmNmNDllYmRj
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJYUGF0aFZhbHVlLmgiCiAKKyNpbmNsdWRlICJDb21t
b25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlhQYXRoRXhwcmVzc2lvbk5vZGUuaCIKICNpbmNs
dWRlICJYUGF0aFV0aWwuaCIKICNpbmNsdWRlIDxsaW1pdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXggMTY1OGZjMDAwZDFmNzgwNzUyOTZlODgzMDY1MTk0MWY2
MjZjMjBjNi4uN2FmZDg5MzhmYzQ0Njg3NjBhNzg5NzA4NTU2ZGU2ZWEzMzI5Y2U2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlSZWxlYXNlLmg+CkBAIC0yMjcsNiArMjI4LDcgQEAgdm9p
ZCBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBHUFVQ
cm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzczoiLCB0aGlzKTsKICAgICBXVEY6OlRocmVhZDo6
c2V0Q3VycmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQo
KTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIGF1
dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xl
dG9uKCk7CiAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExvd01lbW9yeUhhbmRsZXIoW3Ro
aXNdIChDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNTMw
Y2JjZDVhMDZlMDQyZGI2NjVhNTA4YTBjNmIwY2Q0ZDE4MWYxOS4uZDgxYWQ4OTEyZTJhY2E2ZDk3
ZmMyNDgzOGVmNTQ0NWVkOTkxMTEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db21t
b25BdG9tU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5ncy5oPgpAQCAtMzE4LDYgKzMxOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAg
ICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0
b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmlu
Z3MoKTsKIAogICAgIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBwYXJhbWV0ZXJz
LnNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogICAgIGlmICghbV9zdXBwcmVz
c01lbW9yeVByZXNzdXJlSGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0KaW5kZXggYzI4MGNmZmUzOTgzZmZjOWRm
Y2M1ZjUxNjRiMzRjNjQ0YjMyYWY2Zi4uYjRkOTEyMWJjYmU3M2M3ZGQ5NDVjYjEwN2RhMDZhZDBi
MjIyMjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0Mklu
aXRpYWxpemVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQy
SW5pdGlhbGl6ZUNvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJLaXQySW5p
dGlhbGl6ZS5oIgogCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5n
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVKSVRPcGVyYXRpb25zLmg+CiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHd0
Zi9HZW5lcmF0ZVByb2ZpbGVzLmg+CkBAIC01MCw2ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJ1bklu
aXRpYWxpemF0aW9uQ29kZSh2b2lkKiA9IG51bGxwdHIpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKFtOU1RocmVhZCBpc01haW5UaHJlYWRdLCAiSW5pdGlhbGl6ZVdlYktpdDIgc2hv
dWxkIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQiKTsKIAogICAgIEF0b21TdHJpbmc6Omlu
aXQoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEluaXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNl
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0
aWFsaXplLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcApp
bmRleCBlNWMwOTZmMjhkMjhhYmZmNDNjOTM3MTRmNjVkZTdiZjMyYTMyY2RhLi4wM2ZjYzExMTlm
YWIyYWIxY2IwOTdkYjI4MGNlMTgxOThjNzVhZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViS2l0MkluaXRpYWxpemUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dJ
bml0aWFsaXphdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29y
ZUpJVE9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvR2VuZXJhdGVQcm9maWxlcy5oPgpAQCAt
NDUsNiArNDYsNyBAQCB2b2lkIEluaXRpYWxpemVXZWJLaXQyKCkKICAgICBKU0M6OmluaXRpYWxp
emUoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgQXRvbVN0cmluZzo6
aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAg
ICAgV1RGOjpSZWZDb3VudGVkQmFzZTo6ZW5hYmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKaW5kZXggN2Y2OGZkMzIzNjdlOTViOTdjNTM1M2ZmMjhiY2NjMWQ5ZjE1
ODhkNS4uNzdiOWE1ZWEzYmVlYTU1ZGQxYTY3MjA4YTE5MDA4MjRhOTA5Zjc5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuaD4KQEAgLTU0Niw2ICs1NDcsNyBAQCB2b2lkIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmll
ciwgV1RGOgogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
ICAgIFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICAKICAgICBhdXRvIHBhcnNl
ZFJ1bGVzID0gV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoanNvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKaW5kZXggODc1NTQ4
YmM0ZmE1YzYyY2RiMjAzYWNhOWUxYzVjYjdiZTUyNDViYS4uZjZhNzc2ZmI1MGI2YWMwYWEzMDcz
N2U2OTdiOWIxNmUwODQ5NDhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0R3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdy
YXBoaWNzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMu
aCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250RGVzY3JpcHRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgpAQCAtNDcsNiArNDgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBGb250Q2FzY2FkZSBtYWtlRm9udChjb25z
dCBXZWJGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQogewogICAgIEF0b21TdHJpbmc6Omlu
aXQoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAg
IFN0cmluZyBmb250RmFtaWx5U3RyaW5nKGRlc2NyaXB0aW9uLmZhbWlseSwgZGVzY3JpcHRpb24u
ZmFtaWx5TGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGQ1ZTZjMTg3YzdkODUwOTE2ZDEzNmM5MWJmMGU4NTI1NTNiZGNjNWEuLmY4
YmYyMDViZDBmYzgwMzRkN2E5MGFjZmIyOWZjMjkwOTRmMDE5NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0w
NC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xv
YmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBwcm9tb3RlIHJldXNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjptYWtlQmFja2VuZCk6CisKIDIwMjItMDQtMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHJlY2VudCBkZXByZWNhdGlv
biB3YXJuaW5ncyBvbiBpT1MuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCA3YjY4Njk3ZTY0ZmVkZmU4Njlj
NzE4OThiZGYzZTNlNGJiNjI5ZDQ5Li43Y2Y2YjcyNTUxZmE0Mzc0YTdhMTAzNjM5YmQyZWVhY2U3
ZGZlZTZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29u
dGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJVdGls
aXRpZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21iaW5lZFVSTEZpbHRlcnMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5z
aW9uQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaD4KQEAgLTIxMyw2
ICsyMTQsNyBAQCBzdGF0aWMgUmVzb3VyY2VMb2FkSW5mbyByZXF1ZXN0SW5Ub3BBbmRGcmFtZVVS
THMoQVNDSUlMaXRlcmFsIHVybCwgQVNDSUlMaXRlcmFsCiBDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kIG1ha2VCYWNrZW5kKFN0cmluZyYmIGpzb24pCiB7CiAgICAg
QXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3Ry
aW5ncygpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRl
bnNpb246OmNyZWF0ZShXVEZNb3ZlKGpzb24pKTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CiAgICAgYmFja2VuZC5hZGRDb250ZW50RXh0
ZW5zaW9uKCJ0ZXN0RmlsdGVyIl9zLCBXVEZNb3ZlKGV4dGVuc2lvbiksIHsgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458063</attachid>
            <date>2022-04-21 08:24:34 -0700</date>
            <delta_ts>2022-04-21 08:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220421082433.patch</filename>
            <type>text/plain</type>
            <size>128458</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2NGY4MzU4ZmEwZTU1NTNjYzc2ZWU5
YzlmZDkzNDdhZjIwOGJhY2MuLjNjZDM0MDhhYzNiOWY2NDFlYTUzMDY1YTQ3NTYzYWYyZTdkMzBm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHRydWUgLyBmYWxz
ZSBBdG9tU3RyaW5ncyB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIHJldXNlIHRoZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1NjA5YjUzOTk3MWE4NzQzZGNlNzcyMjNkMmFhYTdiZWQ4ZTM3Yjg5Li45YzllZDRh
MmU2YjY5Y2NjNjIwOWQyNDkyY2RkN2EwZWI5OTBhMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjI2IEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21v
dGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkVmZmVjdDo6Z2V0VGltaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkVmZmVjdDo6dXBkYXRlVGltaW5nKToKKyAgICAgICAgKiBhbmltYXRpb24vRWZm
ZWN0VGltaW5nLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aXNWYWxp
ZENTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZGlzcGxheSBj
b25zdCk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRmVhdHVyZU5hbWVzOjppbml0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6OmRyb3BFZmZlY3QgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6Cisg
ICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9Gb250U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZhbHVl
Rm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAgKiBodG1sL0F1
dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhU
TUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVWYWx1ZUZv
ckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlG
dW5jdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVmFsaWRE
aXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OmF1dG9jb21wbGV0ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJp
bmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlbG9hZCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvSW5wdXRNb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0TW9kZU5hbWVzOjpub25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0ZWwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1v
ZGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnNlYXJj
aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFt
ZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eUltcGwpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmtpbmRLZXl3b3JkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjYXB0aW9uc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpwb3NpdGlvbkFsaWduIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZUVEN1ZTo6c2V0UG9zaXRpb25BbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRD
dWU6OnRvSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdXRvS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVmlkZW9UcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9j
dW1lbnQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUpOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjphZGRSZXNv
dXJjZVRvQXJjaGl2ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREaXNwbGF5TmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpFdmVudFNvdXJjZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICog
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6aW5pdGlhbGl6ZU5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJp
bmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsdGVybmF0aXZlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjphdXRv
QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpjYXB0aW9uc0F0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tbWVudGFyeUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y3NzQ29udGVudFR5cGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OmVhZ2VyQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjplbWFp
bEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2VBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmxhenlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om1haW5BdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6Om5vbmVBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om9mZkF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6b25BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlBdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc2V0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ym1pdEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c3Vi
dGl0bGVzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZWxBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRQbGFpbkNvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp1cmxB
dG9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0UGxhaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZVF1
aWNrTG9va0Zvck1JTUVUeXBlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphbmltYXRpb25MaXN0Q29udGFpbnNOZXdseVZhbGlk
QW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdW1BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWRkaXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlw
ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VN
b2RlVHlwZT46OmZyb21TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJUeXBlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyT3JpZW50VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+OjphdXRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
RWxlbWVudDo6dHlwZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGVmaW5pdGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50IGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bV9ub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVl
LmNwcDoKKwogMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgdHJ1ZSAvIGZhbHNlIEF0b21TdHJpbmdzIHRvIGEgY2VudHJhbCBsb2NhdGlv
biBhbmQgcmV1c2UgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDAwOGM3YTg1NGM3NDIxZDc3ODRkZjM5MWFi
MzU0ZDJjMjIxNzA3Li5kYjczMmMyMDY2YTMwZWYzZTYxYWY1YjRlMzBjYjlkZjNkZWUxOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21t
b24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZUdQVVByb2Nlc3MpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnJ1bkluaXRp
YWxpemF0aW9uQ29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisKIDIwMjItMDQtMjAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVh
c2UgYXNzZXJ0IGxvZ2dpbmcgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGEyMDc5
ZjNhYjVmNmE4ZThhODViYjUxNjk4YmYxY2U0MjdlMGQ5MzQuLjA5YmI0Mzk3ZDhkMGI4NWFkMDli
ODQ3MDNmMmI0ZDhkNTcwMTAyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBw
cm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKG1ha2VGb250KToKKwogMjAyMi0w
NC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3Ry
aW5nOjp0cnVuY2F0ZSgpIGFuZCB1c2UgU3RyaW5nOjpsZWZ0KCkgaW5zdGVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZy5jcHAKaW5kZXggOTMwZmNiMjk5NzY4NDhkMzE4ZmNiZTEyODM0YTlmNGIz
ZWM1YTgwMy4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRmYTA3Y2EzYTFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMzcsOCArMTM3LDYgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRh
OwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sQXRvbURhdGE7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB4bWxuc0F0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOwotV1RGX0VYUE9SVF9QUklW
QVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VB
dG9tRGF0YTsKIAogdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKIHsKQEAgLTE1OSw4ICsxNTcsNiBA
QCB2b2lkIEF0b21TdHJpbmc6OmluaXQoKQogICAgICAgICBzdGFyQXRvbURhdGEuY29uc3RydWN0
V2l0aG91dEFjY2Vzc0NoZWNrKCIqIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1sbnNBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbG5zIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICB0cnVlQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFj
Y2Vzc0NoZWNrKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
ICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2UiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nLmgKaW5kZXggNzYzMTE1YTY2NjdiODg4M2JlNWNiY2UzYmViZjQ1NDYwMzEz
NTk1Yi4uMGFkZjUyMjNiYjYwMjljM2RlOTg5YzY4MzE3NDAxNjZmMDZjNzA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmgKQEAgLTI5MywxNiArMjkzLDEyIEBAIGV4dGVybiBXVEZfRVhQT1JU
X1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtcHR5QXRvbURh
dGE7CiBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0
b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbG5zQXRvbURhdGE7Ci1leHRlcm4gV1RGX0VYUE9S
VF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
dHJ1ZUF0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBudWxsQXRvbSgpIHsgcmV0dXJuIG51bGxBdG9tRGF0YS5nZXQoKTsg
fQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRv
bURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdGFyQXRvbSgpIHsgcmV0
dXJuIHN0YXJBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHhtbEF0
b20oKSB7IHJldHVybiB4bWxBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHhtbG5zQXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGZhbHNlQXRvbSgpIHsgcmV0dXJuIGZhbHNlQXRv
bURhdGEuZ2V0KCk7IH0KIAogaW5saW5lIEF0b21TdHJpbmcgQXRvbVN0cmluZzo6ZnJvbVVURjgo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTM2Miw5ICszNTgs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRv
bVN0cmluZz4gewogdXNpbmcgV1RGOjpBdG9tU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsK
IHVzaW5nIFdURjo6ZW1wdHlBdG9tOwotdXNpbmcgV1RGOjpmYWxzZUF0b207CiB1c2luZyBXVEY6
OnN0YXJBdG9tOwotdXNpbmcgV1RGOjp0cnVlQXRvbTsKIHVzaW5nIFdURjo6eG1sQXRvbTsKIHVz
aW5nIFdURjo6eG1sbnNBdG9tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4MGJiZWE4ZTcyMzRm
MDU1ZWZkNmUzNDAwNzUwYjM3ZjMzMTc4Y2FlLi4yOTc0MGNmNmE0MTlkYjg5NWI4MjFjYzlmOTI2
ZTdlOWQ1N2YwMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDAsNiArMTI0MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9DUFVNb25p
dG9yLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXIuaAogICAgIHBsYXRmb3JtL0NvbG9yQ2hv
b3NlckNsaWVudC5oCisgICAgcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaAogICAgIHBsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuaAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQ5ZjNiMzA3NTcy
MTE1Nzc3Nzg1OWMwYmFiMTYwMWQwY2Y4ZTk1ZTkuLjQ2OWNjM2FkYjVmYmY3YjM4MTQ5MmQzZWNk
NDIxOTI2Y2RjZmRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3RpdmVQYXN0
ZWJvYXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKICAgICB9CiAKLSAg
ICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgIGlmICh0eXBlID09IHRleHRQbGFp
bkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5U
ZXh0UmVhZGVyOwogICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFk
ZXIsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKICAg
ICAgICAgcmVzdWx0QXNTdHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCmluZGV4IGM5YjdmYzFkNTJmYTZmYTI0NjNkNTBmNTZiODk0ZWI1ZTZmYjUwNDEu
LjgzYmY5ZTUwMTYzZjRlOWNjYTFiMzRhYTMwYTQ1YTI0YTg2YjRiNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEzNiw3ICsxMzcsNiBAQCBj
b25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzcGVl
Y2hIaW50KCJzcGVlY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtdXNpY0hp
bnQoIm11c2ljIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgi
ZGV0YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEhpbnQoInRleHQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb3Rpb25IaW50KCJtb3Rpb24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKG1fcHJpdmF0
ZS0+Y29udGVudEhpbnQoKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50KCkgY29uc3QKICAgICBjYXNlIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkRldGFpbDoKICAgICAgICAgcmV0dXJuIGRldGFp
bEhpbnQ7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0
OgotICAgICAgICByZXR1cm4gdGV4dEhpbnQ7CisgICAgICAgIHJldHVybiB0ZXh0QXRvbSgpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICB9CkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRDb250ZW50SGludChjb25zdCBT
dHJpbmcmIGhpbnRWYWx1ZSkKICAgICAgICAgICAgIHZhbHVlID0gTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OkhpbnRWYWx1ZTo6RGV0YWlsOwogICAgICAgICBlbHNlIGlmIChoaW50VmFsdWUgPT0g
Im1vdGlvbiIpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpI
aW50VmFsdWU6Ok1vdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJ0ZXh0IikK
KyAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09IHRleHRBdG9tKCkpCiAgICAgICAgICAgICB2
YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OlRleHQ7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMGFmM2QwNmE1YjBi
YmM2OGZjMDExMzNiY2NmZTFmMmNkOTcwZTg5ZS4uNWQyMzE2ZmFjNzM5MzEwYzU4MGRiNmJlNWRi
ZWY0MWE5OTFhZmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjcsNiArMTg2Nyw3IEBAIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcAorcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCiBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMyOTEzMGViYzc2N2U1NzgzOTk5ZjdkMDY4N2IxZjExMjJlZDkyYjYu
LmVkZGE0MzA5NjIzN2NjOGI0ODIwZmE2MzgyNGRkODcxMzU3MmE2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzIsNiAr
MjczMiw3IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJG
MkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1
Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQu
aCAqLzsgfTsKIAkJODM5QkU2RDUyNEY1ODc2MjAwNERGNTBGIC8qIElJUkZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QkU2RDIyNEY1ODc1
NTAwNERGNTBGIC8qIElJUkZpbHRlci5oICovOyB9OworCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOUM2OUNFMjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3Ry
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzQTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDcz
RCAvKiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8q
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlF
MDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwpAQCAtMTIzMDMsNiArMTIzMDQs
OCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDIyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDQyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZp
bHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJGaWx0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMkFCRDgyNEQ4NkRDNjAwRTJENzNEIC8qIERlbGF5
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBMkFCREEyNEQ4NkRDNzAwRTJENzNEIC8qIERlbGF5T3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVsYXlPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE2Nyw2ICszMDE3MCw4IEBACiAJCQkJ
QzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLAogCQkJCUMzN0NE
RUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLywKIAkJCQlCQ0M4
Q0ZDQTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAorCQkJCTgzOUM2OUNE
MjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5jcHAgKi8sCisJCQkJODM5QzY5
Q0UyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8sCiAJCQkJQTE0MDkw
RkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovLAog
CQkJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJ
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0zNDA2NCw2
ICszNDA2OSw3IEBACiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzlD
NjlEMDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21t
b25DcnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGMzJCMURGQkIxMDcw
MDQxNkQ2QyAvKiBDb21tb25WTS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDQzMWZkZWExNTcyNjI3MmEyYjY4Zjk3
NGIyNmUwYWU2YTU1ZmMwYWEuLjA3ZTE5ODM2ZDcwZDFkYjE1M2U4ODZmMTgyN2Y2YjliZjBlMWMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAKICNpbmNsdWRl
ICJDU1NBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvbi5oIgpAQCAtNjksNyArNzAsNyBAQCBFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRUaW1pbmcoKSBjb25zdAogICAgIHRpbWluZy5pdGVyYXRpb25TdGFy
dCA9IG1faXRlcmF0aW9uU3RhcnQ7CiAgICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlv
bnM7CiAgICAgaWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcu
ZHVyYXRpb24gPSAiYXV0byJfczsKKyAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gYXV0b0F0b20o
KTsKICAgICBlbHNlCiAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1h
dGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIHRpbWluZy5kaXJlY3Rpb24g
PSBtX2RpcmVjdGlvbjsKQEAgLTM5OSw3ICs0MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmlt
YXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGlt
aQogICAgICAgICAgICAgaWYgKGR1cmF0aW9uQXNEb3VibGUgPCAwIHx8IHN0ZDo6aXNuYW4oZHVy
YXRpb25Bc0RvdWJsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSAiYXV0byIpCisgICAgICAgICAgICBpZiAo
c3RkOjpnZXQ8U3RyaW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9IGF1dG9BdG9tKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRp
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCmluZGV4IDIx
MDczZmE0NzMwM2Y2NGZkMmJhMjYxOWFlOTE4N2Y1ODE1OTUwNmUuLmU4YzBmMWJkOGQ5NTkyMTQ2
YzExM2U2NDM0NTlhYzEwZGRiZmQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9FZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0
VGltaW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxh
eWJhY2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtMzMsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRWZmZWN0VGltaW5nIHsKLSAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgImF1dG8iX3MgfTsKKyAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgYXV0b0F0b20oKSB9OwogICAgIGRvdWJs
ZSBkZWxheSB7IDAgfTsKICAgICBkb3VibGUgZW5kRGVsYXkgeyAwIH07CiAgICAgZG91YmxlIGl0
ZXJhdGlvblN0YXJ0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAwOGZhNDY3Yzhh
MmUzNWU4MDE5Mzc3OTBjZjJkOTBmYmI4YmVjZjBmLi40OGMyNzMyYjEzMGFiZjRhNDBhOTBkYjY2
YjI2NGU4ZWFiNDNiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uRXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIgpAQCAtMjA0LDYgKzIwNSw3IEBAIGJvb2wgaXNW
YWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNv
bW1vbkF0b21TdHJpbmdzKCk7CiAgICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChIVE1MUXVpcmtzTW9kZSk7CiAgICAgQ1NTUGFyc2VyIHBhcnNl
cihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1
YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAuLjM0Njc3OTZmYjNhMWZjODc3Y2U4YTAyMGQ5
NTRlNDQ1YTg4ZWM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiAr
MjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBO
b2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBp
c0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0
cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3Ry
aW5nIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b20oKTsgfQog
CiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJ
bmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDRk
NTExYjVlNjg1NDEzMDVkNDBjMWMzM2I3OTA5YTY1MDY1NTZmNjIuLmQ5NWIwOTg3M2RkZThhN2I3
YjFjYTdiYjRmNWYzNmQwMDAwMjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDA1
LDcgKzQwNSw3IEBAIFN0cmluZyBGb250RmFjZTo6ZGlzcGxheShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGNvbnN0IGF1dG8mIGxvYWRpbmdCZWhhdmlvcldyYXBwZWQgPSBtX2JhY2tpbmctPmxv
YWRpbmdCZWhhdmlvcigpOwogICAgIGlmICghbG9hZGluZ0JlaGF2aW9yV3JhcHBlZCkKLSAgICAg
ICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1
cm4gY29udGV4dC5jc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsb2FkaW5nQmVoYXZpb3JXcmFw
cGVkLnZhbHVlKCkpLT5jc3NUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwCmluZGV4IDJmNWI4YjA0NzM5NWEyY2JkNzU1YWMxY2Y1MzRiZmRjZWY1NzEw
NTcuLjZkNTA5MTlkOTUxNmFiNzU3NGRhMDVmMjFiMGUwNGQ2Njk3MDBkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMgewogCkBAIC0zMyw2ICszNSw3IEBAIHZvaWQgaW5pdCgpCiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAg
ICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogI2RlZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3Ry
dWN0KHN0cmluZywgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBD
U1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9C
QUwpCiAjdW5kZWYgSU5JVElBTElaRV9HTE9CQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKaW5kZXggMGVkMmJlZDk2MjMyMDRmOWEwYmViOWZjYjE1YTEwZGQ3ZTVkOGYzOS4uNjY2YmNj
Nzk2NThjOWRlZGYxOWIyOTU3OTU0M2M4YmNiNjM2OTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTEyNyw3
ICsxMjgsNyBAQCBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiAgICAgU3RyaW5nIGxvd2VyY2FzZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXModHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAobG93ZXJj
YXNlVHlwZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWlu
OyIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVybiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8
fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCiAgICAgICAgIHJl
dHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRo
KCJ0ZXh0L2h0bWw7IikpCkBAIC0yNjUsNyArMjY2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNl
dERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CiAgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHVybC5zdHJpbmcoKTsKLSAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSB0
ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgc2FuaXRpemVkRGF0YSA9IGRhdGE7
IC8vIE5vdGhpbmcgdG8gc2FuaXRpemUuCiAKICAgICBpZiAoc2FuaXRpemVkRGF0YSAhPSBkYXRh
KQpAQCAtNDI4LDcgKzQyOSw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0
bWxUZXh0KQogewogICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKLSAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxh
aW5UZXh0KTsKKyAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9o
dG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZl
bnQpKTsKIH0KQEAgLTQ2Nyw3ICs0NjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiAKIFN0cmluZyBEYXRhVHJh
bnNmZXI6OmRyb3BFZmZlY3QoKSBjb25zdAogewotICAgIHJldHVybiAibm9uZSJfczsKKyAgICBy
ZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyb3BFZmZlY3Qo
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNDE1NWY2MWQwMDJi
ZjJmNmYwN2UxNmRhZDU4YmQzYWQ3Njk0YWIuLmE5OGQyZjI1NGVhNjA0MmNlNzE1YzQxM2FjZDAx
OGUyNzA1ZmNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkV2ZW50LmgiCkBAIC02MDA3LDcgKzYwMDgsNyBAQCB2b2lkIERvY3VtZW50Ojpz
ZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiAKIFN0cmluZyBEb2N1bWVudDo6ZGVz
aWduTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gIm9uIl9zIDog
Im9mZiJfczsKKyAgICByZXR1cm4gaW5EZXNpZ25Nb2RlKCkgPyBvbkF0b20oKSA6IG9mZkF0b20o
KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCBk
MmFhOGQxZjdlMzk5ZTMzZGZhNWMxMTEwNjQxZDJmNDAxZTZjM2EwLi4wNWM4MmZiYWE5MThiZTBh
MWU2Mzc4NWIyYWFkZjM4YjdlNTRkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRPd25lci5oIgogCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE1MSw4ICsx
NTIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICAvLyBGSVhNRTogU2hvdWxkIE1JTUUgdHlw
ZXMgcmVhbGx5IGJlIGNhc2Ugc2Vuc2l0aXZlIGluIFhNTCBkb2N1bWVudHM/IERvZXNuJ3Qgc2Vl
bSBsaWtlIHRoZXkgc2hvdWxkLAogICAgIC8vIGV2ZW4gdGhvdWdoIG90aGVyIHRoaW5ncyBhcmUg
Y2FzZSBzZW5zaXRpdmUgaW4gdGhhdCBjb250ZXh0LiBNSU1FIHR5cGVzIHNob3VsZCBuZXZlciBi
ZSBjYXNlIHNlbnNpdGl2ZS4KICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoaXMgYW5kIHRoZW4g
cmVtb3ZlIHRoZSBpc0hUTUxFbGVtZW50IGNoZWNrIGhlcmUuCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZSgidGV4dC9j
c3MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InRleHQvY3NzIikgOiB0eXBlID09IGNzc0NvbnRlbnRUeXBlOworICAgIHJldHVybiBlbGVtZW50
LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKTsKIH0KIAogdm9pZCBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKaW5kZXggYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZS4uOTFiYzRm
ZWI4OWRjNTgzYmYwYjNmNzA3MDVmYmQyYThiZGMyOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTk0LDcgKzk1LDcgQEAgdm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKLSAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKKyAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAg
ICAgICAgIG1faXNYU0wgPSB0eXBlID09ICJ0ZXh0L3htbCIgfHwgdHlwZSA9PSAidGV4dC94c2wi
IHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24veGh0
bWwreG1sIiB8fCB0eXBlID09ICJhcHBsaWNhdGlvbi9yc3MreG1sIiB8fCB0eXBlID09ICJhcHBs
aWNhdGlvbi9hdG9tK3htbCI7CiAgICAgICAgIGlmICghbV9pc0NTUyAmJiAhbV9pc1hTTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCmluZGV4IDU0ZDZjZjBl
NTgwNzk3NDExNWU2Y2VlZDcyNjdjNzhmYmRlMjIzNGUuLmIyNTZhMzJhNjhlZTEwYmFhOGRmYmQ4
NTQzMDIyMTU5MTA2OTMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1h
Z2VDb250cm9sc01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5l
cy5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9u
dFNoYWRvdy5jcHAKaW5kZXggMjg4NDgwYjY1NzdlOGVkMWEwM2Y3NThiMGI0ODQ3YjgxNzVmZmU4
Mi4uMjcwNzI0MGJjYWM1OGM1YjIwNzM2OTNjNDUwZTQxMjgzZjkxZTk0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRm9u
dFNoYWRvdy5oIgogCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAi
Q29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBGb250U2hhZG93JiBzaGFk
b3cpCiB7CiAgICAgaWYgKHNoYWRvdy5vZmZzZXQuaXNaZXJvKCkgJiYgIXNoYWRvdy5ibHVyUmFk
aXVzKQotICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgp
OwogCiAgICAgaWYgKCFzaGFkb3cuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gIm5v
bmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgInB4ICIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA1ZWIzYmQwODczNDMyYjRkMGM4ZDlmOTEwZDI4N2RiMWI1OThkZmMzLi5hOWM0
YzYzOTQ3MDhlMzVjNTJmMmFhZDhiNWMyYzkwMDBlMzdhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKICNpbmNsdWRlICJDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNzE4LDcgKzcxOSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgICAg
ICBpZiAoaXNCbG9jayhlbGVtZW50KSkKICAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0
eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3Ms
IGZhbHNlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1l
bnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJu
b25lIl9zLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgbm9uZUF0b20oKSwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tCmluZGV4IGI1ZTBhY2E2ZTIxYmIyNmJiZGMzYzU4ZWJkMzUwOTY1ZDA4NDZk
ZjcuLjk0YTQ2MGY1MzQ5NDg0Y2FiMDhiZGU5ODhhMjdmYjE3NDAwMGE5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbXBvcnQgIkNvbG9yQ29udmVy
c2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW1wb3J0ICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAj
aW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDUz
Y2M2YWIwMTZiZTgyZTcwZWI1NTU1YTc5NjNlYTUwOWJiYmYzMDQuLjQyYjZjMjJlNTllMjg4Y2Fi
MDI2ODg5NmRmYWRkYjYwMTAxZjQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkNoYXJhY3Rl
ckRhdGEuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisj
aW1wb3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNTk3LDcgKzU5OCw3IEBAIFN0cmluZyBIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZh
bHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CiAgICAgICAgIGlmIChl
bGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KG5vZnJhbWVzVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgICAg
IHJldHVybiBub25lQXRvbSgpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
YWRkcmVzc1RhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShib2R5VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoY2VudGVyVGFnKQog
ICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkZFRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGRpclRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKGRsVGFnKQogICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZyYW1lVGFnKQpAQCAtMTAxNyw3ICsx
MDE4LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3RyaW5nIGZvbnRLZXJuaW5nID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250S2Vybmlu
Zyk7CiAgICAgU3RyaW5nIGxldHRlclNwYWNpbmcgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9y
Tm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOwogICAgIGlmIChmb250S2Vy
bmluZy5sZW5ndGgoKSB8fCBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChm
b250S2VybmluZyA9PSAibm9uZSIpCisgICAgICAgIGlmIChmb250S2VybmluZyA9PSBub25lQXRv
bSgpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUga2VyblZhbCA9
IGxldHRlclNwYWNpbmcubGVuZ3RoKCkgPyBsZXR0ZXJTcGFjaW5nLnRvRG91YmxlKCkgOiAwLjA7
CkBAIC0xMTEwLDcgKzExMTEsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1
dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgICAgICBTdHJp
bmcgaHlwaGVuYXRpb24gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tF
bGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpOwogICAgICAgICBpZiAoaHlwaGVuYXRp
b24ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmIChoeXBoZW5hdGlvbiA9PSAiYXV0byIpCisg
ICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgICAg
ICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0b3I6MS4wXTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0
b3I6MC4wXTsKQEAgLTE2MTAsNyArMTYxMSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2VudGVy
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBCT09MIGVtYmVkZGVkKQogCiAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhZW1iZWRkZWQpCiAgICAgICAgIF9wcm9jZXNzSGVh
ZEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoIWRpc3BsYXlWYWx1ZS5sZW5ndGgoKSB8
fCAhKGRpc3BsYXlWYWx1ZSA9PSAibm9uZSIgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1
bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uLWdyb3VwIikpIHsKKyAgICBlbHNl
IGlmICghZGlzcGxheVZhbHVlLmxlbmd0aCgpIHx8ICEoZGlzcGxheVZhbHVlID09IG5vbmVBdG9t
KCkgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAi
dGFibGUtY29sdW1uLWdyb3VwIikpIHsKICAgICAgICAgaWYgKF9jYWNoZXMtPmlzQmxvY2tFbGVt
ZW50KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpICYmICEoZGlzcGxheVZh
bHVlID09ICJ0YWJsZS1jZWxsIiAmJiBbX3RleHRUYWJsZXMgY291bnRdID09IDApCiAgICAgICAg
ICAgICAmJiAhKFtfdGV4dExpc3RzIGNvdW50XSA+IDAgJiYgZGlzcGxheVZhbHVlID09ICJibG9j
ayIgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShsaVRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZSh1
bFRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpKQogICAgICAgICAgICAgX25ld1Bh
cmFncmFwaEZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC50YWdOYW1lKCksIE5PLCBZRVMpOwpA
QCAtMTg2NSw3ICsxODY2LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBpZiAoZWxlbWVu
dC5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGlucHV0RWxlbWVudC50eXBlKCkgPT0gInRleHQiKSB7CisgICAgICAgICAgICBpZiAoaW5wdXRF
bGVtZW50LnR5cGUoKSA9PSB0ZXh0QXRvbSgpKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcg
KnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIFt2YWx1ZSBsZW5ndGhdID4gMCkKICAgICAgICAgICAgICAgICAgICAgX2FkZFZhbHVlKHZh
bHVlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzYWVlOWNmOWRk
N2RlNmUzZGM4MTUxMDQ4NWU3YzE3ZjRlMGVlZTI0Li44MGE4ODQzNTAyZWI1N2YwM2VkYjJlYjMx
ZGMyNzcxYzBmOWQzOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
QEAgLTEyODUsNyArMTI4Niw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8v
IFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVs
ZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5
ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKICAgICAgICAgZnJhZ21lbnQt
PnBhcnNlSFRNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKLSAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYg
KHNvdXJjZU1JTUVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKQogICAgICAgICBm
cmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgV1RGTW92
ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bFBh
cnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNlU3RyaW5nKSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCmluZGV4IGQ2N2RjNzkyOTQ4NjIxNDM5NDE1
Y2VmZTg2MzY5MDc4ZjY0NzVlYmQuLjQwZTJhOTBlZWMwOTE1MjMwZmYwYjUyZDM1M2RiMjM3NjQy
NDU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NiwxMCArNTcsOCBAQCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6OkRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBudWxsQXRvbSgpOwotICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpOb25lOiB7
Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdmFsdWVOb25lKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgICAgICByZXR1cm4gdmFsdWVOb25lOwotICAgIH0KKyAgICBjYXNlIEF1dG9jYXBpdGFsaXpl
VHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAgICAgY2FzZSBBdXRvY2Fw
aXRhbGl6ZVR5cGU6OlNlbnRlbmNlczogewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlU2VudGVuY2VzKCJzZW50ZW5jZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiB2YWx1ZVNl
bnRlbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZGU1MTg1ZTE3YjM3ZTg0ZGIz
NzE0ODhiNDY4YmZkYzMyNTg3ZDQyOC4uOWRlNzBiN2M2YWRhYzNkZWNlZTA2ZDI1Y2M0MmI2YzQ5
MTIwZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRvZmlsbC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
QEAgLTEzNiw5ICsxMzcsNiBAQCBzdGF0aWMgdW5zaWduZWQgbWF4VG9rZW5zRm9yQXV0b2ZpbGxG
aWVsZENhdGVnb3J5KEF1dG9maWxsQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI3Byb2Nlc3NpbmctbW9kZWwtMwog
QXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotCiAgICAgLy8gTGFiZWw6IERlZmF1bHQKICAgICAvLyAyNi4gTGV0
IHRoZSBlbGVtZW50J3MgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIGVtcHR5IHN0
cmluZywgYW5kIGl0cyBhdXRvZmlsbCBoaW50IHNldCBhbmQgYXV0b2ZpbGwgc2NvcGUgYmUgZW1w
dHkuCiAgICAgLy8gMjcuIElmIHRoZSBlbGVtZW50J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBp
cyB3ZWFyaW5nIHRoZSBhdXRvZmlsbCBhbmNob3IgbWFudGxlLCB0aGVuIGxldCB0aGUgZWxlbWVu
dCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIGVtcHR5IHN0cmluZyBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCkBAIC0xNDksOSArMTQ3LDkgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6
Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAg
ICAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gZm9ybSA9IGVsZW1lbnQuZm9ybSgpOwotICAgICAgICBpZiAoZm9y
bSAmJiBmb3JtLT5hdXRvY29tcGxldGUoKSA9PSBvZmYpCi0gICAgICAgICAgICByZXR1cm4geyBv
ZmYsIGVtcHR5U3RyaW5nKCkgfTsKLSAgICAgICAgcmV0dXJuIHsgb24sIGVtcHR5U3RyaW5nKCkg
fTsKKyAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0b2NvbXBsZXRlKCkgPT0gb2ZmQXRvbSgp
KQorICAgICAgICAgICAgcmV0dXJuIHsgb2ZmQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CiAgICAgfTsKIAogCkBAIC0x
OTksMTMgKzE5NywxMyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIGF1dG9maWxs
IGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhwb3NlZCBhdXRvZmlsbCB2YWx1
ZSBiZSB0aGUgc3RyaW5nICJvZmYiLgogICAgIC8vIFRoZW4sIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChjYXRlZ29yeSA9PSBBdXRvZmlsbENhdGVnb3J5OjpPZmYpCi0gICAgICAgIHJldHVy
biB7IG9mZiwgb2ZmLmdldCgpLnN0cmluZygpIH07CisgICAgICAgIHJldHVybiB7IG9mZkF0b20o
KSwgb2ZmQXRvbSgpLnN0cmluZygpIH07CiAKICAgICAvLyA4LiBJZiBjYXRlZ29yeSBpcyBBdXRv
bWF0aWMsIGxldCB0aGUgZWxlbWVudCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIHN0cmlu
ZyAib24iLAogICAgIC8vIGxldCBpdHMgYXV0b2ZpbGwgaGludCBzZXQgYmUgZW1wdHksIGFuZCBs
ZXQgaXRzIElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBzdHJpbmcKICAgICAvLyAi
b24iLiBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdvcnkgPT0gQXV0b2Zp
bGxDYXRlZ29yeTo6QXV0b21hdGljKQotICAgICAgICByZXR1cm4geyBvbiwgb24uZ2V0KCkuc3Ry
aW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgb25BdG9tKCksIG9uQXRvbSgpLnN0cmluZygpIH07
CiAKICAgICAvLyA5LiBMZXQgc2NvcGUgdG9rZW5zIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgLy8g
MTAuIExldCBoaW50IHRva2VucyBiZSBhbiBlbXB0eSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAppbmRleCA4YTU0Y2EwNTM1NGE5MzAyNzU5
YWI3NWJhM2ExNzU1ZjdiOWY0NTVkLi4yYjIzZTFmZDVjN2E4ZjNkODM2NzZjY2VjYTA0ZDA4Mzdl
OTRhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlw
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00NiwxMyArNDcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIEZvcm1Db250cm9sU3RhdGUgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwotICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gIm9uIl9zIDogIm9mZiJf
cyB9OworICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gb25BdG9tKCkgOiBvZmZB
dG9tKCkgfTsKIH0KIAogdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLSAgICBlbGVtZW50KCktPnNldENoZWNrZWQoc3RhdGVbMF0gPT0gIm9uIik7
CisgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09IG9uQXRvbSgpKTsKIH0KIAog
Ym9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYg
Zm9ybURhdGEpIGNvbnN0CkBAIC05OSw4ICsxMDAsNyBAQCBib29sIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKIAogU3RyaW5nIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb24oIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBvbi5nZXQoKTsKKyAg
ICByZXR1cm4gb25BdG9tKCk7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhp
bnQuY3BwCmluZGV4IDk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEuLmI3
NzU2OTRhMzIxMTE0NTllMjBkZDU0NGM3ZDU3MDA2YWYyNjJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFbnRlcktleUhpbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW50ZXJLZXlIaW50IGVudGVyS2V5SGludEZv
ckF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC02Myw3ICs2NSw3IEBAIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZUZvckVudGVyS2V5SGludChFbnRlcktleUhpbnQgaGludCkKICAg
ICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlvdXM6CiAgICAgICAgIHJldHVybiAicHJldmlvdXMi
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJzZWFy
Y2giX3M7CisgICAgICAgIHJldHVybiBzZWFyY2hBdG9tKCk7CiAgICAgY2FzZSBFbnRlcktleUhp
bnQ6OlNlbmQ6CiAgICAgICAgIHJldHVybiAic2VuZCJfczsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAppbmRleCBhOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4
YjEyYWVhMDYzMzAwMzMyLi44ZWI2YzNlZjhmMzEzNGQ4NmIzNjg5MWM1ZTQwMDFiYjY0MmQ1ZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxl
Z2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IHNyYykKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBm
YWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihw
cmVsb2FkQXR0ciwgImF1dG8iX3MpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIGF1dG9BdG9tKCkpOwogICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAgICByZXR1
cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
aW5kZXggODc5NDg2N2M2ZTA0ZDUwMTYxNzNiZjk3ZDcyMzAwN2U5ZGFmMWRmZC4uOWMzNzMxNWFj
YjU2YmYwMGJjOTVlMzJkN2EwMTNhNzI1NzExNmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtODIsMTYgKzgzLDEyIEBAIGlu
dCBIVE1MQnV0dG9uRWxlbWVudDo6ZGVmYXVsdFRhYkluZGV4KCkgY29uc3QKIGNvbnN0IEF0b21T
dHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1Ym1pdCgi
c3VibWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICAgICAg
cmV0dXJuIHN1Ym1pdDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJVVFRPTjoKLSAgICAgICAg
ICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7Ci0gICAgICAgIGNh
c2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcmVzZXQoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwotICAgICAgICB9CisgICAgY2Fz
ZSBTVUJNSVQ6CisgICAgICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CisgICAgY2FzZSBCVVRUT046
CisgICAgICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7CisgICAg
Y2FzZSBSRVNFVDoKKyAgICAgICAgcmV0dXJuIHJlc2V0QXRvbSgpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5
YzM5YzU2ZDM0MTQzOGQwZTA4YjU1MTNlNjcyYjY5YTYwOWIxYjFkLi45MDEwNTA1ZGUxNTI5ZGQ0
OTZkOTRmOGYyYzMyNzYxNTczMjIxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCkBAIC00
MTUsMTMgKzQxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRvVmFsaWRE
aXJWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGx0clZhbHVlKCJsdHIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBydGxWYWx1ZSgicnRsIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbHVlKCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImx0ciIpKQogICAgICAgICByZXR1cm4gbHRyVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCiAgICAgICAgIHJldHVybiBydGxWYWx1
ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikp
Ci0gICAgICAgIHJldHVybiBhdXRvVmFsdWU7CisgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwog
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCkBAIC01NzgsMTcgKzU3OCwxMSBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgY2FzZSBDb250ZW50RWRp
dGFibGVUeXBlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIGZhbHNlQXRvbSgpOwogICAgIGNhc2Ug
Q29udGVudEVkaXRhYmxlVHlwZTo6UGxhaW50ZXh0T25seToKLSAgICAgICAgcmV0dXJuICJwbGFp
bnRleHQtb25seSJfczsKKyAgICAgICAgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tKCk7CiAgICAg
fQogICAgIHJldHVybiAiaW5oZXJpdCJfczsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHBsYWludGV4dE9ubHlOYW1lKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxhaW50ZXh0LW9ubHki
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHBsYWludGV4
dE9ubHlWYWx1ZS5nZXQoKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNl
dENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCkBAIC01OTYsNyArNTkw
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShj
b25zdCBTdHJpbmcmIGVuYWJsZWQpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCiAgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgZmFsc2VBdG9tKCkpOwogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQt
b25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRl
bnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9ubHlOYW1lKCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9u
bHlBdG9tKCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
YWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFi
bGVBdHRyKTsKICAgICBlbHNlCkBAIC0xMDY0LDkgKzEwNTgsNyBAQCBib29sIEhUTUxFbGVtZW50
OjpzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9j
b3JyZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbk5hbWUoIm9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb2ZmTmFtZSgib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJl
Y3RBdHRyLCBhdXRvY29ycmVjdCA/IG9uTmFtZS5nZXQoKSA6IG9mZk5hbWUuZ2V0KCkpOworICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRv
Y29ycmVjdCA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTdlMDhmZmE5M2Q2MWQwZGQ4MDk3OWRk
Zjg0YjFjM2NmNTJkMGUwNS4uNWUwMTY5YTczMTcwNDkxM2JkY2U2MDRiNmNmMDMzZjg4YzBjYTkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5o
IgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAt
MTAxMiwxMCArMTAxMyw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29tcGxldGUo
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxGb3JtRWxl
bWVudDo6YXV0b2NvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmIDogb247CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmQXRvbSgpIDogb25BdG9tKCk7CiB9
CiAKIFJlZlB0cjxET01Gb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpjb25zdHJ1Y3RFbnRyeUxp
c3QoUmVmPERPTUZvcm1EYXRhPiYmIGRvbUZvcm1EYXRhLCBTdHJpbmdQYWlyVmVjdG9yKiBmb3Jt
VmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAx
ZTgxZjU0MjViMDdlMjRkOWE5YzEyMDdlYjM1NTkyMTcyNDY1Yzg0Li5mMjhlNmQ5NjE1NmVhZGJk
MTBhYzVjMzk5MGEwMmEzMWI1ZWNkODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFbGVt
ZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNTcsOSArMTU4LDcgQEAgY29u
c3QgRmVhdHVyZVBvbGljeSYgSFRNTElGcmFtZUVsZW1lbnQ6OmZlYXR1cmVQb2xpY3koKSBjb25z
dAogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRp
bmdzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenkoImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBsYXp5IDogZWFn
ZXI7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBs
YXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7CiB9CiAKIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnNl
dExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDAwY2RkNjJmZTA0NjM4NjQyNGU1Nzgx
NThhM2NjNWRkOTljOTZiYmIuLjhjNzM1MjBjNTRkNjdiYmEyMzlhNjRlZTdmODc2Y2JhZjU0NjBj
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTY3NCw3ICs2NzUsNyBAQCBTdHJpbmcgSFRNTElt
YWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25zdAogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBdXRv
OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuICJhdXRvIl9zOworICAgIHJldHVy
biBhdXRvQXRvbSgpOwogfQogCiBEZWNvZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmdNb2RlKCkgY29uc3QKQEAgLTg5NiwxMCArODk3LDggQEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1l
bnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpIGNvbnN0CiAKIGNvbnN0
IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJs
YXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGF1dG8mIGF0dHJp
YnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omxv
YWRpbmdBdHRyKTsKLSAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlVmFsdWUpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVybiBoYXNMYXp5TG9hZGFibGVB
dHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVWYWx1ZSkgPyBsYXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7
CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0TG9hZGluZ0ZvckJpbmRpbmdzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggMjY0YTdhODgyNjZhODM5YmZkOGYzZWM5NTRiNjI5NzlmMTliMTkzZi4uZjI2MzBh
Y2QwYmU2Y2NkZGJkNjQ1MjBmMzc5MzdkODE2ODQ3NjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKICNpbmNsdWRlICJDb250ZW50UnVsZUxpc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCkBAIC0zNjQ5LDE2ICszNjUwLDE2IEBAIFN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9t
ZWRpYWNhcHR1cmUtbWFpbi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCiAgICAgLy8g
InByZWxvYWQiIC0gT24gZ2V0dGluZzogbm9uZS4gT24gc2V0dGluZzogaWdub3JlZC4KICAgICBp
ZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3ByZWxvYWQp
IHsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lOgotICAgICAgICByZXR1cm4g
Im5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhOgogICAgICAgICByZXR1cm4gIm1ldGFkYXRhIl9zOwogICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86Ci0gICAgICAgIHJldHVybiAiYXV0byJf
czsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhi
ZjMuLmFiOGQ2YTI5OWVmNmNjZjBhMWQyMTAwMTEzODZiMWI5ZjNhOGU2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQzNCwxMyArNDM1
LDEyIEBAIHVuc2lnbmVkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlU2VsZWN0
aW9uRW5kKCkgY29uc3QKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZSgibm9uZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZvcndhcmQoImZvcndhcmQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBiYWNrd2FyZCgiYmFja3dhcmQiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAg
IGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiBub25lOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJl
Y3Rpb246CiAgICAgICAgIHJldHVybiBmb3J3YXJkOwogICAgIGNhc2UgU2VsZWN0aW9uSGFzQmFj
a3dhcmREaXJlY3Rpb246CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGRpcmVjdGlvblN0cmluZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBub25lOwor
ICAgIHJldHVybiBub25lQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRNb2RlLmNwcAppbmRleCAzNDlkODViNTYyZTdiYjljNWFkZmVkNTI3MTFmNTMwNWM0N2Rl
NDllLi43ZTgwYzc3ZjdlZjk0Y2Y4MDgwMDdlMGNjNDZjZjAyNmJmZjQ1ZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dE1vZGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MiwzMiArODMsMjcgQEAgbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzIHsKIAogY29uc3Qg
QXRvbVN0cmluZyYgbm9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBub25lQXRvbSgpOwogfQog
CiBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInRleHQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRleHRBdG9t
KCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRl
bEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInVybCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1
cm4gdXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJlbWFp
bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsK
KyAgICByZXR1cm4gZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIG51bWVyaWMo
KQpAQCAtMTI0LDggKzEyMCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRlY2ltYWwoKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBzZWFyY2goKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBzZWFyY2hBdG9t
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlTmFtZXMuY3BwCmluZGV4IDQ1MDM2OWVjODFkY2JmMTAzMzY5MGQ3ZjY0MzcxNjVm
MWVlOGM1NmYuLjZmZmJjZjVjZjIyNTY5MzI3OTlmMWFlZTNhMWM0M2M1MWI1MWVhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDggKzY0LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgZGF0ZXRpbWVsb2NhbCgpCiAKIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoImVt
YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBlbWFpbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgZmlsZSgp
CkBAIC0xMTcsMzIgKzExNywyNyBAQCBjb25zdCBBdG9tU3RyaW5nJiByYW5nZSgpCiAKIGNvbnN0
IEF0b21TdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiByZXNldEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInNlYXJjaCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c2VhcmNoQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXQoKQogewotICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgic3Vi
bWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbGVw
aG9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJ0ZWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHRlbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBuYW1lKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0aW1lKCkKQEAgLTE1Myw4ICsxNDgsNyBAQCBjb25zdCBBdG9tU3RyaW5n
JiB0aW1lKCkKIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInVybCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
dXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWVrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IDkzMDQ4NGI4NWFiMjVhZTU0N2RmN2YzMWZkN2QyMGE1YWEyYmU2ZmEuLjdmNDczNTA3ZmJm
YWRiZWY4M2Q1MWM4ZmYxMDliOTYyYTEyM2RiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMTUwLDggKzE1MSw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkCiAK
IHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHlJbXBsKGJvb2wgaXNFZGl0YWJsZSwgYm9vbCBpbml0aWFsaXphdGlvbikKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBs
YWluVGV4dE9ubHlOYW1lKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBwbGFpblRl
eHRPbmx5TmFtZS5nZXQoKSA6IGZhbHNlQXRvbSgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlID0g
aXNFZGl0YWJsZSA/IHBsYWludGV4dE9ubHlBdG9tKCkgOiBmYWxzZUF0b20oKTsKICAgICBpZiAo
aW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlcyB7
IEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCB2YWx1ZSkgfTsKICAgICAgICAgcGFyc2Vy
U2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCmluZGV4IDY5OTRiMTEzMWUyMzQ4ZTRlZTlkMjVjMDlhY2Q0ZGY2NTg3YzEwM2Yu
LjdiYWVhYTA2NWM3MzQwOThlMmJhMDNkMzMzMDllMzE4ODM5ZWQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAtMzgsMjggKzM4LDE3IEBACiAjaW5jbHVk
ZSAiQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5o
IgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdv
cmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKLX0KLQogY29uc3QgQXRvbVN0cmlu
ZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlw
dGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3Jk
KCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG1haW4oIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIG1haW47Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNj
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtNzIsMTIgKzYxLDYgQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6dHJhbnNsYXRpb25LZXl3b3JkKCkKICAgICByZXR1cm4gdHJhbnNsYXRpb247CiB9CiAKLWNv
bnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNvbW1lbnRhcnk7Ci19Ci0KIEF1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTEyMywxMCArMTA2
LDEwIEBAIHZvaWQgQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpCiAKIGJvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgp
Ci0gICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKKyAgICByZXR1cm4gdmFs
dWUgPT0gYWx0ZXJuYXRpdmVBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUF0
b20oKQogICAgICAgICB8fCB2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKQotICAgICAgICB8
fCB2YWx1ZSA9PSBtYWluS2V5d29yZCgpCisgICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkK
ICAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkKICAgICAgICAgfHwgdmFsdWUg
PT0gdHJhbnNsYXRpb25LZXl3b3JkKCk7CiB9CkBAIC0yMDgsMTMgKzE5MSwxMyBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmtpbmQoKSkgewogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgot
ICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CiAgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpOwpAQCAtMjIzLDcgKzIwNiw3IEBAIHZvaWQgQXVk
aW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKICAgICAgICAgc2V0S2luZChBdWRpb1Ry
YWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVk
aW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CiAgICAg
ICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5oCmluZGV4IDRlMTg2YzE2NjIwN2IwN2E3OGQwZTc2ZWM0ZDNkZDA5MDk5NjE3MjguLmJk
YjdmMWIyMmMwMjE5MTY5Y2MxMzI3ZjQ1MzUxNTIxZmU3ZTdiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC00NiwxMiArNDYsOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVz
Y3JpcHRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5LZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RW5hYmxlZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAppbmRleCAxMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiLi45MTU4YWU0
ZDMwNDE4NzBiNWI3Mzg3OWY4NTgxOWI4MDJkOWM0Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCkBAIC01MCwxOCArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2spOwogCi1jb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRs
ZXMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRp
dGxlczsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVzY3Jp
cHRpb25zS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTEwMyw3ICs5MSw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IGtpbmQsIGNvCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHJhY2tU
eXBlKHR5cGUpCiB7Ci0gICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYg
KGtpbmQgPT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIG1fa2luZCA9IEtpbmQ6OkNhcHRpb25z
OwogICAgIGVsc2UgaWYgKGtpbmQgPT0gY2hhcHRlcnNLZXl3b3JkKCkpCiAgICAgICAgIG1fa2lu
ZCA9IEtpbmQ6OkNoYXB0ZXJzOwpAQCAtMTY3LDkgKzE1NSw5IEBAIGJvb2wgVGV4dFRyYWNrOjpl
bmFibGVkKCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29y
ZCgpKQorICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICBpZiAodmFsdWUg
PT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg3LDcg
KzE3NSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25z
dAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBLaW5kOjpDYXB0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGNhcHRpb25zS2V5d29yZCgpOworICAgICAgICByZXR1cm4gY2FwdGlvbnNB
dG9tKCk7CiAgICAgY2FzZSBLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJuIGNoYXB0ZXJz
S2V5d29yZCgpOwogICAgIGNhc2UgS2luZDo6RGVzY3JpcHRpb25zOgpAQCAtMTk3LDEwICsxODUs
MTAgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiAg
ICAgY2FzZSBLaW5kOjpNZXRhZGF0YToKICAgICAgICAgcmV0dXJuIG1ldGFkYXRhS2V5d29yZCgp
OwogICAgIGNhc2UgS2luZDo6U3VidGl0bGVzOgotICAgICAgICByZXR1cm4gc3VidGl0bGVzS2V5
d29yZCgpOworICAgICAgICByZXR1cm4gc3VidGl0bGVzQXRvbSgpOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3VidGl0bGVzS2V5d29yZCgpOworICAgIHJl
dHVybiBzdWJ0aXRsZXNBdG9tKCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQg
bmV3S2luZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDk0MGMwMjQ2
MmU4NjkzY2I4ODg5ZDAyN2I2YzlhODZlZjJlOTBjZjUuLjJiNjI3NGMyNWY0NWQ2OTQyMGM5NDJi
MTQyZGEzMTAxMzMzNTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1l
bnVPZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVBdXRvbWF0aWNJ
dGVtKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgp
OwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9tU3RyaW5nJik7
CiAKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggYWJmNzU2OTY0YzM3OWU4Nzc0ZGFjZWFiODEyMGUy
OGZjZDE0YWE3Yy4uZTI3MjVjOGU4NDgwOWFjNjcwMmUyZTYzMzIyMGRlODQwY2ZiOGEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBA
IC0xMzcsMTIgKzEzOCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGxpbmVSaWdodEtleXdvcmQo
KQogICAgIHJldHVybiBsaW5lUmlnaHQ7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcmIGF1dG9L
ZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBhdXRv
WChNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpKTsKLSAgICByZXR1cm4gYXV0b1g7Ci19
Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVmPFZUVEN1ZUJveD4gVlRU
Q3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKQEAgLTQ3Nyw3
ICs0NzIsNyBAQCBjb25zdCBTdHJpbmcmIFZUVEN1ZTo6cG9zaXRpb25BbGlnbigpIGNvbnN0CiAg
ICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDoKICAgICAgICAgcmV0dXJuIGxpbmVS
aWdodEtleXdvcmQoKTsKICAgICBjYXNlIFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG86Ci0gICAg
ICAgIHJldHVybiBhdXRvS2V5d29yZCgpOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CkBAIC00OTMsNyArNDg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRU
Q3VlOjpzZXRQb3NpdGlvbkFsaWduKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHBvc2l0
aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQ2VudGVyOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IGxpbmVSaWdodEtleXdvcmQoKSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQg
PSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRv
S2V5d29yZCgpKQorICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHBv
c2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQXV0bzsKICAgICBlbHNlCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0xMzI5LDEzICsxMzI0LDEzIEBAIHZvaWQgVlRUQ3VlOjp0
b0pTT04oSlNPTjo6T2JqZWN0JiBvYmplY3QpIGNvbnN0CiAgICAgb2JqZWN0LnNldFN0cmluZygi
dmVydGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9M
aW5lcyJfcywgc25hcFRvTGluZXMoKSk7CiAgICAgaWYgKG1fbGluZVBvc2l0aW9uKQotICAgICAg
ICBvYmplY3Quc2V0U3RyaW5nKCJsaW5lIl9zLCAiYXV0byJfcyk7CisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoImxpbmUiX3MsIGF1dG9BdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0
LnNldERvdWJsZSgibGluZSJfcywgKm1fbGluZVBvc2l0aW9uKTsKICAgICBpZiAobV90ZXh0UG9z
aXRpb24pCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCAqbV90ZXh0UG9z
aXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3Ms
ICJhdXRvIl9zKTsKKyAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsIGF1dG9B
dG9tKCkpOwogICAgIG9iamVjdC5zZXRJbnRlZ2VyKCJzaXplIl9zLCBtX2N1ZVNpemUpOwogICAg
IG9iamVjdC5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDczZTlkMGYxN2FmNTY1YjdhMmQxZDk5M2M5
MmM3MzdkNzk0ZjQ0YTcuLjA3MWE3NzQyNmRmMDRiNWM0ZjkwODI1YzU1MmUyOTlmNjdiNzVhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0Nv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgpAQCAtNDYsNDIgKzQ3
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gYWx0ZXJuYXRpdmU7
Ci19Ci0KLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpt
YWluS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNpZ247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcm
IFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlczsK
LX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gY29tbWVudGFyeTsKLX0KLQogVmlkZW9UcmFjazo6VmlkZW9UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQogICAgIDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6OlZp
ZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQ
cml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQpAQCAtMTE4
LDEyICs4OSwxMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKIAogYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRp
dmVLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKQotICAg
ICAgICB8fCB2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBt
YWluS2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlQXRvbSgpCisgICAg
ICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY2Fw
dGlvbnNBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkF0b20oKQogICAgICAgICB8fCB2
YWx1ZSA9PSBzaWduS2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IHN1YnRpdGxlc0tleXdv
cmQoKTsKKyAgICAgICAgfHwgdmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpOwogfQogCiB2b2lkIFZp
ZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCkBAIC0yNDEsMjIgKzIx
MiwyMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY2Fw
dGlvbnNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAg
ICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OlNpZ246CiAgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpT
dWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgp
KTsKKyAgICAgICAgc2V0S2luZChzdWJ0aXRsZXNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKLSAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChjb21tZW50
YXJ5QXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CiAgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCmluZGV4IGUxZTBlOWIwMjU4ZDUxMjc2Mjk3MDZkMGVjNDIyYTNj
YmQwM2Y2OTkuLjFlMjJiYmI0NTM3MTJmOGUyYTkxMWI3Mzg4OTlmNDNiM2RiZDY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC00OSwxMiArNDksNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IG1haW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpZ25LZXl3b3Jk
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJv
b2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IGY4ZGRiZDM4MDViNDU4MGE4ZDc2NDQ4OTEyM2NkOTIxZWMy
NjA1ZjQuLmM2OTQ0MDAzODZkY2I5ZjM3OTNkYjc4NzhjZmI0MWZjZTQzOTcyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5j
bHVkZSAiSVNPVlRUQ3VlLmgiCkBAIC05Miw3ICs5Myw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpw
YXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNo
YXIKIAogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50JiBjbGll
bnQsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBQ
QUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIFBBTDo6VVRGOEVuY29kaW5nKCkp
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBhZTAyOWJmYmJl
OTMzODI4YmRiMGM5ZWFiNTk5MmUwMDQ5NDk4NTY5Li4yNDQwZTNhYjcxYTY5YjJjMGM4MjI5Mjcx
NTNkOTgyNzNkMmM1NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC03ODIsNyArNzgzLDcgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JE
b2N1bWVudChEb2MKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHN0eWxlRWxl
bWVudCA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgc3R5bGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dHlwZUF0
dHIsIEF0b21TdHJpbmcoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgY3NzQ29udGVudFR5cGVBdG9tKCkpOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogdGFyZ2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURv
Y3VtZW50cywgZm9yIGV4YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAppbmRleCAyYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwLi45ZmIw
MDUyN2M5MzY1NDE5OWM4Nzk3OWEyMjk4M2YxYWNmMWEwY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgpAQCAtMTAzLDcg
KzEwNCw3IEBAIFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGlu
Z1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQogICAgICAgICByZXR1cm4gIm11
bHRpcGFydC9mb3JtLWRhdGEiX3M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsK
KyAgICAgICAgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpOwogICAgIHJldHVybiAi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggZjA0M2NkNTk3MDU0MTk3
NzYzOGI2ZGY0MjJmYTBmZDM5N2ViN2UxYS4uMmQxYWRmM2Y3ZTA5ZjAzMzAyYjYxZGZlZmQ2Yjc5
OTZhMDJhOWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIu
aCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKLSAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXBsYWNlbWVudFJlc3BvbnNlIHsgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgInRleHQvcGxh
aW4iX3MsIDAsICJVVEYtOCJfcyB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2Vt
ZW50UmVzcG9uc2UgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCB0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgMCwgIlVURi04Il9zIH07CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2Vt
ZW50RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCks
IHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAwNjEyOGI2YTNhM2MzNzMx
ZTFmYjcxNjlkNGU5ZjE1MzFlYzhkOWIyLi4xOTBkY2JmMGM2MjFhMTY5N2UzN2FiZDdjZTg3MWY2
NjU2YmFmM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC0zMjksNyArMzMwLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNob3VsZFByZXBlbmRCT00oY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogLy8gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcv
I3V0Zi04LWRlY29kZQogU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgYXV0byBk
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRG
LTgiKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRl
eHQvcGxhaW4iLCAiVVRGLTgiKTsKICAgICBpZiAoc2hvdWxkUHJlcGVuZEJPTShkYXRhLCBsZW5n
dGgpKQogICAgICAgICBkZWNvZGVyLT5kZWNvZGUoIlx4ZWZceGJiXHhiZiIsIDMpOwogICAgIHJl
dHVybiBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGNk
ZTdhZTRjYzEwZWVmNWE2YjM4NDgyNzEwNTdiMzcwOGY1YjU3MzUuLmY1OWVjZmM2YzA5NmQ0NDAy
MGVjZDMyNjJkY2EyZDI1NDIwZmFlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBF
TkFCTEUoTUhUTUwpCiAjaW5jbHVkZSAiTUhUTUxQYXJzZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUhUTUxBcmNoaXZlLmgiCiAjaW5jbHVkZSAiTUlN
RUhlYWRlci5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTExOSw3ICsxMjAs
NyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0aEhl
YWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiB2b2lkIE1IVE1MUGFyc2VyOjphZGRSZXNvdXJjZVRv
QXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqIHJlc291cmNlLCBNSFRNTEFyY2hpdmUqIGFyY2hpdmUp
CiB7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwot
ICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKG1p
bWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlw
ZShtaW1lVHlwZSkgfHwgbWltZVR5cGUgPT0gInRleHQvY3NzIikgeworICAgIGlmICghTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkgfHwg
bWltZVR5cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCkpIHsKICAgICAgICAgbV9yZXNvdXJjZXMu
YXBwZW5kKHJlc291cmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxNGNj
ZDJhM2I5ZjMxN2U1ZTI0YjZlZDdkNmUxNWM1ZWNhNjllZDI5Li5mNTJhOTJkMDNlNTMyOGM2ZDk3
YzUxYzBjNTEzNzhiZjYyYWRjOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC00MCw3
ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQogICAgIDogQ2Fj
aGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgVHlwZTo6Q1NTU3R5bGVTaGVldCwgc2Vzc2lv
bklELCBjb29raWVKYXIpCi0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L2NzcyJfcywgcmVxdWVzdC5jaGFyc2V0KCkpKQorICAgICwgbV9kZWNvZGVyKFRl
eHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShjc3NDb250ZW50VHlwZUF0b20oKSwgcmVxdWVzdC5j
aGFyc2V0KCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
UHJlc2VudGF0aW9uRWxlbWVudC5jcHAKaW5kZXggYzE0NDMwMmYwM2JkOTU1NjljNmMyMDQ3NDNh
ZWRiOGJhZWFhZTMyOC4uYmI4YWUwNjNkMDdmNWU4NTFiZDJlZTk3NWQxZDJlNjZkYWNjYTU5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKaW5kZXggMTI1M2I1ODAwNWI1MmZiYTI0MTA4Mjg2MTI3YzRkMTMyZjBkMDQ1Yy4u
OTQwM2U2NTJjOGIyOGM3NjFkNDg2MDIyZDczZDI0ZmM0OTRjMmRmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAi
Q29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgpAQCAtNzMwLDcgKzczMSw3IEBAIHN0YXRp
YyBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmREaXNwbGF5TmFtZUlmTmVlZGVkKGNvbnN0IEF1ZGlv
VHJhY2smIHRyYWNrLCBjb25zCiAgICAgaWYgKCh0cmFjay5raW5kKCkgPT0gQXVkaW9UcmFjazo6
ZGVzY3JpcHRpb25LZXl3b3JkKCkgfHwgdHJhY2sua2luZCgpID09IEF1ZGlvVHJhY2s6Om1haW5E
ZXNjS2V5d29yZCgpKSAmJiAhdGV4dC5jb250YWlucyhhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9u
c0Rpc3BsYXlOYW1lKCkpKQogICAgICAgICByZXR1cm4gYWRkQXVkaW9UcmFja0tpbmREZXNjcmlw
dGlvbnNTdWZmaXgodGV4dCk7CiAKLSAgICBpZiAodHJhY2sua2luZCgpID09IEF1ZGlvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKCkgJiYgIXRleHQuY29udGFpbnMoYXVkaW9UcmFja0tpbmRDb21t
ZW50YXJ5RGlzcGxheU5hbWUoKSkpCisgICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBjb21tZW50YXJ5
QXRvbSgpICYmICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURpc3BsYXlO
YW1lKCkpKQogICAgICAgICByZXR1cm4gYWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4
KHRleHQpOwogCiAgICAgcmV0dXJuIHRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
CmluZGV4IDhkN2Q5ZTY2ZDdiYzFkNDI5YWE1ZDdmZjQ2Njg1MDQwMDhhYWNkNGQuLjdkM2JjYWM3
NjVjOGYzODM2YTQ5OTIwMjkwMmIyZWRjNzJlMjFjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSBFdmVudFNvdXJjZTo6RXZlbnRTb3Vy
Y2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwsCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3VybCh1cmwpCiAgICAgLCBtX3dp
dGhDcmVkZW50aWFscyhldmVudFNvdXJjZUluaXQud2l0aENyZWRlbnRpYWxzKQotICAgICwgbV9k
ZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgIlVURi04
IikpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3Bs
YWluIiwgIlVURi04IikpCiAgICAgLCBtX2Nvbm5lY3RUaW1lcigmY29udGV4dCwgKnRoaXMsICZF
dmVudFNvdXJjZTo6Y29ubmVjdCkKIHsKICAgICBtX2Nvbm5lY3RUaW1lci5zdXNwZW5kSWZOZWVk
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDkzNThiODQ2NGJiNTkzOTEwNWE2ODk4NDc2ZmY2
OTFhZWYzYzM3ODAuLmJjY2RlNTgxNTEwY2EyZmIxZjZjN2ZkMGQ4ZDY0NDYwODU3YzdlNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb25zdGFudFBy
b3BlcnR5TWFwLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJD
b250ZXh0TWVudUNvbnRyb2xsZXIuaCIKQEAgLTIwNjYsNyArMjA2Nyw3IEBAIGNvbnN0IFN0cmlu
ZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHlsZVNoZWV0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpKS0+ZGVjb2RlQW5kRmx1c2go
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDdmOWUxYjdh
MjcwZDJiNWRiNjFmZTk4ZDdiMTA1MDBhN2U2Y2VlMTYuLjUwODk0ZTBkMjkwY2QzY2U1ZjIxOGJj
NmYwODBiZGY4ODU4Yjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5oIgogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNpbmNsdWRl
ICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yNjAsNyArMjYxLDcg
QEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNo
ZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
aGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2Fz
IGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhz
dHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5j
b2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4
dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4
dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7Cisg
ICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgY3NzQ29udGVudFR5cGVBdG9tKCksIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygp
LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVz
b3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcAppbmRleCA0MzcxMjgwNDE5YzJlYWFiODk4ODJmMTRhMzRjYTkyNTc5MjVmYzk4Li43ZGIz
YjliYjYxZmJmZjZiOTMxY2JiNTk3ZTU4ZWFhNWJlYzRlMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYyLDcgKzM2Myw3IEBAIFN0cmluZyBQcmlu
dENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgaW50IHBhCiAgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRpZXMg
d2UgY2FyZSBhYm91dC4KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4tbGVm
dCIpKSB7CiAgICAgICAgIGlmIChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQotICAgICAg
ICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAg
ICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnZhbHVlKCkp
OwogICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBkZmEzZTgyYTYyODRiYmRh
MTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyLi5iZTIzODM0ZDdiZTQ1OTJmZmRjMzI2MmVjM2FlYzdm
Zjg2NjFjYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NXYXJtaW5n
LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNvbW1vblZN
LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAtNTEsNiAr
NTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFByb2Nlc3NXYXJtaW5nOjppbml0aWFs
aXplTmFtZXMoKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBpbml0aWFsaXplQ29t
bW9uQXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBRdWFsaWZpZWRO
YW1lOjppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMThlNDJj
OTlhMzIzMGUxMGFiZWUzNWJmNDUzNDI3NjBlZWY0YWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlQXRvbURhdGE7CitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9BdG9tRGF0YTsKK01h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnNBdG9t
RGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY29t
bWVudGFyeUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBjc3NDb250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbWFpbEF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOworTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5QXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1haW5BdG9tRGF0
YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZUF0
b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBv
ZmZBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gb25BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gcGxhaW50ZXh0T25seUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzZWFyY2hBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURhdGE7CitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlc0F0b21EYXRh
OworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0ZWxBdG9t
RGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4
dEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cnVlQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCit2b2lkIGluaXRpYWxp
emVDb21tb25BdG9tU3RyaW5ncygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRp
YWxpemVLZXk7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10geworICAgICAg
ICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHNvIHRoaXMgZnVuY3Rpb24g
bXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZmlyc3QuCisgICAgICAgIEFTU0VS
VChpc1VJVGhyZWFkKCkpOworICAgICAgICBhbHRlcm5hdGl2ZUF0b21EYXRhLmNvbnN0cnVjdFdp
dGhvdXRBY2Nlc3NDaGVjaygiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIGF1dG9BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hl
Y2soImF1dG8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGNh
cHRpb25zQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJjYXB0aW9ucyIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY29tbWVudGFyeUF0b21E
YXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY3NzQ29udGVudFR5cGVBdG9tRGF0YS5j
b25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICBlYWdlckF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRB
Y2Nlc3NDaGVjaygiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgICAgIGVtYWlsQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJlbWFpbCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgZmFsc2VBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICBsYXp5QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFj
Y2Vzc0NoZWNrKCJsYXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
ICAgICBtYWluQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJtYWluIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBub25lQXRvbURhdGEuY29u
c3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgICAgICBvZmZBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hl
Y2soIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgb25B
dG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBwbGFpbnRleHRPbmx5QXRvbURhdGEuY29uc3Ry
dWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgcmVzZXRBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0
QWNjZXNzQ2hlY2soInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgICAgICBzZWFyY2hBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInNlYXJj
aCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3VibWl0QXRv
bURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJtaXQiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN1YnRpdGxlc0F0b21EYXRhLmNvbnN0cnVj
dFdpdGhvdXRBY2Nlc3NDaGVjaygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgICAgICB0ZWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hl
Y2soInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdGV4
dEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dCIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdGV4dFBsYWluQ29udGVudFR5cGVBdG9t
RGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvcGxhaW4iLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRydWVBdG9tRGF0YS5jb25zdHJ1Y3RX
aXRob3V0QWNjZXNzQ2hlY2soInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgICAgIHVybEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidXJs
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0pOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b21tb25BdG9tU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0
cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNjQ2NDA3ODg2OTE5NWFkNjY3OTEyMTMyYWMxOTI5NmFjNjJi
ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRv
bVN0cmluZ3MuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZXh0ZXJuIE1haW5UaHJlYWRMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRpdmVBdG9tRGF0YTsKK2V4
dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9B
dG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IGNhcHRpb25zQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7CitleHRlcm4gTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZUF0
b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gZWFnZXJBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOworZXh0ZXJuIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbGF6eUF0b21EYXRh
OworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bWFpbkF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gbm9uZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb2ZmQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRhOworZXh0ZXJuIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcGxhaW50ZXh0T25s
eUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gcmVzZXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURhdGE7CitleHRl
cm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdWJ0aXRs
ZXNBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHRlbEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dFBsYWluQ29udGVudFR5cGVBdG9t
RGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHRydWVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYg
YWx0ZXJuYXRpdmVBdG9tKCkgeyByZXR1cm4gYWx0ZXJuYXRpdmVBdG9tRGF0YS5nZXQoKTsgfQor
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9BdG9tKCkgeyByZXR1cm4gYXV0b0F0b21EYXRh
LmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY2FwdGlvbnNBdG9tKCkgeyByZXR1
cm4gY2FwdGlvbnNBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGNv
bW1lbnRhcnlBdG9tKCkgeyByZXR1cm4gY29tbWVudGFyeUF0b21EYXRhLmdldCgpOyB9Citpbmxp
bmUgY29uc3QgQXRvbVN0cmluZyYgY3NzQ29udGVudFR5cGVBdG9tKCkgeyByZXR1cm4gY3NzQ29u
dGVudFR5cGVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVhZ2Vy
QXRvbSgpIHsgcmV0dXJuIGVhZ2VyQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9t
U3RyaW5nJiBlbWFpbEF0b20oKSB7IHJldHVybiBlbWFpbEF0b21EYXRhLmdldCgpOyB9Citpbmxp
bmUgY29uc3QgQXRvbVN0cmluZyYgZmFsc2VBdG9tKCkgeyByZXR1cm4gZmFsc2VBdG9tRGF0YS5n
ZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGxhenlBdG9tKCkgeyByZXR1cm4gbGF6
eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbWFpbkF0b20oKSB7
IHJldHVybiBtYWluQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBu
b25lQXRvbSgpIHsgcmV0dXJuIG5vbmVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0
b21TdHJpbmcmIG9mZkF0b20oKSB7IHJldHVybiBvZmZBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5l
IGNvbnN0IEF0b21TdHJpbmcmIG9uQXRvbSgpIHsgcmV0dXJuIG9uQXRvbURhdGEuZ2V0KCk7IH0K
K2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5QXRvbSgpIHsgcmV0dXJuIHBs
YWludGV4dE9ubHlBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHJl
c2V0QXRvbSgpIHsgcmV0dXJuIHJlc2V0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBB
dG9tU3RyaW5nJiBzZWFyY2hBdG9tKCkgeyByZXR1cm4gc2VhcmNoQXRvbURhdGEuZ2V0KCk7IH0K
K2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXRBdG9tKCkgeyByZXR1cm4gc3VibWl0QXRv
bURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNBdG9tKCkg
eyByZXR1cm4gc3VidGl0bGVzQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3Ry
aW5nJiB0ZWxBdG9tKCkgeyByZXR1cm4gdGVsQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25z
dCBBdG9tU3RyaW5nJiB0ZXh0QXRvbSgpIHsgcmV0dXJuIHRleHRBdG9tRGF0YS5nZXQoKTsgfQor
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHsgcmV0
dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBB
dG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsgfQoraW5s
aW5lIGNvbnN0IEF0b21TdHJpbmcmIHVybEF0b20oKSB7IHJldHVybiB1cmxBdG9tRGF0YS5nZXQo
KTsgfQorCitXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygp
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5NTguLjQ1
Y2NiNmIzOTY4ODJlMGVlYTI2YzExYmRmYjc2ZTFmYTJkYzVlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmlu
Z3MuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDQsNyArNDUsNyBAQCBQ
YXN0ZWJvYXJkQnVmZmVyOjp+UGFzdGVib2FyZEJ1ZmZlcigpID0gZGVmYXVsdDsKIAogYm9vbCBQ
YXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogewotICAgIHJldHVybiB0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0eXBlID09ICJ0ZXh0
L2h0bWwiIHx8IHR5cGUgPT0gInRleHQvdXJpLWxpc3QiOworICAgIHJldHVybiB0eXBlID09IHRl
eHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHx8IHR5cGUgPT0gInRleHQvaHRtbCIgfHwgdHlwZSA9
PSAidGV4dC91cmktbGlzdCI7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuRXhwb3NlVVJMVG9E
T01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdh
NTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjVlYzJkOTA3MWIyZGQyZGVkZDYx
YjQ4ZDQ4OWQ3MGZkYTdlY2UwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRp
Y1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmlu
Z3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgbV9jdXN0
b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0KTsKKyAgICBtX2N1c3RvbURh
dGEud3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHRleHQpOwogfQogCiB2
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKaW5kZXgg
YzcxMjAxNjEwOTU4N2FkNWRjNGM5ZTFjOWEzNjFkYmU4ZjY5MzMyYS4uOTRmNDFmNzRmM2U2N2Zh
M2YwZGNlOWE2YTdlOTBlYWFlMmE0MDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21T
dHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMjksNyArMTMwLDcgQEAgYm9vbCBBbmltYXRpb246
OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIG90aGVyLCBib29sIG1hdGNoUHJvcGVy
dGllcykgY28KIAogYXV0byBBbmltYXRpb246OmluaXRpYWxOYW1lKCkgLT4gY29uc3QgTmFtZSYK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmFtZT4gaW5pdGlhbFZhbHVlIHsgTmFtZSB7
IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJub25lIiksIHRydWUgfSB9OworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxOYW1lPiBpbml0aWFsVmFsdWUgeyBOYW1lIHsgbm9uZUF0b20oKSwgdHJ1
ZSB9IH07CiAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGMwOGUxZmYxMWU3Yjcx
NWI3YjlmMDhmZmJkYTc1M2Q5MmY5Mjk4OTkuLjhhMDZhYzZiZDI4NTk3MTk1OGUyZGY0MjEzMzY1
NDhhYWM0MGI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAor
I2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIK
ICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJGb3VyQ0Mu
aCIKQEAgLTMzMSwxMiArMzMyLDYgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGFwcGxpY2F0
aW9uT2N0ZXRTdHJlYW0oKQogICAgIHJldHVybiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtOwogfQog
Ci1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKLXsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQbGFpbigidGV4dC9w
bGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gdGV4
dFBsYWluOwotfQotCiBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxh
eWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgp
OwpAQCAtNDg1LDcgKzQ4MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAKICAgICAvLyBJ
ZiB0aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcgb3IgaXMgbm90IG1lYW5pbmdmdWwsIHRyeSB0byBm
aWd1cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4KICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUg
PSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKLSAgICBpZiAoY29udGFpbmVyVHlwZS5p
c0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwg
Y29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgeworICAgIGlmIChjb250YWluZXJUeXBlLmlz
RW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBj
b250YWluZXJUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIGlm
IChtX3VybC5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENv
bnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkpKTsKICAgICAgICAg
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KaW5kZXggZWIyOWYyNThmZDE4M2U0MDIwNTk1ZWY2YWQ4NzExNDcwYzQ3MTk0Zi4uNTUz
MWY3NmY1NDhlZjA1ZmZlYTk2ZWQzMDFjYWQwM2NkNWViOTJjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29tbW9uQXRvbVN0cmlu
Z3MuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJGbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIKQEAgLTY5Miw2ICs2
OTMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICAvLyBJbml0aWFsaXpl
IEF0b21TdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFdURjo6QXRvbVN0cmluZzo6aW5p
dCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAg
Ly8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJIHRocmVhZCBzbyB0
aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQgaXQncyB0aHJlYWQt
c3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA2NjcwOGVjMDAx
NGUwZTAyNzI5ODU4MGM4N2QwNzljODZiN2QzODViLi4yMmRhYmViNDJhMDQ4YmY2ZDRlYzhkOTM1
NTJlNTRjYWJkMzUwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkhUVFBIZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1l
cy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5o
CmluZGV4IGYzMDI4NzgwMmFlMjQwNjlmNWJhMjI4MjM1MDY5OWU5MDM2MjA4YTUuLmRjZTFiYjg3
NTdmN2VmZjE3ZGZiMDJkYmQzOTZlYzY5YWI1ODA2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5o
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00MiwxMCArNDMsMTAgQEAgaW5saW5lIGJvb2wgc2hvdWxkVXNlUXVpY2tMb29r
Rm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoKCFNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpICAgICAgIC8v
IGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdlIE1JTUUgdHlwZXMKICAgICAgICAgICYmICFNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpICAgICAgIC8v
IGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlNRSB0eXBlcwotICAgICAgICAgJiYgbWltZVR5cGUg
IT0gInRleHQvY3NzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdu
b3JlIGNzcworICAgICAgICAgJiYgbWltZVR5cGUgIT0gY3NzQ29udGVudFR5cGVBdG9tKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIGNzcwogICAgICAgICAgJiYgbWltZVR5
cGUgIT0gImFwcGxpY2F0aW9uL3BkZiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWdub3JlIHBkZgogICAgICAgICAgKQotICAgICAgICB8fCBtaW1lVHlwZSA9PSAidGV4dC9wbGFp
biIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGtlZXAgdGV4dC9w
bGFpbiB3aGljaCBpcyB0b28gZ2VuZXJpYyBhbmQgY2FuIGhpZGUgc29tZXRoaW5nCisgICAgICAg
IHx8IG1pbWVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpICAgICAgICAgICAgICAg
ICAgICAgICAvLyBidXQga2VlcCB0ZXh0L3BsYWluIHdoaWNoIGlzIHRvbyBnZW5lcmljIGFuZCBj
YW4gaGlkZSBzb21ldGhpbmcKICAgICAgICAgfHwgKG1pbWVUeXBlID09ICJ0ZXh0L3htbCIgfHwg
bWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIpKSAgIC8vIGFuZCBrZWVwIFhNTCB0eXBlcyBm
b3IgLm1vYmlsZWNvbmZpZyBmaWxlcwogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVhYmxlLmNwcAppbmRleCBjODRkNDkwYzMyZDhjY2M3Yjc0ZjQ0N2JmYjA5
NzY1MDI3YmE3N2Q4Li5jNDQ0MTJhZDk0YTU5OWFjNjAzMWYxYmJmY2MzODZhMjBlNjM0YTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDU1NBbmltYXRpb24uaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIkNTU1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgog
I2luY2x1ZGUgIkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCkBAIC0yNTcsNyArMjU4LDcgQEAgYm9vbCBT
dHlsZWFibGU6OmFuaW1hdGlvbkxpc3RDb250YWluc05ld2x5VmFsaWRBbmltYXRpb24oY29uc3Qg
QW5pbWF0aW9uTGlzdCYgYW4KIAogICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9u
cykgewogICAgICAgICBhdXRvJiBuYW1lID0gYW5pbWF0aW9uLT5uYW1lKCkuc3RyaW5nOwotICAg
ICAgICBpZiAobmFtZSAhPSAibm9uZSIgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtleWZyYW1lRWZm
ZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAmJiBrZXlmcmFt
ZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQoKSwgbmFtZSkp
CisgICAgICAgIGlmIChuYW1lICE9IG5vbmVBdG9tKCkgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtl
eWZyYW1lRWZmZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAm
JiBrZXlmcmFtZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQo
KSwgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMwMiw3ICsz
MDMsNyBAQCB2b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJT
dHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICBhdXRvJiBhbmltYXRpb25OYW1lID0gY3VycmVudEFuaW1hdGlvbi0+
bmFtZSgpLnN0cmluZzsKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1lID09ICJub25lIiB8
fCBhbmltYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1l
ID09IG5vbmVBdG9tKCkgfHwgYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICgha2V5ZnJhbWVzUnVsZUV4aXN0c0ZvckFu
aW1hdGlvbihlbGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25OYW1lKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5k
ZXggNGI2YzUzMGJlOWRjZDBlZjRlNTIwYThmMTBmMmJjNDZhMTM1ZmRhYi4uYTY1ZWMxYzhlODEz
ZTQ2MmFmOWNlNDE0MTFlOTIyODAwY2EwMGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RWxlbWVudC5oIgpAQCAtMTEwLDEwICsxMTEsOSBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdAog
ICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbCgiYXV0byIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9SZXZlcnNlKCJhdXRvLXJldmVyc2UiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm90YXRl
ID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKLSAgICBpZiAocm90YXRlID09
IGF1dG9WYWwpCisgICAgYXV0byYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3Rh
dGVBdHRyKTsKKyAgICBpZiAocm90YXRlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHJldHVybiBS
b3RhdGVBdXRvOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1JldmVyc2UpCiAgICAgICAgIHJldHVy
biBSb3RhdGVBdXRvUmV2ZXJzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmNwcAppbmRleCA1MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYwZTIwNDYxODRlLi5l
NzdhMTU3MzMzNGQ0MzNiNGRjYWZhNjAxODA3ZjMxM2Q2Y2U2NmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0zMTksMTggKzMxOSwyMiBAQCBTdHJp
bmcgU1ZHQW5pbWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZnJvbUF0dHIpOwogfQogCi1i
b29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAorc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIHN1bUF0b20oKQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VtKCJzdW0iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHN1bTsKK30KKworYm9vbCBTVkdBbmltYXRpb25FbGVt
ZW50Ojppc0FkZGl0aXZlKCkgY29uc3QKK3sKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9
IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFkZGl0aXZlQXR0cik7
Ci0gICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9u
TW9kZTo6Qnk7CisgICAgcmV0dXJuIHZhbHVlID09IHN1bUF0b20oKSB8fCBhbmltYXRpb25Nb2Rl
KCkgPT0gQW5pbWF0aW9uTW9kZTo6Qnk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBY2N1bXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKLSAgICByZXR1cm4g
dmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25Nb2RlOjpUbzsKKyAg
ICByZXR1cm4gdmFsdWUgPT0gc3VtQXRvbSgpICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRp
b25Nb2RlOjpUbzsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1RhcmdldEF0dHJp
YnV0ZUNTU1Byb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmM2FkMTU3MDExNmNlMmEwN2U1MTQxMDExMGI2
ZGJhZDIyODc5NzgzLi43YzE2NjQzZWU5ZDY5N2QxMGQ0ZDYzNzgxZjFjZTM4ZjUyZDZlZTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggOWFkMWU0YzM4YWU1N2RiZDhlZjNm
MmNkNGZiNmU2OWRkOWQyNDJiYi4uODk5MmVjOTkzNjhkZTNiYWNkNTc4ODZmMzhkMGJmM2U4MWI0
Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21t
b25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKICNpbmNsdWRl
ICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtNDAsNyArNDEs
NyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgICAgIGNh
c2UgRWRnZU1vZGVUeXBlOjpXcmFwOgogICAgICAgICAgICAgcmV0dXJuICJ3cmFwIl9zOwogICAg
ICAgICBjYXNlIEVkZ2VNb2RlVHlwZTo6Tm9uZToKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJf
czsKKyAgICAgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgICAgICB9CiAKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01Myw3ICs1NCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxFZGdlTW9kZVR5cGU+IHsKICAgICAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5cGU6
OkR1cGxpY2F0ZTsKICAgICAgICAgaWYgKHZhbHVlID09ICJ3cmFwIikKICAgICAgICAgICAgIHJl
dHVybiBFZGdlTW9kZVR5cGU6OldyYXA7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAibm9uZSIpCisg
ICAgICAgIGlmICh2YWx1ZSA9PSBub25lQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIEVkZ2VN
b2RlVHlwZTo6Tm9uZTsKICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6VW5rbm93bjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCmluZGV4IDA2NzAzNDE1ZTg5OTVkOGVi
NDU5ODAzMGI3YjMwZmMxNDliOThkMDAuLmFmOTYzYzI4ZDA2ZDU5ZmM0Nzc3ODIwYzA1ZDM1MzQ2
YjM3ZGQxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIK
IApAQCAtNzUsMTEgKzc2LDYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVu
aXRzVHlwZT4gewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyT3JpZW50VHlwZT4gewotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0cmluZygpCi0g
ICAgewotICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3Ry
aW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8iKTsKLSAgICAgICAgcmV0dXJuIGF1
dG9TdHJpbmc7Ci0gICAgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0YXJ0UmV2ZXJz
ZVN0cmluZygpCiAgICAgewogICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1
dG8tc3RhcnQtcmV2ZXJzZSIpOwpAQCAtODgsNyArODQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdoZXN0
RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHTWFya2VyT3JpZW50QW5nbGU7IH0KICAgICBzdGF0aWMg
U1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IHsKLSAgICAgICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkpCisgICAgICAgIGlmIChzdHJp
bmcgPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRv
OwogICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKSkKICAgICAg
ICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlOwpAQCAtOTcsNyAr
OTMsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewog
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyT3JpZW50VHlwZSB0eXBlKQogICAg
IHsKICAgICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKLSAgICAgICAgICAg
IHJldHVybiBhdXRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAg
ICAgICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0b1N0YXJ0UmV2ZXJzZSkKICAgICAg
ICAgICAgIHJldHVybiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRleCAw
OGNmNGIwM2MyNTE1YjYyMDgwMDA1NzI1ZjAyMjkyM2I0ZDZiN2FiLi42YTAzMWIwYmM0YjI0YTVk
Yjc0ODM4ZTdhZjAwNWQ5NTEwNmM0NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVt
ZW50LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgog
CiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC02NSw5ICs2Niw4IEBAIHZvaWQgU1ZHU3R5bGVF
bGVtZW50OjpzZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25zdCBBdG9tU3RyaW5n
JiBTVkdTdHlsZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9tU3RyaW5n
JiBuID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNO
dWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOworICAgIGF1dG8mIHR5cGVWYWx1ZSA9IGdl
dEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOworICAgIHJldHVybiB0eXBlVmFsdWUuaXNO
dWxsKCkgPyBjc3NDb250ZW50VHlwZUF0b20oKSA6IHR5cGVWYWx1ZTsKIH0KIAogdm9pZCBTVkdT
dHlsZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCA2YTIyNDhjN2Y4NWE2MDQ0NGQ2N2RiN2E5
MWE3ZDhlYjliY2MxZjAwLi41ZGNlZGUzMTMzM2UwMjgzYzJjZjYwMDAyOTk4ZTVjMWJjMzU3MzAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0yMCw2ICsyMCw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RleHRDb250ZW50RWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtNzcsNyArNzgsNyBAQCBzdHJ1Y3QgU1ZH
UHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gewogICAgICAgICBjYXNlIFNW
R1RleHRQYXRoU3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKICAgICAgICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOgotICAgICAgICAgICAgcmV0
dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgICAgIGNh
c2UgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1cm4gImV4YWN0Il9z
OwogICAgICAgICB9CkBAIC04OCw3ICs4OSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdUZXh0UGF0aFNwYWNpbmdUeXBlPiB7CiAKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAo
dmFsdWUgPT0gImF1dG8iKQorICAgICAgICBpZiAodmFsdWUgPT0gYXV0b0F0b20oKSkKICAgICAg
ICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOwogICAgICAgICBpZiAodmFsdWUg
PT0gImV4YWN0IikKICAgICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5k
ZXggMTZlYWI2NTIwZTg4YmNjYzM1Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNS4uNGNjNWRkNzIzYjhi
YTkxOGMxZTU2OTVmMjg2N2NjZmM3ZTllYzZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHN0YXRpYyBT
TUlMRXZlbnRTZW5kZXImIHNtaWxFbmRFdmVudFNlbmRlcigpCiAgICAgcmV0dXJuIHNlbmRlcjsK
IH0KIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluZGVmaW5pdGVBdG9tKCkKK3sKKyAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5p
dGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICByZXR1cm4gaW5kZWZpbml0ZVZhbHVlOworfQorCiAvLyBUaGlzIGlzIHVzZWQgZm9yIGR1
cmF0aW9uIHR5cGUgdGltZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBuZWdhdGl2ZS4KIHN0YXRpYyBj
b25zdCBkb3VibGUgaW52YWxpZENhY2hlZFRpbWUgPSAtMS47CiAgICAgCkBAIC0zMzgsOSArMzQ0
LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3
IGRhdGEpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCiAgICAgYXV0
byBwYXJzZSA9IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZp
bml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAocGFyc2Ug
PT0gaW5kZWZpbml0ZVZhbHVlLmdldCgpKQorICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlQXRv
bSgpKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKIAogICAgIGRvdWJs
ZSByZXN1bHQgPSAwOwpAQCAtNjk4LDggKzcwMiw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50
OjpyZXBlYXRDb3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRl
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICh2YWx1ZSA9PSBp
bmRlZmluaXRlVmFsdWUpCisgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVBdG9tKCkpCiAgICAg
ICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CiAgICAgZG91
YmxlIHJlc3VsdCA9IHZhbHVlLnN0cmluZygpLnRvRG91YmxlKCZvayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCBlNzc2NWFj
Y2U4NDgzMzE1ZDNiNzQ0MmM4MDA5ZDkzYmQ5MjcyNDBiLi42MGE2OTkwYjJkZDUwOGE3OTc1Y2Vj
MTM2MWU2YTlkN2RiMDFmMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NQ
YXJzZXIuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFsaXphdGlv
bi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYTE2ZGZjNGEyMmRiMDIzNTYyMGE3Yjlm
N2U5Yzc4ZDE5N2JiOTA3Ni4uNmRhZDJkNGZlMzg5YWJlZGU5M2M5ZjY0MDdiYjZhOTZhNjRlY2Iz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4
dERhdGEsCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjpp
bml0KCk7CisgICAgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiB9CiAKIFNlcnZpY2VX
b3JrZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoVmFsdWUuY3BwCmluZGV4IGQyMjk1NGJiYTNmMWNlMGI4YTFkZTk2YmE2MDIxNjkzZjQ4
MTMzOTEuLmMzMDViYzBiNWUyNzg0NzVhYmJjMjQ3NmI4YjIyMmNmNDllYmRjMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhWYWx1ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJYUGF0aFZhbHVlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5n
cy5oIgogI2luY2x1ZGUgIlhQYXRoRXhwcmVzc2lvbk5vZGUuaCIKICNpbmNsdWRlICJYUGF0aFV0
aWwuaCIKICNpbmNsdWRlIDxsaW1pdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5jcHAKaW5kZXggMTY1OGZjMDAwZDFmNzgwNzUyOTZlODgzMDY1MTk0MWY2MjZjMjBjNi4uN2Fm
ZDg5MzhmYzQ0Njg3NjBhNzg5NzA4NTU2ZGU2ZWEzMzI5Y2U2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0
b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZW1vcnlSZWxlYXNlLmg+CkBAIC0yMjcsNiArMjI4LDcgQEAgdm9pZCBHUFVQcm9jZXNz
Ojppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBHUFVQcm9jZXNzOjppbml0
aWFsaXplR1BVUHJvY2VzczoiLCB0aGlzKTsKICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRo
cmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJD
b3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIGF1dG8mIG1lbW9yeVBy
ZXNzdXJlSGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAg
bWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExvd01lbW9yeUhhbmRsZXIoW3RoaXNdIChDcml0aWNh
bCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNTMwY2JjZDVhMDZlMDQy
ZGI2NjVhNTA4YTBjNmIwY2Q0ZDE4MWYxOS4uZDgxYWQ4OTEyZTJhY2E2ZDk3ZmMyNDgzOGVmNTQ0
NWVkOTkxMTEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5n
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
TlMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpAQCAt
MzE4LDYgKzMxOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBXVEY6OlRocmVh
ZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6Omlu
aXQoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAg
IG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBwYXJhbWV0ZXJzLnNob3VsZFN1cHBy
ZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVByZXNz
dXJlSGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
S2l0MkluaXRpYWxpemVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYktp
dDJJbml0aWFsaXplQ29jb2EubW0KaW5kZXggYzI4MGNmZmUzOTgzZmZjOWRmY2M1ZjUxNjRiMzRj
NjQ0YjMyYWY2Zi4uYjRkOTEyMWJjYmU3M2M3ZGQ5NDVjYjEwN2RhMDZhZDBiMjIyMjVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNv
Y29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgog
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVK
SVRPcGVyYXRpb25zLmg+CiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHd0Zi9HZW5lcmF0ZVBy
b2ZpbGVzLmg+CkBAIC01MCw2ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkluaXRpYWxpemF0aW9u
Q29kZSh2b2lkKiA9IG51bGxwdHIpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKFtO
U1RocmVhZCBpc01haW5UaHJlYWRdLCAiSW5pdGlhbGl6ZVdlYktpdDIgc2hvdWxkIGJlIGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQiKTsKIAogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIEluaXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAppbmRleCBlNWMwOTZm
MjhkMjhhYmZmNDNjOTM3MTRmNjVkZTdiZjMyYTMyY2RhLi4wM2ZjYzExMTlmYWIyYWIxY2IwOTdk
YjI4MGNlMTgxOThjNzVhZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJL
aXQySW5pdGlhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRp
YWxpemUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlv
bi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
b2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUpJVE9wZXJhdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvR2VuZXJhdGVQcm9maWxlcy5oPgpAQCAtNDUsNiArNDYsNyBA
QCB2b2lkIEluaXRpYWxpemVXZWJLaXQyKCkKICAgICBKU0M6OmluaXRpYWxpemUoKTsKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAg
IFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgV1RGOjpSZWZD
b3VudGVkQmFzZTo6ZW5hYmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKaW5kZXggN2Y2OGZkMzIzNjdlOTViOTdjNTM1M2ZmMjhiY2NjMWQ5ZjE1ODhkNS4uNzdiOWE1
ZWEzYmVlYTU1ZGQxYTY3MjA4YTE5MDA4MjRhOTA5Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25Q
YXJzZXIuaD4KQEAgLTU0Niw2ICs1NDcsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpj
b21waWxlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgV1RGOgogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwor
ICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIFdlYkNvcmU6
OlF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICAKICAgICBhdXRvIHBhcnNlZFJ1bGVzID0gV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoanNvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKaW5kZXggODc1NTQ4YmM0ZmE1YzYyY2Ri
MjAzYWNhOWUxYzVjYjdiZTUyNDViYS4uZjZhNzc2ZmI1MGI2YWMwYWEzMDczN2U2OTdiOWIxNmUw
ODQ5NDhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0R3JhcGhp
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1
ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRD
YXNjYWRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250RGVzY3JpcHRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgpAQCAtNDcsNiArNDgsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHN0YXRpYyBGb250Q2FzY2FkZSBtYWtlRm9udChjb25zdCBXZWJGb250RGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIFN0cmluZyBmb250
RmFtaWx5U3RyaW5nKGRlc2NyaXB0aW9uLmZhbWlseSwgZGVzY3JpcHRpb24uZmFtaWx5TGVuZ3Ro
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ1ZTZjMTg3YzdkODUwOTE2ZDEzNmM5MWJmMGU4NTI1NTNiZGNjNWEuLmY4YmYyMDViZDBmYzgw
MzRkN2E5MGFjZmIyOWZjMjkwOTRmMDE5NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJp
bmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtl
QmFja2VuZCk6CisKIDIwMjItMDQtMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHJlY2VudCBkZXByZWNhdGlvbiB3YXJuaW5ncyBv
biBpT1MuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29u
dGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCA3YjY4Njk3ZTY0ZmVkZmU4NjljNzE4OThiZGYzZTNl
NGJiNjI5ZDQ5Li43Y2Y2YjcyNTUxZmE0Mzc0YTdhMTAzNjM5YmQyZWVhY2U3ZGZlZTZlIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0
ZW5zaW9ucy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJVdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Db21iaW5lZFVSTEZpbHRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0
b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaD4KQEAgLTIxMyw2ICsyMTQsNyBAQCBz
dGF0aWMgUmVzb3VyY2VMb2FkSW5mbyByZXF1ZXN0SW5Ub3BBbmRGcmFtZVVSTHMoQVNDSUlMaXRl
cmFsIHVybCwgQVNDSUlMaXRlcmFsCiBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bnNCYWNrZW5kIG1ha2VCYWNrZW5kKFN0cmluZyYmIGpzb24pCiB7CiAgICAgQXRvbVN0cmluZzo6
aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAg
IGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKGpzb24pKTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bnNCYWNrZW5kIGJhY2tlbmQ7CiAgICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJ0ZXN0
RmlsdGVyIl9zLCBXVEZNb3ZlKGV4dGVuc2lvbiksIHsgfSk7Cg==
</data>
<flag name="commit-queue"
          id="486842"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458065</attachid>
            <date>2022-04-21 08:38:35 -0700</date>
            <delta_ts>2022-04-21 11:28:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220421083834.patch</filename>
            <type>text/plain</type>
            <size>126711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2NGY4MzU4ZmEwZTU1NTNjYzc2ZWU5
YzlmZDkzNDdhZjIwOGJhY2MuLjNjZDM0MDhhYzNiOWY2NDFlYTUzMDY1YTQ3NTYzYWYyZTdkMzBm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHRydWUgLyBmYWxz
ZSBBdG9tU3RyaW5ncyB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIHJldXNlIHRoZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1NjA5YjUzOTk3MWE4NzQzZGNlNzcyMjNkMmFhYTdiZWQ4ZTM3Yjg5Li45YzllZDRh
MmU2YjY5Y2NjNjIwOWQyNDkyY2RkN2EwZWI5OTBhMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjI2IEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21v
dGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkVmZmVjdDo6Z2V0VGltaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkVmZmVjdDo6dXBkYXRlVGltaW5nKToKKyAgICAgICAgKiBhbmltYXRpb24vRWZm
ZWN0VGltaW5nLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aXNWYWxp
ZENTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZGlzcGxheSBj
b25zdCk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRmVhdHVyZU5hbWVzOjppbml0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6OmRyb3BFZmZlY3QgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6Cisg
ICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9Gb250U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZhbHVl
Rm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAgKiBodG1sL0F1
dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhU
TUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVWYWx1ZUZv
ckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlG
dW5jdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVmFsaWRE
aXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OmF1dG9jb21wbGV0ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJp
bmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlbG9hZCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvSW5wdXRNb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0TW9kZU5hbWVzOjpub25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0ZWwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1v
ZGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnNlYXJj
aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFt
ZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eUltcGwpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmtpbmRLZXl3b3JkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjYXB0aW9uc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpwb3NpdGlvbkFsaWduIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZUVEN1ZTo6c2V0UG9zaXRpb25BbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRD
dWU6OnRvSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdXRvS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVmlkZW9UcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9j
dW1lbnQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUpOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjphZGRSZXNv
dXJjZVRvQXJjaGl2ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREaXNwbGF5TmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpFdmVudFNvdXJjZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICog
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6aW5pdGlhbGl6ZU5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJp
bmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsdGVybmF0aXZlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjphdXRv
QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpjYXB0aW9uc0F0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tbWVudGFyeUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y3NzQ29udGVudFR5cGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OmVhZ2VyQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjplbWFp
bEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2VBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmxhenlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om1haW5BdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6Om5vbmVBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om9mZkF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6b25BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlBdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc2V0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ym1pdEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c3Vi
dGl0bGVzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZWxBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRQbGFpbkNvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp1cmxB
dG9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0UGxhaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZVF1
aWNrTG9va0Zvck1JTUVUeXBlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphbmltYXRpb25MaXN0Q29udGFpbnNOZXdseVZhbGlk
QW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdW1BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWRkaXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlw
ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VN
b2RlVHlwZT46OmZyb21TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJUeXBlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyT3JpZW50VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+OjphdXRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
RWxlbWVudDo6dHlwZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGVmaW5pdGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50IGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bV9ub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVl
LmNwcDoKKwogMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgdHJ1ZSAvIGZhbHNlIEF0b21TdHJpbmdzIHRvIGEgY2VudHJhbCBsb2NhdGlv
biBhbmQgcmV1c2UgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDAwOGM3YTg1NGM3NDIxZDc3ODRkZjM5MWFi
MzU0ZDJjMjIxNzA3Li5kYjczMmMyMDY2YTMwZWYzZTYxYWY1YjRlMzBjYjlkZjNkZWUxOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21t
b24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZUdQVVByb2Nlc3MpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnJ1bkluaXRp
YWxpemF0aW9uQ29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisKIDIwMjItMDQtMjAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVh
c2UgYXNzZXJ0IGxvZ2dpbmcgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGEyMDc5
ZjNhYjVmNmE4ZThhODViYjUxNjk4YmYxY2U0MjdlMGQ5MzQuLjA5YmI0Mzk3ZDhkMGI4NWFkMDli
ODQ3MDNmMmI0ZDhkNTcwMTAyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBw
cm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKG1ha2VGb250KToKKwogMjAyMi0w
NC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3Ry
aW5nOjp0cnVuY2F0ZSgpIGFuZCB1c2UgU3RyaW5nOjpsZWZ0KCkgaW5zdGVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZy5jcHAKaW5kZXggOTMwZmNiMjk5NzY4NDhkMzE4ZmNiZTEyODM0YTlmNGIz
ZWM1YTgwMy4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRmYTA3Y2EzYTFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMzcsOCArMTM3LDYgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRh
OwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sQXRvbURhdGE7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB4bWxuc0F0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOwotV1RGX0VYUE9SVF9QUklW
QVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VB
dG9tRGF0YTsKIAogdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKIHsKQEAgLTE1OSw4ICsxNTcsNiBA
QCB2b2lkIEF0b21TdHJpbmc6OmluaXQoKQogICAgICAgICBzdGFyQXRvbURhdGEuY29uc3RydWN0
V2l0aG91dEFjY2Vzc0NoZWNrKCIqIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1sbnNBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbG5zIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICB0cnVlQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFj
Y2Vzc0NoZWNrKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
ICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2UiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nLmgKaW5kZXggNzYzMTE1YTY2NjdiODg4M2JlNWNiY2UzYmViZjQ1NDYwMzEz
NTk1Yi4uMGFkZjUyMjNiYjYwMjljM2RlOTg5YzY4MzE3NDAxNjZmMDZjNzA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmgKQEAgLTI5MywxNiArMjkzLDEyIEBAIGV4dGVybiBXVEZfRVhQT1JU
X1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtcHR5QXRvbURh
dGE7CiBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0
b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbG5zQXRvbURhdGE7Ci1leHRlcm4gV1RGX0VYUE9S
VF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
dHJ1ZUF0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBudWxsQXRvbSgpIHsgcmV0dXJuIG51bGxBdG9tRGF0YS5nZXQoKTsg
fQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRv
bURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdGFyQXRvbSgpIHsgcmV0
dXJuIHN0YXJBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHhtbEF0
b20oKSB7IHJldHVybiB4bWxBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHhtbG5zQXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGZhbHNlQXRvbSgpIHsgcmV0dXJuIGZhbHNlQXRv
bURhdGEuZ2V0KCk7IH0KIAogaW5saW5lIEF0b21TdHJpbmcgQXRvbVN0cmluZzo6ZnJvbVVURjgo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTM2Miw5ICszNTgs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRv
bVN0cmluZz4gewogdXNpbmcgV1RGOjpBdG9tU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsK
IHVzaW5nIFdURjo6ZW1wdHlBdG9tOwotdXNpbmcgV1RGOjpmYWxzZUF0b207CiB1c2luZyBXVEY6
OnN0YXJBdG9tOwotdXNpbmcgV1RGOjp0cnVlQXRvbTsKIHVzaW5nIFdURjo6eG1sQXRvbTsKIHVz
aW5nIFdURjo6eG1sbnNBdG9tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4MGJiZWE4ZTcyMzRm
MDU1ZWZkNmUzNDAwNzUwYjM3ZjMzMTc4Y2FlLi4yOTc0MGNmNmE0MTlkYjg5NWI4MjFjYzlmOTI2
ZTdlOWQ1N2YwMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDAsNiArMTI0MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9DUFVNb25p
dG9yLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXIuaAogICAgIHBsYXRmb3JtL0NvbG9yQ2hv
b3NlckNsaWVudC5oCisgICAgcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaAogICAgIHBsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuaAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQ5ZjNiMzA3NTcy
MTE1Nzc3Nzg1OWMwYmFiMTYwMWQwY2Y4ZTk1ZTkuLjQ2OWNjM2FkYjVmYmY3YjM4MTQ5MmQzZWNk
NDIxOTI2Y2RjZmRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3RpdmVQYXN0
ZWJvYXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKICAgICB9CiAKLSAg
ICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgIGlmICh0eXBlID09IHRleHRQbGFp
bkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5U
ZXh0UmVhZGVyOwogICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFk
ZXIsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKICAg
ICAgICAgcmVzdWx0QXNTdHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCmluZGV4IGM5YjdmYzFkNTJmYTZmYTI0NjNkNTBmNTZiODk0ZWI1ZTZmYjUwNDEu
LjgzYmY5ZTUwMTYzZjRlOWNjYTFiMzRhYTMwYTQ1YTI0YTg2YjRiNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEzNiw3ICsxMzcsNiBAQCBj
b25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzcGVl
Y2hIaW50KCJzcGVlY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtdXNpY0hp
bnQoIm11c2ljIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgi
ZGV0YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEhpbnQoInRleHQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb3Rpb25IaW50KCJtb3Rpb24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKG1fcHJpdmF0
ZS0+Y29udGVudEhpbnQoKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50KCkgY29uc3QKICAgICBjYXNlIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkRldGFpbDoKICAgICAgICAgcmV0dXJuIGRldGFp
bEhpbnQ7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0
OgotICAgICAgICByZXR1cm4gdGV4dEhpbnQ7CisgICAgICAgIHJldHVybiB0ZXh0QXRvbSgpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICB9CkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRDb250ZW50SGludChjb25zdCBT
dHJpbmcmIGhpbnRWYWx1ZSkKICAgICAgICAgICAgIHZhbHVlID0gTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OkhpbnRWYWx1ZTo6RGV0YWlsOwogICAgICAgICBlbHNlIGlmIChoaW50VmFsdWUgPT0g
Im1vdGlvbiIpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpI
aW50VmFsdWU6Ok1vdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJ0ZXh0IikK
KyAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09IHRleHRBdG9tKCkpCiAgICAgICAgICAgICB2
YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OlRleHQ7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMGFmM2QwNmE1YjBi
YmM2OGZjMDExMzNiY2NmZTFmMmNkOTcwZTg5ZS4uNWQyMzE2ZmFjNzM5MzEwYzU4MGRiNmJlNWRi
ZWY0MWE5OTFhZmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjcsNiArMTg2Nyw3IEBAIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcAorcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCiBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMyOTEzMGViYzc2N2U1NzgzOTk5ZjdkMDY4N2IxZjExMjJlZDkyYjYu
LmVkZGE0MzA5NjIzN2NjOGI0ODIwZmE2MzgyNGRkODcxMzU3MmE2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzIsNiAr
MjczMiw3IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJG
MkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1
Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQu
aCAqLzsgfTsKIAkJODM5QkU2RDUyNEY1ODc2MjAwNERGNTBGIC8qIElJUkZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QkU2RDIyNEY1ODc1
NTAwNERGNTBGIC8qIElJUkZpbHRlci5oICovOyB9OworCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOUM2OUNFMjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3Ry
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzQTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDcz
RCAvKiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8q
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlF
MDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwpAQCAtMTIzMDMsNiArMTIzMDQs
OCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDIyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDQyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZp
bHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJGaWx0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMkFCRDgyNEQ4NkRDNjAwRTJENzNEIC8qIERlbGF5
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBMkFCREEyNEQ4NkRDNzAwRTJENzNEIC8qIERlbGF5T3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVsYXlPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE2Nyw2ICszMDE3MCw4IEBACiAJCQkJ
QzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLAogCQkJCUMzN0NE
RUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLywKIAkJCQlCQ0M4
Q0ZDQTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAorCQkJCTgzOUM2OUNE
MjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5jcHAgKi8sCisJCQkJODM5QzY5
Q0UyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8sCiAJCQkJQTE0MDkw
RkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovLAog
CQkJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJ
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0zNDA2NCw2
ICszNDA2OSw3IEBACiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzlD
NjlEMDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21t
b25DcnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGMzJCMURGQkIxMDcw
MDQxNkQ2QyAvKiBDb21tb25WTS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDQzMWZkZWExNTcyNjI3MmEyYjY4Zjk3
NGIyNmUwYWU2YTU1ZmMwYWEuLjA3ZTE5ODM2ZDcwZDFkYjE1M2U4ODZmMTgyN2Y2YjliZjBlMWMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAKICNpbmNsdWRl
ICJDU1NBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvbi5oIgpAQCAtNjksNyArNzAsNyBAQCBFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRUaW1pbmcoKSBjb25zdAogICAgIHRpbWluZy5pdGVyYXRpb25TdGFy
dCA9IG1faXRlcmF0aW9uU3RhcnQ7CiAgICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlv
bnM7CiAgICAgaWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcu
ZHVyYXRpb24gPSAiYXV0byJfczsKKyAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gYXV0b0F0b20o
KTsKICAgICBlbHNlCiAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1h
dGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIHRpbWluZy5kaXJlY3Rpb24g
PSBtX2RpcmVjdGlvbjsKQEAgLTM5OSw3ICs0MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmlt
YXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGlt
aQogICAgICAgICAgICAgaWYgKGR1cmF0aW9uQXNEb3VibGUgPCAwIHx8IHN0ZDo6aXNuYW4oZHVy
YXRpb25Bc0RvdWJsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSAiYXV0byIpCisgICAgICAgICAgICBpZiAo
c3RkOjpnZXQ8U3RyaW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9IGF1dG9BdG9tKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRp
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCmluZGV4IDIx
MDczZmE0NzMwM2Y2NGZkMmJhMjYxOWFlOTE4N2Y1ODE1OTUwNmUuLmU4YzBmMWJkOGQ5NTkyMTQ2
YzExM2U2NDM0NTlhYzEwZGRiZmQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9FZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0
VGltaW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxh
eWJhY2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtMzMsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRWZmZWN0VGltaW5nIHsKLSAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgImF1dG8iX3MgfTsKKyAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgYXV0b0F0b20oKSB9OwogICAgIGRvdWJs
ZSBkZWxheSB7IDAgfTsKICAgICBkb3VibGUgZW5kRGVsYXkgeyAwIH07CiAgICAgZG91YmxlIGl0
ZXJhdGlvblN0YXJ0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAwOGZhNDY3Yzhh
MmUzNWU4MDE5Mzc3OTBjZjJkOTBmYmI4YmVjZjBmLi40OGMyNzMyYjEzMGFiZjRhNDBhOTBkYjY2
YjI2NGU4ZWFiNDNiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uRXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIgpAQCAtMjA0LDYgKzIwNSw3IEBAIGJvb2wgaXNW
YWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNv
bW1vbkF0b21TdHJpbmdzKCk7CiAgICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChIVE1MUXVpcmtzTW9kZSk7CiAgICAgQ1NTUGFyc2VyIHBhcnNl
cihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1
YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAuLjM0Njc3OTZmYjNhMWZjODc3Y2U4YTAyMGQ5
NTRlNDQ1YTg4ZWM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiAr
MjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBO
b2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBp
c0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0
cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3Ry
aW5nIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b20oKTsgfQog
CiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJ
bmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDRk
NTExYjVlNjg1NDEzMDVkNDBjMWMzM2I3OTA5YTY1MDY1NTZmNjIuLmQ5NWIwOTg3M2RkZThhN2I3
YjFjYTdiYjRmNWYzNmQwMDAwMjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDA1
LDcgKzQwNSw3IEBAIFN0cmluZyBGb250RmFjZTo6ZGlzcGxheShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGNvbnN0IGF1dG8mIGxvYWRpbmdCZWhhdmlvcldyYXBwZWQgPSBtX2JhY2tpbmctPmxv
YWRpbmdCZWhhdmlvcigpOwogICAgIGlmICghbG9hZGluZ0JlaGF2aW9yV3JhcHBlZCkKLSAgICAg
ICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1
cm4gY29udGV4dC5jc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsb2FkaW5nQmVoYXZpb3JXcmFw
cGVkLnZhbHVlKCkpLT5jc3NUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwCmluZGV4IDJmNWI4YjA0NzM5NWEyY2JkNzU1YWMxY2Y1MzRiZmRjZWY1NzEw
NTcuLjZkNTA5MTlkOTUxNmFiNzU3NGRhMDVmMjFiMGUwNGQ2Njk3MDBkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMgewogCkBAIC0zMyw2ICszNSw3IEBAIHZvaWQgaW5pdCgpCiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAg
ICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogI2RlZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3Ry
dWN0KHN0cmluZywgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBD
U1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9C
QUwpCiAjdW5kZWYgSU5JVElBTElaRV9HTE9CQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKaW5kZXggMGVkMmJlZDk2MjMyMDRmOWEwYmViOWZjYjE1YTEwZGQ3ZTVkOGYzOS4uNjY2YmNj
Nzk2NThjOWRlZGYxOWIyOTU3OTU0M2M4YmNiNjM2OTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTEyNyw3
ICsxMjgsNyBAQCBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiAgICAgU3RyaW5nIGxvd2VyY2FzZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXModHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAobG93ZXJj
YXNlVHlwZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWlu
OyIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVybiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8
fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCiAgICAgICAgIHJl
dHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRo
KCJ0ZXh0L2h0bWw7IikpCkBAIC0yNjUsNyArMjY2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNl
dERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CiAgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHVybC5zdHJpbmcoKTsKLSAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSB0
ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgc2FuaXRpemVkRGF0YSA9IGRhdGE7
IC8vIE5vdGhpbmcgdG8gc2FuaXRpemUuCiAKICAgICBpZiAoc2FuaXRpemVkRGF0YSAhPSBkYXRh
KQpAQCAtNDI4LDcgKzQyOSw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0
bWxUZXh0KQogewogICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKLSAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxh
aW5UZXh0KTsKKyAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9o
dG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZl
bnQpKTsKIH0KQEAgLTQ2Nyw3ICs0NjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiAKIFN0cmluZyBEYXRhVHJh
bnNmZXI6OmRyb3BFZmZlY3QoKSBjb25zdAogewotICAgIHJldHVybiAibm9uZSJfczsKKyAgICBy
ZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyb3BFZmZlY3Qo
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNDE1NWY2MWQwMDJi
ZjJmNmYwN2UxNmRhZDU4YmQzYWQ3Njk0YWIuLmE5OGQyZjI1NGVhNjA0MmNlNzE1YzQxM2FjZDAx
OGUyNzA1ZmNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkV2ZW50LmgiCkBAIC02MDA3LDcgKzYwMDgsNyBAQCB2b2lkIERvY3VtZW50Ojpz
ZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiAKIFN0cmluZyBEb2N1bWVudDo6ZGVz
aWduTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gIm9uIl9zIDog
Im9mZiJfczsKKyAgICByZXR1cm4gaW5EZXNpZ25Nb2RlKCkgPyBvbkF0b20oKSA6IG9mZkF0b20o
KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCBk
MmFhOGQxZjdlMzk5ZTMzZGZhNWMxMTEwNjQxZDJmNDAxZTZjM2EwLi4wNWM4MmZiYWE5MThiZTBh
MWU2Mzc4NWIyYWFkZjM4YjdlNTRkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRPd25lci5oIgogCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE1MSw4ICsx
NTIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICAvLyBGSVhNRTogU2hvdWxkIE1JTUUgdHlw
ZXMgcmVhbGx5IGJlIGNhc2Ugc2Vuc2l0aXZlIGluIFhNTCBkb2N1bWVudHM/IERvZXNuJ3Qgc2Vl
bSBsaWtlIHRoZXkgc2hvdWxkLAogICAgIC8vIGV2ZW4gdGhvdWdoIG90aGVyIHRoaW5ncyBhcmUg
Y2FzZSBzZW5zaXRpdmUgaW4gdGhhdCBjb250ZXh0LiBNSU1FIHR5cGVzIHNob3VsZCBuZXZlciBi
ZSBjYXNlIHNlbnNpdGl2ZS4KICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoaXMgYW5kIHRoZW4g
cmVtb3ZlIHRoZSBpc0hUTUxFbGVtZW50IGNoZWNrIGhlcmUuCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZSgidGV4dC9j
c3MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InRleHQvY3NzIikgOiB0eXBlID09IGNzc0NvbnRlbnRUeXBlOworICAgIHJldHVybiBlbGVtZW50
LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKTsKIH0KIAogdm9pZCBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKaW5kZXggYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZS4uOTFiYzRm
ZWI4OWRjNTgzYmYwYjNmNzA3MDVmYmQyYThiZGMyOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTk0LDcgKzk1LDcgQEAgdm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKLSAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKKyAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAg
ICAgICAgIG1faXNYU0wgPSB0eXBlID09ICJ0ZXh0L3htbCIgfHwgdHlwZSA9PSAidGV4dC94c2wi
IHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24veGh0
bWwreG1sIiB8fCB0eXBlID09ICJhcHBsaWNhdGlvbi9yc3MreG1sIiB8fCB0eXBlID09ICJhcHBs
aWNhdGlvbi9hdG9tK3htbCI7CiAgICAgICAgIGlmICghbV9pc0NTUyAmJiAhbV9pc1hTTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCmluZGV4IDU0ZDZjZjBl
NTgwNzk3NDExNWU2Y2VlZDcyNjdjNzhmYmRlMjIzNGUuLmIyNTZhMzJhNjhlZTEwYmFhOGRmYmQ4
NTQzMDIyMTU5MTA2OTMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1h
Z2VDb250cm9sc01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5l
cy5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9u
dFNoYWRvdy5jcHAKaW5kZXggMjg4NDgwYjY1NzdlOGVkMWEwM2Y3NThiMGI0ODQ3YjgxNzVmZmU4
Mi4uMjcwNzI0MGJjYWM1OGM1YjIwNzM2OTNjNDUwZTQxMjgzZjkxZTk0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRm9u
dFNoYWRvdy5oIgogCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAi
Q29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBGb250U2hhZG93JiBzaGFk
b3cpCiB7CiAgICAgaWYgKHNoYWRvdy5vZmZzZXQuaXNaZXJvKCkgJiYgIXNoYWRvdy5ibHVyUmFk
aXVzKQotICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgp
OwogCiAgICAgaWYgKCFzaGFkb3cuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gIm5v
bmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgInB4ICIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA1ZWIzYmQwODczNDMyYjRkMGM4ZDlmOTEwZDI4N2RiMWI1OThkZmMzLi5hOWM0
YzYzOTQ3MDhlMzVjNTJmMmFhZDhiNWMyYzkwMDBlMzdhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKICNpbmNsdWRlICJDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNzE4LDcgKzcxOSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgICAg
ICBpZiAoaXNCbG9jayhlbGVtZW50KSkKICAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0
eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3Ms
IGZhbHNlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1l
bnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJu
b25lIl9zLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgbm9uZUF0b20oKSwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tCmluZGV4IGI1ZTBhY2E2ZTIxYmIyNmJiZGMzYzU4ZWJkMzUwOTY1ZDA4NDZk
ZjcuLjk0YTQ2MGY1MzQ5NDg0Y2FiMDhiZGU5ODhhMjdmYjE3NDAwMGE5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbXBvcnQgIkNvbG9yQ29udmVy
c2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW1wb3J0ICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAj
aW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDUz
Y2M2YWIwMTZiZTgyZTcwZWI1NTU1YTc5NjNlYTUwOWJiYmYzMDQuLjQyYjZjMjJlNTllMjg4Y2Fi
MDI2ODg5NmRmYWRkYjYwMTAxZjQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkNoYXJhY3Rl
ckRhdGEuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisj
aW1wb3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNTk3LDcgKzU5OCw3IEBAIFN0cmluZyBIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZh
bHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CiAgICAgICAgIGlmIChl
bGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KG5vZnJhbWVzVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgICAg
IHJldHVybiBub25lQXRvbSgpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
YWRkcmVzc1RhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShib2R5VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoY2VudGVyVGFnKQog
ICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkZFRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGRpclRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKGRsVGFnKQogICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZyYW1lVGFnKQpAQCAtMTAxNyw3ICsx
MDE4LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3RyaW5nIGZvbnRLZXJuaW5nID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250S2Vybmlu
Zyk7CiAgICAgU3RyaW5nIGxldHRlclNwYWNpbmcgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9y
Tm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOwogICAgIGlmIChmb250S2Vy
bmluZy5sZW5ndGgoKSB8fCBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChm
b250S2VybmluZyA9PSAibm9uZSIpCisgICAgICAgIGlmIChmb250S2VybmluZyA9PSBub25lQXRv
bSgpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUga2VyblZhbCA9
IGxldHRlclNwYWNpbmcubGVuZ3RoKCkgPyBsZXR0ZXJTcGFjaW5nLnRvRG91YmxlKCkgOiAwLjA7
CkBAIC0xMTEwLDcgKzExMTEsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1
dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgICAgICBTdHJp
bmcgaHlwaGVuYXRpb24gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tF
bGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpOwogICAgICAgICBpZiAoaHlwaGVuYXRp
b24ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmIChoeXBoZW5hdGlvbiA9PSAiYXV0byIpCisg
ICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgICAg
ICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0b3I6MS4wXTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0
b3I6MC4wXTsKQEAgLTE2MTAsNyArMTYxMSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2VudGVy
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBCT09MIGVtYmVkZGVkKQogCiAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhZW1iZWRkZWQpCiAgICAgICAgIF9wcm9jZXNzSGVh
ZEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoIWRpc3BsYXlWYWx1ZS5sZW5ndGgoKSB8
fCAhKGRpc3BsYXlWYWx1ZSA9PSAibm9uZSIgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1
bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uLWdyb3VwIikpIHsKKyAgICBlbHNl
IGlmICghZGlzcGxheVZhbHVlLmxlbmd0aCgpIHx8ICEoZGlzcGxheVZhbHVlID09IG5vbmVBdG9t
KCkgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAi
dGFibGUtY29sdW1uLWdyb3VwIikpIHsKICAgICAgICAgaWYgKF9jYWNoZXMtPmlzQmxvY2tFbGVt
ZW50KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpICYmICEoZGlzcGxheVZh
bHVlID09ICJ0YWJsZS1jZWxsIiAmJiBbX3RleHRUYWJsZXMgY291bnRdID09IDApCiAgICAgICAg
ICAgICAmJiAhKFtfdGV4dExpc3RzIGNvdW50XSA+IDAgJiYgZGlzcGxheVZhbHVlID09ICJibG9j
ayIgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShsaVRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZSh1
bFRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpKQogICAgICAgICAgICAgX25ld1Bh
cmFncmFwaEZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC50YWdOYW1lKCksIE5PLCBZRVMpOwpA
QCAtMTg2NSw3ICsxODY2LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBpZiAoZWxlbWVu
dC5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGlucHV0RWxlbWVudC50eXBlKCkgPT0gInRleHQiKSB7CisgICAgICAgICAgICBpZiAoaW5wdXRF
bGVtZW50LnR5cGUoKSA9PSB0ZXh0QXRvbSgpKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcg
KnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIFt2YWx1ZSBsZW5ndGhdID4gMCkKICAgICAgICAgICAgICAgICAgICAgX2FkZFZhbHVlKHZh
bHVlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzYWVlOWNmOWRk
N2RlNmUzZGM4MTUxMDQ4NWU3YzE3ZjRlMGVlZTI0Li44MGE4ODQzNTAyZWI1N2YwM2VkYjJlYjMx
ZGMyNzcxYzBmOWQzOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
QEAgLTEyODUsNyArMTI4Niw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8v
IFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVs
ZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5
ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKICAgICAgICAgZnJhZ21lbnQt
PnBhcnNlSFRNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKLSAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYg
KHNvdXJjZU1JTUVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKQogICAgICAgICBm
cmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgV1RGTW92
ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bFBh
cnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNlU3RyaW5nKSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCmluZGV4IGQ2N2RjNzkyOTQ4NjIxNDM5NDE1
Y2VmZTg2MzY5MDc4ZjY0NzVlYmQuLjQwZTJhOTBlZWMwOTE1MjMwZmYwYjUyZDM1M2RiMjM3NjQy
NDU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NiwxMCArNTcsOCBAQCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6OkRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBudWxsQXRvbSgpOwotICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpOb25lOiB7
Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdmFsdWVOb25lKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgICAgICByZXR1cm4gdmFsdWVOb25lOwotICAgIH0KKyAgICBjYXNlIEF1dG9jYXBpdGFsaXpl
VHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAgICAgY2FzZSBBdXRvY2Fw
aXRhbGl6ZVR5cGU6OlNlbnRlbmNlczogewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlU2VudGVuY2VzKCJzZW50ZW5jZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiB2YWx1ZVNl
bnRlbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZGU1MTg1ZTE3YjM3ZTg0ZGIz
NzE0ODhiNDY4YmZkYzMyNTg3ZDQyOC4uOWRlNzBiN2M2YWRhYzNkZWNlZTA2ZDI1Y2M0MmI2YzQ5
MTIwZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRvZmlsbC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
QEAgLTEzNiw5ICsxMzcsNiBAQCBzdGF0aWMgdW5zaWduZWQgbWF4VG9rZW5zRm9yQXV0b2ZpbGxG
aWVsZENhdGVnb3J5KEF1dG9maWxsQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI3Byb2Nlc3NpbmctbW9kZWwtMwog
QXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotCiAgICAgLy8gTGFiZWw6IERlZmF1bHQKICAgICAvLyAyNi4gTGV0
IHRoZSBlbGVtZW50J3MgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIGVtcHR5IHN0
cmluZywgYW5kIGl0cyBhdXRvZmlsbCBoaW50IHNldCBhbmQgYXV0b2ZpbGwgc2NvcGUgYmUgZW1w
dHkuCiAgICAgLy8gMjcuIElmIHRoZSBlbGVtZW50J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBp
cyB3ZWFyaW5nIHRoZSBhdXRvZmlsbCBhbmNob3IgbWFudGxlLCB0aGVuIGxldCB0aGUgZWxlbWVu
dCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIGVtcHR5IHN0cmluZyBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCkBAIC0xNDksOSArMTQ3LDkgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6
Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAg
ICAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gZm9ybSA9IGVsZW1lbnQuZm9ybSgpOwotICAgICAgICBpZiAoZm9y
bSAmJiBmb3JtLT5hdXRvY29tcGxldGUoKSA9PSBvZmYpCi0gICAgICAgICAgICByZXR1cm4geyBv
ZmYsIGVtcHR5U3RyaW5nKCkgfTsKLSAgICAgICAgcmV0dXJuIHsgb24sIGVtcHR5U3RyaW5nKCkg
fTsKKyAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0b2NvbXBsZXRlKCkgPT0gb2ZmQXRvbSgp
KQorICAgICAgICAgICAgcmV0dXJuIHsgb2ZmQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CiAgICAgfTsKIAogCkBAIC0x
OTksMTMgKzE5NywxMyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIGF1dG9maWxs
IGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhwb3NlZCBhdXRvZmlsbCB2YWx1
ZSBiZSB0aGUgc3RyaW5nICJvZmYiLgogICAgIC8vIFRoZW4sIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChjYXRlZ29yeSA9PSBBdXRvZmlsbENhdGVnb3J5OjpPZmYpCi0gICAgICAgIHJldHVy
biB7IG9mZiwgb2ZmLmdldCgpLnN0cmluZygpIH07CisgICAgICAgIHJldHVybiB7IG9mZkF0b20o
KSwgb2ZmQXRvbSgpLnN0cmluZygpIH07CiAKICAgICAvLyA4LiBJZiBjYXRlZ29yeSBpcyBBdXRv
bWF0aWMsIGxldCB0aGUgZWxlbWVudCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIHN0cmlu
ZyAib24iLAogICAgIC8vIGxldCBpdHMgYXV0b2ZpbGwgaGludCBzZXQgYmUgZW1wdHksIGFuZCBs
ZXQgaXRzIElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBzdHJpbmcKICAgICAvLyAi
b24iLiBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdvcnkgPT0gQXV0b2Zp
bGxDYXRlZ29yeTo6QXV0b21hdGljKQotICAgICAgICByZXR1cm4geyBvbiwgb24uZ2V0KCkuc3Ry
aW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgb25BdG9tKCksIG9uQXRvbSgpLnN0cmluZygpIH07
CiAKICAgICAvLyA5LiBMZXQgc2NvcGUgdG9rZW5zIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgLy8g
MTAuIExldCBoaW50IHRva2VucyBiZSBhbiBlbXB0eSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAppbmRleCA4YTU0Y2EwNTM1NGE5MzAyNzU5
YWI3NWJhM2ExNzU1ZjdiOWY0NTVkLi4yYjIzZTFmZDVjN2E4ZjNkODM2NzZjY2VjYTA0ZDA4Mzdl
OTRhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlw
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00NiwxMyArNDcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIEZvcm1Db250cm9sU3RhdGUgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwotICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gIm9uIl9zIDogIm9mZiJf
cyB9OworICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gb25BdG9tKCkgOiBvZmZB
dG9tKCkgfTsKIH0KIAogdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLSAgICBlbGVtZW50KCktPnNldENoZWNrZWQoc3RhdGVbMF0gPT0gIm9uIik7
CisgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09IG9uQXRvbSgpKTsKIH0KIAog
Ym9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYg
Zm9ybURhdGEpIGNvbnN0CkBAIC05OSw4ICsxMDAsNyBAQCBib29sIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKIAogU3RyaW5nIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb24oIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBvbi5nZXQoKTsKKyAg
ICByZXR1cm4gb25BdG9tKCk7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhp
bnQuY3BwCmluZGV4IDk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEuLmI3
NzU2OTRhMzIxMTE0NTllMjBkZDU0NGM3ZDU3MDA2YWYyNjJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFbnRlcktleUhpbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW50ZXJLZXlIaW50IGVudGVyS2V5SGludEZv
ckF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC02Myw3ICs2NSw3IEBAIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZUZvckVudGVyS2V5SGludChFbnRlcktleUhpbnQgaGludCkKICAg
ICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlvdXM6CiAgICAgICAgIHJldHVybiAicHJldmlvdXMi
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJzZWFy
Y2giX3M7CisgICAgICAgIHJldHVybiBzZWFyY2hBdG9tKCk7CiAgICAgY2FzZSBFbnRlcktleUhp
bnQ6OlNlbmQ6CiAgICAgICAgIHJldHVybiAic2VuZCJfczsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAppbmRleCBhOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4
YjEyYWVhMDYzMzAwMzMyLi44ZWI2YzNlZjhmMzEzNGQ4NmIzNjg5MWM1ZTQwMDFiYjY0MmQ1ZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxl
Z2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IHNyYykKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBm
YWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihw
cmVsb2FkQXR0ciwgImF1dG8iX3MpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIGF1dG9BdG9tKCkpOwogICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAgICByZXR1
cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
aW5kZXggODc5NDg2N2M2ZTA0ZDUwMTYxNzNiZjk3ZDcyMzAwN2U5ZGFmMWRmZC4uOWMzNzMxNWFj
YjU2YmYwMGJjOTVlMzJkN2EwMTNhNzI1NzExNmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtODIsMTYgKzgzLDEyIEBAIGlu
dCBIVE1MQnV0dG9uRWxlbWVudDo6ZGVmYXVsdFRhYkluZGV4KCkgY29uc3QKIGNvbnN0IEF0b21T
dHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1Ym1pdCgi
c3VibWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICAgICAg
cmV0dXJuIHN1Ym1pdDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJVVFRPTjoKLSAgICAgICAg
ICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7Ci0gICAgICAgIGNh
c2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcmVzZXQoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwotICAgICAgICB9CisgICAgY2Fz
ZSBTVUJNSVQ6CisgICAgICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CisgICAgY2FzZSBCVVRUT046
CisgICAgICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7CisgICAg
Y2FzZSBSRVNFVDoKKyAgICAgICAgcmV0dXJuIHJlc2V0QXRvbSgpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5
YzM5YzU2ZDM0MTQzOGQwZTA4YjU1MTNlNjcyYjY5YTYwOWIxYjFkLi45MDEwNTA1ZGUxNTI5ZGQ0
OTZkOTRmOGYyYzMyNzYxNTczMjIxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCkBAIC00
MTUsMTMgKzQxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRvVmFsaWRE
aXJWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGx0clZhbHVlKCJsdHIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBydGxWYWx1ZSgicnRsIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbHVlKCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImx0ciIpKQogICAgICAgICByZXR1cm4gbHRyVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCiAgICAgICAgIHJldHVybiBydGxWYWx1
ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikp
Ci0gICAgICAgIHJldHVybiBhdXRvVmFsdWU7CisgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwog
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCkBAIC01NzgsMTcgKzU3OCwxMSBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgY2FzZSBDb250ZW50RWRp
dGFibGVUeXBlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIGZhbHNlQXRvbSgpOwogICAgIGNhc2Ug
Q29udGVudEVkaXRhYmxlVHlwZTo6UGxhaW50ZXh0T25seToKLSAgICAgICAgcmV0dXJuICJwbGFp
bnRleHQtb25seSJfczsKKyAgICAgICAgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tKCk7CiAgICAg
fQogICAgIHJldHVybiAiaW5oZXJpdCJfczsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHBsYWludGV4dE9ubHlOYW1lKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxhaW50ZXh0LW9ubHki
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHBsYWludGV4
dE9ubHlWYWx1ZS5nZXQoKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNl
dENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCkBAIC01OTYsNyArNTkw
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShj
b25zdCBTdHJpbmcmIGVuYWJsZWQpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCiAgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgZmFsc2VBdG9tKCkpOwogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQt
b25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRl
bnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9ubHlOYW1lKCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9u
bHlBdG9tKCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
YWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFi
bGVBdHRyKTsKICAgICBlbHNlCkBAIC0xMDY0LDkgKzEwNTgsNyBAQCBib29sIEhUTUxFbGVtZW50
OjpzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9j
b3JyZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbk5hbWUoIm9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb2ZmTmFtZSgib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJl
Y3RBdHRyLCBhdXRvY29ycmVjdCA/IG9uTmFtZS5nZXQoKSA6IG9mZk5hbWUuZ2V0KCkpOworICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRv
Y29ycmVjdCA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTdlMDhmZmE5M2Q2MWQwZGQ4MDk3OWRk
Zjg0YjFjM2NmNTJkMGUwNS4uNWUwMTY5YTczMTcwNDkxM2JkY2U2MDRiNmNmMDMzZjg4YzBjYTkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5o
IgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAt
MTAxMiwxMCArMTAxMyw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29tcGxldGUo
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxGb3JtRWxl
bWVudDo6YXV0b2NvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmIDogb247CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmQXRvbSgpIDogb25BdG9tKCk7CiB9
CiAKIFJlZlB0cjxET01Gb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpjb25zdHJ1Y3RFbnRyeUxp
c3QoUmVmPERPTUZvcm1EYXRhPiYmIGRvbUZvcm1EYXRhLCBTdHJpbmdQYWlyVmVjdG9yKiBmb3Jt
VmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAx
ZTgxZjU0MjViMDdlMjRkOWE5YzEyMDdlYjM1NTkyMTcyNDY1Yzg0Li5mMjhlNmQ5NjE1NmVhZGJk
MTBhYzVjMzk5MGEwMmEzMWI1ZWNkODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFbGVt
ZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNTcsOSArMTU4LDcgQEAgY29u
c3QgRmVhdHVyZVBvbGljeSYgSFRNTElGcmFtZUVsZW1lbnQ6OmZlYXR1cmVQb2xpY3koKSBjb25z
dAogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRp
bmdzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenkoImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBsYXp5IDogZWFn
ZXI7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBs
YXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7CiB9CiAKIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnNl
dExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDAwY2RkNjJmZTA0NjM4NjQyNGU1Nzgx
NThhM2NjNWRkOTljOTZiYmIuLjhjNzM1MjBjNTRkNjdiYmEyMzlhNjRlZTdmODc2Y2JhZjU0NjBj
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTY3NCw3ICs2NzUsNyBAQCBTdHJpbmcgSFRNTElt
YWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25zdAogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBdXRv
OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuICJhdXRvIl9zOworICAgIHJldHVy
biBhdXRvQXRvbSgpOwogfQogCiBEZWNvZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmdNb2RlKCkgY29uc3QKQEAgLTg5NiwxMCArODk3LDggQEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1l
bnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpIGNvbnN0CiAKIGNvbnN0
IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJs
YXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGF1dG8mIGF0dHJp
YnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omxv
YWRpbmdBdHRyKTsKLSAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlVmFsdWUpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVybiBoYXNMYXp5TG9hZGFibGVB
dHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVWYWx1ZSkgPyBsYXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7
CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0TG9hZGluZ0ZvckJpbmRpbmdzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggMjY0YTdhODgyNjZhODM5YmZkOGYzZWM5NTRiNjI5NzlmMTliMTkzZi4uZjI2MzBh
Y2QwYmU2Y2NkZGJkNjQ1MjBmMzc5MzdkODE2ODQ3NjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKICNpbmNsdWRlICJDb250ZW50UnVsZUxpc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCkBAIC0zNjQ5LDE2ICszNjUwLDE2IEBAIFN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9t
ZWRpYWNhcHR1cmUtbWFpbi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCiAgICAgLy8g
InByZWxvYWQiIC0gT24gZ2V0dGluZzogbm9uZS4gT24gc2V0dGluZzogaWdub3JlZC4KICAgICBp
ZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3ByZWxvYWQp
IHsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lOgotICAgICAgICByZXR1cm4g
Im5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhOgogICAgICAgICByZXR1cm4gIm1ldGFkYXRhIl9zOwogICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86Ci0gICAgICAgIHJldHVybiAiYXV0byJf
czsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhi
ZjMuLmFiOGQ2YTI5OWVmNmNjZjBhMWQyMTAwMTEzODZiMWI5ZjNhOGU2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQzNCwxMyArNDM1
LDEyIEBAIHVuc2lnbmVkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlU2VsZWN0
aW9uRW5kKCkgY29uc3QKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZSgibm9uZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZvcndhcmQoImZvcndhcmQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBiYWNrd2FyZCgiYmFja3dhcmQiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAg
IGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiBub25lOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJl
Y3Rpb246CiAgICAgICAgIHJldHVybiBmb3J3YXJkOwogICAgIGNhc2UgU2VsZWN0aW9uSGFzQmFj
a3dhcmREaXJlY3Rpb246CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGRpcmVjdGlvblN0cmluZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBub25lOwor
ICAgIHJldHVybiBub25lQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRNb2RlLmNwcAppbmRleCAzNDlkODViNTYyZTdiYjljNWFkZmVkNTI3MTFmNTMwNWM0N2Rl
NDllLi43ZTgwYzc3ZjdlZjk0Y2Y4MDgwMDdlMGNjNDZjZjAyNmJmZjQ1ZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dE1vZGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MiwzMiArODMsMjcgQEAgbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzIHsKIAogY29uc3Qg
QXRvbVN0cmluZyYgbm9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBub25lQXRvbSgpOwogfQog
CiBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInRleHQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRleHRBdG9t
KCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRl
bEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInVybCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1
cm4gdXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJlbWFp
bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsK
KyAgICByZXR1cm4gZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIG51bWVyaWMo
KQpAQCAtMTI0LDggKzEyMCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRlY2ltYWwoKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBzZWFyY2goKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBzZWFyY2hBdG9t
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlTmFtZXMuY3BwCmluZGV4IDQ1MDM2OWVjODFkY2JmMTAzMzY5MGQ3ZjY0MzcxNjVm
MWVlOGM1NmYuLjZmZmJjZjVjZjIyNTY5MzI3OTlmMWFlZTNhMWM0M2M1MWI1MWVhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDggKzY0LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgZGF0ZXRpbWVsb2NhbCgpCiAKIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoImVt
YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBlbWFpbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgZmlsZSgp
CkBAIC0xMTcsMzIgKzExNywyNyBAQCBjb25zdCBBdG9tU3RyaW5nJiByYW5nZSgpCiAKIGNvbnN0
IEF0b21TdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiByZXNldEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInNlYXJjaCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c2VhcmNoQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXQoKQogewotICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgic3Vi
bWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbGVw
aG9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJ0ZWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHRlbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBuYW1lKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0aW1lKCkKQEAgLTE1Myw4ICsxNDgsNyBAQCBjb25zdCBBdG9tU3RyaW5n
JiB0aW1lKCkKIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInVybCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
dXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWVrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IDkzMDQ4NGI4NWFiMjVhZTU0N2RmN2YzMWZkN2QyMGE1YWEyYmU2ZmEuLjdmNDczNTA3ZmJm
YWRiZWY4M2Q1MWM4ZmYxMDliOTYyYTEyM2RiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMTUwLDggKzE1MSw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkCiAK
IHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHlJbXBsKGJvb2wgaXNFZGl0YWJsZSwgYm9vbCBpbml0aWFsaXphdGlvbikKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBs
YWluVGV4dE9ubHlOYW1lKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBwbGFpblRl
eHRPbmx5TmFtZS5nZXQoKSA6IGZhbHNlQXRvbSgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlID0g
aXNFZGl0YWJsZSA/IHBsYWludGV4dE9ubHlBdG9tKCkgOiBmYWxzZUF0b20oKTsKICAgICBpZiAo
aW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlcyB7
IEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCB2YWx1ZSkgfTsKICAgICAgICAgcGFyc2Vy
U2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCmluZGV4IDY5OTRiMTEzMWUyMzQ4ZTRlZTlkMjVjMDlhY2Q0ZGY2NTg3YzEwM2Yu
LjdiYWVhYTA2NWM3MzQwOThlMmJhMDNkMzMzMDllMzE4ODM5ZWQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAtMzgsMjggKzM4LDE3IEBACiAjaW5jbHVk
ZSAiQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5o
IgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdv
cmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKLX0KLQogY29uc3QgQXRvbVN0cmlu
ZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlw
dGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3Jk
KCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG1haW4oIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIG1haW47Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNj
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtNzIsMTIgKzYxLDYgQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6dHJhbnNsYXRpb25LZXl3b3JkKCkKICAgICByZXR1cm4gdHJhbnNsYXRpb247CiB9CiAKLWNv
bnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNvbW1lbnRhcnk7Ci19Ci0KIEF1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTEyMywxMCArMTA2
LDEwIEBAIHZvaWQgQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpCiAKIGJvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgp
Ci0gICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKKyAgICByZXR1cm4gdmFs
dWUgPT0gYWx0ZXJuYXRpdmVBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUF0
b20oKQogICAgICAgICB8fCB2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKQotICAgICAgICB8
fCB2YWx1ZSA9PSBtYWluS2V5d29yZCgpCisgICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkK
ICAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkKICAgICAgICAgfHwgdmFsdWUg
PT0gdHJhbnNsYXRpb25LZXl3b3JkKCk7CiB9CkBAIC0yMDgsMTMgKzE5MSwxMyBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmtpbmQoKSkgewogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgot
ICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CiAgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpOwpAQCAtMjIzLDcgKzIwNiw3IEBAIHZvaWQgQXVk
aW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKICAgICAgICAgc2V0S2luZChBdWRpb1Ry
YWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVk
aW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CiAgICAg
ICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5oCmluZGV4IDRlMTg2YzE2NjIwN2IwN2E3OGQwZTc2ZWM0ZDNkZDA5MDk5NjE3MjguLmJk
YjdmMWIyMmMwMjE5MTY5Y2MxMzI3ZjQ1MzUxNTIxZmU3ZTdiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC00NiwxMiArNDYsOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVz
Y3JpcHRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5LZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RW5hYmxlZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAppbmRleCAxMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiLi45MTU4YWU0
ZDMwNDE4NzBiNWI3Mzg3OWY4NTgxOWI4MDJkOWM0Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCkBAIC01MCwxOCArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2spOwogCi1jb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRs
ZXMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRp
dGxlczsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVzY3Jp
cHRpb25zS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTEwMyw3ICs5MSw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IGtpbmQsIGNvCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHJhY2tU
eXBlKHR5cGUpCiB7Ci0gICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYg
KGtpbmQgPT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIG1fa2luZCA9IEtpbmQ6OkNhcHRpb25z
OwogICAgIGVsc2UgaWYgKGtpbmQgPT0gY2hhcHRlcnNLZXl3b3JkKCkpCiAgICAgICAgIG1fa2lu
ZCA9IEtpbmQ6OkNoYXB0ZXJzOwpAQCAtMTY3LDkgKzE1NSw5IEBAIGJvb2wgVGV4dFRyYWNrOjpl
bmFibGVkKCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29y
ZCgpKQorICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICBpZiAodmFsdWUg
PT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg3LDcg
KzE3NSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25z
dAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBLaW5kOjpDYXB0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGNhcHRpb25zS2V5d29yZCgpOworICAgICAgICByZXR1cm4gY2FwdGlvbnNB
dG9tKCk7CiAgICAgY2FzZSBLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJuIGNoYXB0ZXJz
S2V5d29yZCgpOwogICAgIGNhc2UgS2luZDo6RGVzY3JpcHRpb25zOgpAQCAtMTk3LDEwICsxODUs
MTAgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiAg
ICAgY2FzZSBLaW5kOjpNZXRhZGF0YToKICAgICAgICAgcmV0dXJuIG1ldGFkYXRhS2V5d29yZCgp
OwogICAgIGNhc2UgS2luZDo6U3VidGl0bGVzOgotICAgICAgICByZXR1cm4gc3VidGl0bGVzS2V5
d29yZCgpOworICAgICAgICByZXR1cm4gc3VidGl0bGVzQXRvbSgpOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3VidGl0bGVzS2V5d29yZCgpOworICAgIHJl
dHVybiBzdWJ0aXRsZXNBdG9tKCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQg
bmV3S2luZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDk0MGMwMjQ2
MmU4NjkzY2I4ODg5ZDAyN2I2YzlhODZlZjJlOTBjZjUuLjJiNjI3NGMyNWY0NWQ2OTQyMGM5NDJi
MTQyZGEzMTAxMzMzNTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1l
bnVPZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVBdXRvbWF0aWNJ
dGVtKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgp
OwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9tU3RyaW5nJik7
CiAKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggYWJmNzU2OTY0YzM3OWU4Nzc0ZGFjZWFiODEyMGUy
OGZjZDE0YWE3Yy4uZTI3MjVjOGU4NDgwOWFjNjcwMmUyZTYzMzIyMGRlODQwY2ZiOGEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBA
IC0xMzcsMTIgKzEzOCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGxpbmVSaWdodEtleXdvcmQo
KQogICAgIHJldHVybiBsaW5lUmlnaHQ7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcmIGF1dG9L
ZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBhdXRv
WChNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpKTsKLSAgICByZXR1cm4gYXV0b1g7Ci19
Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVmPFZUVEN1ZUJveD4gVlRU
Q3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKQEAgLTQ3Nyw3
ICs0NzIsNyBAQCBjb25zdCBTdHJpbmcmIFZUVEN1ZTo6cG9zaXRpb25BbGlnbigpIGNvbnN0CiAg
ICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDoKICAgICAgICAgcmV0dXJuIGxpbmVS
aWdodEtleXdvcmQoKTsKICAgICBjYXNlIFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG86Ci0gICAg
ICAgIHJldHVybiBhdXRvS2V5d29yZCgpOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CkBAIC00OTMsNyArNDg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRU
Q3VlOjpzZXRQb3NpdGlvbkFsaWduKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHBvc2l0
aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQ2VudGVyOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IGxpbmVSaWdodEtleXdvcmQoKSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQg
PSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRv
S2V5d29yZCgpKQorICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHBv
c2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQXV0bzsKICAgICBlbHNlCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0xMzI5LDEzICsxMzI0LDEzIEBAIHZvaWQgVlRUQ3VlOjp0
b0pTT04oSlNPTjo6T2JqZWN0JiBvYmplY3QpIGNvbnN0CiAgICAgb2JqZWN0LnNldFN0cmluZygi
dmVydGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9M
aW5lcyJfcywgc25hcFRvTGluZXMoKSk7CiAgICAgaWYgKG1fbGluZVBvc2l0aW9uKQotICAgICAg
ICBvYmplY3Quc2V0U3RyaW5nKCJsaW5lIl9zLCAiYXV0byJfcyk7CisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoImxpbmUiX3MsIGF1dG9BdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0
LnNldERvdWJsZSgibGluZSJfcywgKm1fbGluZVBvc2l0aW9uKTsKICAgICBpZiAobV90ZXh0UG9z
aXRpb24pCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCAqbV90ZXh0UG9z
aXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3Ms
ICJhdXRvIl9zKTsKKyAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsIGF1dG9B
dG9tKCkpOwogICAgIG9iamVjdC5zZXRJbnRlZ2VyKCJzaXplIl9zLCBtX2N1ZVNpemUpOwogICAg
IG9iamVjdC5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDczZTlkMGYxN2FmNTY1YjdhMmQxZDk5M2M5
MmM3MzdkNzk0ZjQ0YTcuLjA3MWE3NzQyNmRmMDRiNWM0ZjkwODI1YzU1MmUyOTlmNjdiNzVhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0Nv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgpAQCAtNDYsNDIgKzQ3
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gYWx0ZXJuYXRpdmU7
Ci19Ci0KLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpt
YWluS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNpZ247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcm
IFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlczsK
LX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gY29tbWVudGFyeTsKLX0KLQogVmlkZW9UcmFjazo6VmlkZW9UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQogICAgIDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6OlZp
ZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQ
cml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQpAQCAtMTE4
LDEyICs4OSwxMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKIAogYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRp
dmVLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKQotICAg
ICAgICB8fCB2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBt
YWluS2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlQXRvbSgpCisgICAg
ICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY2Fw
dGlvbnNBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkF0b20oKQogICAgICAgICB8fCB2
YWx1ZSA9PSBzaWduS2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IHN1YnRpdGxlc0tleXdv
cmQoKTsKKyAgICAgICAgfHwgdmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpOwogfQogCiB2b2lkIFZp
ZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCkBAIC0yNDEsMjIgKzIx
MiwyMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY2Fw
dGlvbnNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAg
ICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OlNpZ246CiAgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpT
dWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgp
KTsKKyAgICAgICAgc2V0S2luZChzdWJ0aXRsZXNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKLSAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChjb21tZW50
YXJ5QXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CiAgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCmluZGV4IGUxZTBlOWIwMjU4ZDUxMjc2Mjk3MDZkMGVjNDIyYTNj
YmQwM2Y2OTkuLjFlMjJiYmI0NTM3MTJmOGUyYTkxMWI3Mzg4OTlmNDNiM2RiZDY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC00OSwxMiArNDksNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IG1haW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpZ25LZXl3b3Jk
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJv
b2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IGY4ZGRiZDM4MDViNDU4MGE4ZDc2NDQ4OTEyM2NkOTIxZWMy
NjA1ZjQuLmM2OTQ0MDAzODZkY2I5ZjM3OTNkYjc4NzhjZmI0MWZjZTQzOTcyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5j
bHVkZSAiSVNPVlRUQ3VlLmgiCkBAIC05Miw3ICs5Myw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpw
YXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNo
YXIKIAogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50JiBjbGll
bnQsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBQ
QUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIFBBTDo6VVRGOEVuY29kaW5nKCkp
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBhZTAyOWJmYmJl
OTMzODI4YmRiMGM5ZWFiNTk5MmUwMDQ5NDk4NTY5Li4yNDQwZTNhYjcxYTY5YjJjMGM4MjI5Mjcx
NTNkOTgyNzNkMmM1NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC03ODIsNyArNzgzLDcgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JE
b2N1bWVudChEb2MKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHN0eWxlRWxl
bWVudCA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgc3R5bGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dHlwZUF0
dHIsIEF0b21TdHJpbmcoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgY3NzQ29udGVudFR5cGVBdG9tKCkpOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogdGFyZ2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURv
Y3VtZW50cywgZm9yIGV4YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAppbmRleCAyYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwLi45ZmIw
MDUyN2M5MzY1NDE5OWM4Nzk3OWEyMjk4M2YxYWNmMWEwY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgpAQCAtMTAzLDcg
KzEwNCw3IEBAIFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGlu
Z1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQogICAgICAgICByZXR1cm4gIm11
bHRpcGFydC9mb3JtLWRhdGEiX3M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsK
KyAgICAgICAgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpOwogICAgIHJldHVybiAi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggZjA0M2NkNTk3MDU0MTk3
NzYzOGI2ZGY0MjJmYTBmZDM5N2ViN2UxYS4uMmQxYWRmM2Y3ZTA5ZjAzMzAyYjYxZGZlZmQ2Yjc5
OTZhMDJhOWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIu
aCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKLSAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXBsYWNlbWVudFJlc3BvbnNlIHsgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgInRleHQvcGxh
aW4iX3MsIDAsICJVVEYtOCJfcyB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2Vt
ZW50UmVzcG9uc2UgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCB0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgMCwgIlVURi04Il9zIH07CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2Vt
ZW50RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCks
IHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBjZGU3
YWU0Y2MxMGVlZjVhNmIzODQ4MjcxMDU3YjM3MDhmNWI1NzM1Li5mNTllY2ZjNmMwOTZkNDQwMjBl
Y2QzMjYyZGNhMmQyNTQyMGZhZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5B
QkxFKE1IVE1MKQogI2luY2x1ZGUgIk1IVE1MUGFyc2VyLmgiCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1IVE1MQXJjaGl2ZS5oIgogI2luY2x1ZGUgIk1JTUVI
ZWFkZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC0xMTksNyArMTIwLDcg
QEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFk
ZXIoTUlNRUhlYWRlciogaGVhZGVyKQogdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0Fy
Y2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQog
ewogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKLSAg
ICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZShtaW1l
VHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUo
bWltZVR5cGUpIHx8IG1pbWVUeXBlID09ICJ0ZXh0L2NzcyIpIHsKKyAgICBpZiAoIU1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IG1p
bWVUeXBlID09IGNzc0NvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIG1fcmVzb3VyY2VzLmFw
cGVuZChyZXNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMTRjY2Qy
YTNiOWYzMTdlNWUyNGI2ZWQ3ZDZlMTVjNWVjYTY5ZWQyOS4uZjUyYTkyZDAzZTUzMjhjNmQ5N2M1
MWMwYzUxMzc4YmY2MmFkYzhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNDAsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hl
ZENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKICAgICA6IENhY2hl
ZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OkNTU1N0eWxlU2hlZXQsIHNlc3Npb25J
RCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZSgidGV4dC9jc3MiX3MsIHJlcXVlc3QuY2hhcnNldCgpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoY3NzQ29udGVudFR5cGVBdG9tKCksIHJlcXVlc3QuY2hh
cnNldCgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IGMxNDQzMDJmMDNiZDk1NTY5YzZjMjA0NzQzYWVk
YjhiYWVhYWUzMjguLmJiOGFlMDYzZDA3ZjVlODUxYmQyZWU5NzVkMWQyZTY2ZGFjY2E1OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCmluZGV4IDEyNTNiNTgwMDViNTJmYmEyNDEwODI4NjEyN2M0ZDEzMmYwZDA0NWMuLjk0
MDNlNjUyYzhiMjhjNzYxZDQ4NjAyMmQ3M2QyNGZjNDk0YzJkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgIkNv
bG9yU2VyaWFsaXphdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKQEAgLTczMCw3ICs3MzEsNyBAQCBzdGF0aWMg
U3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kRGlzcGxheU5hbWVJZk5lZWRlZChjb25zdCBBdWRpb1Ry
YWNrJiB0cmFjaywgY29ucwogICAgIGlmICgodHJhY2sua2luZCgpID09IEF1ZGlvVHJhY2s6OmRl
c2NyaXB0aW9uS2V5d29yZCgpIHx8IHRyYWNrLmtpbmQoKSA9PSBBdWRpb1RyYWNrOjptYWluRGVz
Y0tleXdvcmQoKSkgJiYgIXRleHQuY29udGFpbnMoYXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNE
aXNwbGF5TmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGFkZEF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRp
b25zU3VmZml4KHRleHQpOwogCi0gICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBBdWRpb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCgpICYmICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tLaW5kQ29tbWVu
dGFyeURpc3BsYXlOYW1lKCkpKQorICAgIGlmICh0cmFjay5raW5kKCkgPT0gY29tbWVudGFyeUF0
b20oKSAmJiAhdGV4dC5jb250YWlucyhhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFt
ZSgpKSkKICAgICAgICAgcmV0dXJuIGFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeVN1ZmZpeCh0
ZXh0KTsKIAogICAgIHJldHVybiB0ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTM1OGI4NDY0
YmI1OTM5MTA1YTY4OTg0NzZmZjY5MWFlZjNjMzc4MC4uYmNjZGU1ODE1MTBjYTJmYjFmNmM3ZmQw
ZDhkNjQ0NjA4NTdjN2U0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgog
I2luY2x1ZGUgIkNvbnN0YW50UHJvcGVydHlNYXAuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNs
aWVudC5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgpAQCAtMjA2Niw3ICsy
MDY3LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIAotICAgIG1fdXNl
clN0eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9zKS0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIG1fdXNlclN0
eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoY3NzQ29udGVudFR5cGVBdG9t
KCkpLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKaW5kZXggN2Y5ZTFiN2EyNzBkMmI1ZGI2MWZlOThkN2IxMDUwMGE3ZTZjZWUxNi4uNTA4
OTRlMGQyOTBjZDNjZTVmMjE4YmM2ZjA4MGJkZjg4NThiODU4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDU1NJbXBv
cnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
SW5saW5lcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKQEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NT
dHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNp
ZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgUEFMOjpUZXh0RW5j
b2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAg
ICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBjc3ND
b250ZW50VHlwZUF0b20oKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29k
ZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDQzNzEyODA0MTljMmVhYWI4OTg4MmYxNGEz
NGNhOTI1NzkyNWZjOTguLjdkYjNiOWJiNjFmYmZmNmI5MzFjYmI1OTdlNThlYWE1YmVjNGUxMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zNjIsNyAr
MzYzLDcgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwg
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGEKICAgICAvLyBJbXBsZW1lbnQgZm9ybWF0
dGVycyBmb3IgcHJvcGVydGllcyB3ZSBjYXJlIGFib3V0LgogICAgIGlmICghc3RyY21wKHByb3Bl
cnR5TmFtZSwgIm1hcmdpbi1sZWZ0IikpIHsKICAgICAgICAgaWYgKHN0eWxlLT5tYXJnaW5MZWZ0
KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgICAgICBy
ZXR1cm4gYXV0b0F0b20oKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5t
YXJnaW5MZWZ0KCkudmFsdWUoKSk7CiAgICAgfQogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFt
ZSwgImxpbmUtaGVpZ2h0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nl
c3NXYXJtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmlu
ZGV4IGRmYTNlODJhNjI4NGJiZGExMDQyMzg2MmU2NWUyYjhiZDBmZmVjZDIuLmJlMjM4MzRkN2Jl
NDU5MmZmZGMzMjYyZWMzYWVjN2ZmODY2MWNjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vz
c1dhcm1pbmcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc1dhcm1pbmcuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9u
dENhY2hlLmgiCkBAIC01MSw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgUHJv
Y2Vzc1dhcm1pbmc6OmluaXRpYWxpemVOYW1lcygpCiB7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgp
OworICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIEhUTUxOYW1lczo6aW5p
dCgpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBNZWRpYUZlYXR1cmVOYW1lczo6
aW5pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0
cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxOGU0MmM5OWEzMjMwZTEwYWJlZTM1YmY0NTM0Mjc2MGVlZjRhYTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRp
dmVBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gYXV0b0F0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBjYXB0aW9uc0F0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNzc0NvbnRlbnRUeXBlQXRvbURhdGE7CitNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVhZ2VyQXRvbURhdGE7
CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRv
bURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZh
bHNlQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenlBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gbWFpbkF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBub25lQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IG9mZkF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFpbnRleHRPbmx5QXRvbURhdGE7CitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHJlc2V0QXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21E
YXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdWJt
aXRBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gc3VidGl0bGVzQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRlbEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB0ZXh0QXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGE7CitNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsK
K01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsQXRvbURh
dGE7CisKK3ZvaWQgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCkKK3sKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplS2V5LCBbXSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIG5vdCB0aHJlYWQgc2Fm
ZSwgc28gdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCBm
aXJzdC4KKyAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgICAgIGFsdGVybmF0aXZl
QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJhbHRlcm5hdGl2ZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgYXV0b0F0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICAgICAgY2FwdGlvbnNBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNz
Q2hlY2soImNhcHRpb25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
ICAgICBjb21tZW50YXJ5QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJjb21t
ZW50YXJ5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBjc3ND
b250ZW50VHlwZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dC9jc3Mi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGVhZ2VyQXRvbURh
dGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgZW1haWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0
QWNjZXNzQ2hlY2soImVtYWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2Ui
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGxhenlBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIG1haW5BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
ICAgIG5vbmVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm5vbmUiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIG9mZkF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICBvbkF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygi
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHBsYWludGV4
dE9ubHlBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInBsYWludGV4dC1vbmx5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICByZXNldEF0b21E
YXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygicmVzZXQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHNlYXJjaEF0b21EYXRhLmNvbnN0cnVjdFdpdGhv
dXRBY2Nlc3NDaGVjaygic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgICAgICBzdWJtaXRBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInN1
Ym1pdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3VidGl0
bGVzQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJ0aXRsZXMiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRlbEF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGVsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICB0ZXh0QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNr
KCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4
dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdHJ1
ZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidHJ1ZSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdXJsQXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCJ1cmwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NDY0MDc4ODY5MTk1YWQ2
Njc5MTIxMzJhYzE5Mjk2YWM2MmJkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
eHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBhbHRl
cm5hdGl2ZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gYXV0b0F0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnNBdG9tRGF0YTsKK2V4dGVybiBNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRhcnlBdG9t
RGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGNzc0NvbnRlbnRUeXBlQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZW1haWxBdG9tRGF0YTsKK2V4
dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNl
QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBsYXp5QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtYWluQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBub25lQXRvbURhdGE7CitleHRlcm4gTWFp
blRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvZmZBdG9tRGF0YTsK
K2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9u
QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBwbGFpbnRleHRPbmx5QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworZXh0ZXJuIE1haW5U
aHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc2VhcmNoQXRvbURhdGE7
CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
dWJtaXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHN1YnRpdGxlc0F0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGVsQXRvbURhdGE7CitleHRlcm4gTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0ZXh0QXRvbURhdGE7Citl
eHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsQXRvbURhdGE7CisKK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUF0b20oKSB7IHJldHVybiBhbHRlcm5hdGl2
ZUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgYXV0b0F0b20oKSB7
IHJldHVybiBhdXRvQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBj
YXB0aW9uc0F0b20oKSB7IHJldHVybiBjYXB0aW9uc0F0b21EYXRhLmdldCgpOyB9CitpbmxpbmUg
Y29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUF0b20oKSB7IHJldHVybiBjb21tZW50YXJ5QXRv
bURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBjc3NDb250ZW50VHlwZUF0
b20oKSB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29u
c3QgQXRvbVN0cmluZyYgZWFnZXJBdG9tKCkgeyByZXR1cm4gZWFnZXJBdG9tRGF0YS5nZXQoKTsg
fQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsQXRvbSgpIHsgcmV0dXJuIGVtYWlsQXRv
bURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBmYWxzZUF0b20oKSB7IHJl
dHVybiBmYWxzZUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbGF6
eUF0b20oKSB7IHJldHVybiBsYXp5QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9t
U3RyaW5nJiBtYWluQXRvbSgpIHsgcmV0dXJuIG1haW5BdG9tRGF0YS5nZXQoKTsgfQoraW5saW5l
IGNvbnN0IEF0b21TdHJpbmcmIG5vbmVBdG9tKCkgeyByZXR1cm4gbm9uZUF0b21EYXRhLmdldCgp
OyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgb2ZmQXRvbSgpIHsgcmV0dXJuIG9mZkF0b21E
YXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgb25BdG9tKCkgeyByZXR1cm4g
b25BdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHBsYWludGV4dE9u
bHlBdG9tKCkgeyByZXR1cm4gcGxhaW50ZXh0T25seUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUg
Y29uc3QgQXRvbVN0cmluZyYgcmVzZXRBdG9tKCkgeyByZXR1cm4gcmVzZXRBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHNlYXJjaEF0b20oKSB7IHJldHVybiBzZWFy
Y2hBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHN1Ym1pdEF0b20o
KSB7IHJldHVybiBzdWJtaXRBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHN1YnRpdGxlc0F0b20oKSB7IHJldHVybiBzdWJ0aXRsZXNBdG9tRGF0YS5nZXQoKTsgfQor
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRlbEF0b20oKSB7IHJldHVybiB0ZWxBdG9tRGF0YS5n
ZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRBdG9tKCkgeyByZXR1cm4gdGV4
dEF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tKCkgeyByZXR1cm4gdGV4dFBsYWluQ29udGVudFR5cGVBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRydWVBdG9tKCkgeyByZXR1cm4gdHJ1ZUF0
b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgdXJsQXRvbSgpIHsgcmV0
dXJuIHVybEF0b21EYXRhLmdldCgpOyB9CisKK1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6
ZUNvbW1vbkF0b21TdHJpbmdzKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggYmExNzg3MjQ3MWFlMjg2NGY3NzA4MmM0
N2Q2N2YyNjNlZDVkZjk1OC4uNDVjY2I2YjM5Njg4MmUwZWVhMjZjMTFiZGZiNzZlMWZhMmRjNWU0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC00NCw3ICs0NSw3IEBAIFBhc3RlYm9hcmRCdWZmZXI6On5QYXN0ZWJvYXJkQnVmZmVyKCkg
PSBkZWZhdWx0OwogCiBib29sIFBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHR5cGUgPT0gInRleHQvcGxh
aW4iIHx8IHR5cGUgPT0gInRleHQvaHRtbCIgfHwgdHlwZSA9PSAidGV4dC91cmktbGlzdCI7Cisg
ICAgcmV0dXJuIHR5cGUgPT0gdGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCkgfHwgdHlwZSA9PSAi
dGV4dC9odG1sIiB8fCB0eXBlID09ICJ0ZXh0L3VyaS1saXN0IjsKIH0KIAogYm9vbCBQYXN0ZWJv
YXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4u
NWVjMmQ5MDcxYjJkZDJkZWRkNjFiNDhkNDg5ZDcwZmRhN2VjZTAyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdGF0aWNQYXN0ZWJvYXJkLmgiCiAKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTExLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJv
YXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1cCkKIAogdm9pZCBTdGF0aWNQYXN0
ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9w
dGlvbikKIHsKLSAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHRl
eHQpOworICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlwZUF0
b20oKSwgdGV4dCk7CiB9CiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uLmNwcAppbmRleCBjNzEyMDE2MTA5NTg3YWQ1ZGM0YzllMWM5YTM2MWRiZThmNjkz
MzJhLi45NGY0MWY3NGYzZTY3ZmEzZjBkY2U5YTZhN2U5MGVhYWUyYTQwOGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTEyOSw3ICsxMzAs
NyBAQCBib29sIEFuaW1hdGlvbjo6YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiYgb3Ro
ZXIsIGJvb2wgbWF0Y2hQcm9wZXJ0aWVzKSBjbwogCiBhdXRvIEFuaW1hdGlvbjo6aW5pdGlhbE5h
bWUoKSAtPiBjb25zdCBOYW1lJgogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBp
bml0aWFsVmFsdWUgeyBOYW1lIHsgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIm5vbmUiKSwgdHJ1
ZSB9IH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5hbWU+IGluaXRpYWxWYWx1ZSB7IE5h
bWUgeyBub25lQXRvbSgpLCB0cnVlIH0gfTsKICAgICByZXR1cm4gaW5pdGlhbFZhbHVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggYzA4ZTFmZjExZTdiNzE1YjdiOWYwOGZmYmRhNzUzZDkyZjkyOTg5OS4uOGEwNmFjNmJk
Mjg1OTcxOTU4ZTJkZjQyMTMzNjU0OGFhYzQwYjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIkZvdXJDQy5oIgpAQCAtMzMxLDEyICszMzIsNiBAQCBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCiAgICAgcmV0dXJuIGFwcGxpY2F0
aW9uT2N0ZXRTdHJlYW07CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0UGxhaW4o
KQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdGV4dFBsYWluKCJ0ZXh0L3BsYWluIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiB0ZXh0UGxhaW47Ci19Ci0KIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSogTWVkaWFQbGF5ZXI6OnBsYXllclByaXZhdGUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7CkBAIC00ODUsNyArNDgwLDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHIKIAogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBub3Qg
bWVhbmluZ2Z1bCwgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgogICAgIEF0b21T
dHJpbmcgY29udGFpbmVyVHlwZSA9IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwotICAg
IGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0
aW9uT2N0ZXRTdHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CisgICAg
aWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gYXBwbGljYXRp
b25PY3RldFN0cmVhbSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gdGV4dFBsYWluQ29udGVudFR5cGVB
dG9tKCkpIHsKICAgICAgICAgaWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkpCiAgICAgICAgICAg
ICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5z
dHJpbmcoKSkpOwogICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCBlYjI5ZjI1OGZkMTgzZTQwMjA1OTVlZjZh
ZDg3MTE0NzBjNDcxOTRmLi41NTMxZjc2ZjU0OGVmMDVmZmVhOTZlZDMwMWNhZDAzY2Q1ZWI5MmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tbW9uVk0uaCIKICNpbXBvcnQg
IkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5oIgpAQCAtNjkyLDYgKzY5Myw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkK
IAogICAgIC8vIEluaXRpYWxpemUgQXRvbVN0cmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAg
V1RGOjpBdG9tU3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0
b21TdHJpbmdzKCk7CiAKICAgICAvLyBJbml0aWFsaXplIFRocmVhZEdsb2JhbERhdGEgb24gdGhl
IG1haW4gVUkgdGhyZWFkIHNvIHRoYXQgdGhlIFdlYkNvcmUgdGhyZWFkCiAgICAgLy8gY2FuIGxh
dGVyIHNldCBpdCdzIHRocmVhZC1zcGVjaWZpYyBkYXRhIHRvIHBvaW50IHRvIHRoZSBzYW1lIG9i
amVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCmluZGV4IDY2NzA4ZWMwMDE0ZTBlMDI3Mjk4NTgwYzg3ZDA3OWM4NmI3ZDM4NWIuLjIyZGFi
ZWI0MmEwNDhiZjZkNGVjOGQ5MzU1MmU1NGNhYmQzNTBmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlckZpZWxkLmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVV
UkxSZXNwb25zZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLmgKaW5kZXggZjMwMjg3ODAyYWUyNDA2OWY1YmEyMjgyMzUwNjk5
ZTkwMzYyMDhhNS4uZGNlMWJiODc1N2Y3ZWZmMTdkZmIwMmRiZDM5NmVjNjlhYjU4MDY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJl
c3BvbnNlSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQyLDEwICs0MywxMCBAQCBpbmxpbmUgYm9v
bCBzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ewogICAgIGlmICgoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZShtaW1lVHlwZSkgICAgICAgLy8gaWdub3JlIHN1cHBvcnRlZCBub24taW1hZ2UgTUlNRSB0eXBl
cwogICAgICAgICAgJiYgIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZShtaW1lVHlwZSkgICAgICAgLy8gaWdub3JlIHN1cHBvcnRlZCBpbWFnZSBNSU1FIHR5cGVzCi0g
ICAgICAgICAmJiBtaW1lVHlwZSAhPSAidGV4dC9jc3MiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZ25vcmUgY3NzCisgICAgICAgICAmJiBtaW1lVHlwZSAhPSBjc3ND
b250ZW50VHlwZUF0b20oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgY3Nz
CiAgICAgICAgICAmJiBtaW1lVHlwZSAhPSAiYXBwbGljYXRpb24vcGRmIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgcGRmCiAgICAgICAgICApCi0gICAgICAgIHx8IG1p
bWVUeXBlID09ICJ0ZXh0L3BsYWluIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBidXQga2VlcCB0ZXh0L3BsYWluIHdoaWNoIGlzIHRvbyBnZW5lcmljIGFuZCBjYW4gaGlk
ZSBzb21ldGhpbmcKKyAgICAgICAgfHwgbWltZVR5cGUgPT0gdGV4dFBsYWluQ29udGVudFR5cGVB
dG9tKCkgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBrZWVwIHRleHQvcGxhaW4gd2hpY2gg
aXMgdG9vIGdlbmVyaWMgYW5kIGNhbiBoaWRlIHNvbWV0aGluZwogICAgICAgICB8fCAobWltZVR5
cGUgPT0gInRleHQveG1sIiB8fCBtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veG1sIikpICAgLy8g
YW5kIGtlZXAgWE1MIHR5cGVzIGZvciAubW9iaWxlY29uZmlnIGZpbGVzCiAgICAgewogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGM4NGQ0OTBj
MzJkOGNjYzdiNzRmNDQ3YmZiMDk3NjUwMjdiYTc3ZDguLmM0NDQxMmFkOTRhNTk5YWM2MDMxZjFi
YmZjYzM4NmEyMGU2MzRhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU0FuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTVHJhbnNpdGlvbi5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRGVjbGFyYXRpdmVBbmltYXRpb24uaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKQEAgLTI1
Nyw3ICsyNTgsNyBAQCBib29sIFN0eWxlYWJsZTo6YW5pbWF0aW9uTGlzdENvbnRhaW5zTmV3bHlW
YWxpZEFuaW1hdGlvbihjb25zdCBBbmltYXRpb25MaXN0JiBhbgogCiAgICAgZm9yIChhdXRvJiBh
bmltYXRpb24gOiBhbmltYXRpb25zKSB7CiAgICAgICAgIGF1dG8mIG5hbWUgPSBhbmltYXRpb24t
Pm5hbWUoKS5zdHJpbmc7Ci0gICAgICAgIGlmIChuYW1lICE9ICJub25lIiAmJiAhbmFtZS5pc0Vt
cHR5KCkgJiYga2V5ZnJhbWVFZmZlY3RTdGFjay5jb250YWluc0ludmFsaWRDU1NBbmltYXRpb25O
YW1lKG5hbWUpICYmIGtleWZyYW1lc1J1bGVFeGlzdHNGb3JBbmltYXRpb24oZWxlbWVudCwgYW5p
bWF0aW9uLmdldCgpLCBuYW1lKSkKKyAgICAgICAgaWYgKG5hbWUgIT0gbm9uZUF0b20oKSAmJiAh
bmFtZS5pc0VtcHR5KCkgJiYga2V5ZnJhbWVFZmZlY3RTdGFjay5jb250YWluc0ludmFsaWRDU1NB
bmltYXRpb25OYW1lKG5hbWUpICYmIGtleWZyYW1lc1J1bGVFeGlzdHNGb3JBbmltYXRpb24oZWxl
bWVudCwgYW5pbWF0aW9uLmdldCgpLCBuYW1lKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMzAyLDcgKzMwMyw3IEBAIHZvaWQgU3R5bGVhYmxlOjp1cGRhdGVDU1NBbmlt
YXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1dG8mIGFuaW1hdGlvbk5hbWUg
PSBjdXJyZW50QW5pbWF0aW9uLT5uYW1lKCkuc3RyaW5nOwotICAgICAgICAgICAgaWYgKGFuaW1h
dGlvbk5hbWUgPT0gIm5vbmUiIHx8IGFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgaWYgKGFuaW1hdGlvbk5hbWUgPT0gbm9uZUF0b20oKSB8fCBhbmltYXRpb25OYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKCFrZXlm
cmFtZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGN1cnJlbnRBbmltYXRpb24uZ2V0
KCksIGFuaW1hdGlvbk5hbWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAppbmRleCA0YjZjNTMwYmU5ZGNkMGVmNGU1MjBhOGYxMGYyYmM0NmEx
MzVmZGFiLi5hNjVlYzFjOGU4MTNlNDYyYWY5Y2U0MTQxMWU5MjI4MDBjYTAwYTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJQYXRoVHJhdmVyc2FsU3RhdGUu
aCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC0xMTAsMTAgKzExMSw5IEBAIHZvaWQg
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0CiAgICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Um90YXRl
TW9kZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7Ci0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBhdXRvVmFs
KCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1JldmVyc2UoImF1
dG8tcmV2ZXJzZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25z
dCBBdG9tU3RyaW5nJiByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIp
OwotICAgIGlmIChyb3RhdGUgPT0gYXV0b1ZhbCkKKyAgICBhdXRvJiByb3RhdGUgPSBnZXRBdHRy
aWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpOworICAgIGlmIChyb3RhdGUgPT0gYXV0b0F0b20o
KSkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG87CiAgICAgaWYgKHJvdGF0ZSA9PSBhdXRvUmV2
ZXJzZSkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG9SZXZlcnNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IDUzMjE0OTdhZDEwYjcwM2YzOTEyYmNi
MGZmNmQxNjBlMjA0NjE4NGUuLmU3N2ExNTczMzM0ZDQzM2I0ZGNhZmE2MDE4MDdmMzEzZDZjZTY2
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTMx
OSwxOCArMzE5LDIyIEBAIFN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSBj
b25zdAogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVz
Ojpmcm9tQXR0cik7CiB9CiAKLWJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSgp
IGNvbnN0CitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VtQXRvbSgpCiB7CiAgICAgc3RhdGlj
IE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gc3VtOworfQorCiti
b29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAorewogICAgIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdO
YW1lczo6YWRkaXRpdmVBdHRyKTsKLSAgICByZXR1cm4gdmFsdWUgPT0gc3VtIHx8IGFuaW1hdGlv
bk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeTsKKyAgICByZXR1cm4gdmFsdWUgPT0gc3VtQXRv
bSgpIHx8IGFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeTsKIH0KIAogYm9vbCBT
VkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxhdGVkKCkgY29uc3QKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bSgic3VtIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6YWNjdW11bGF0
ZUF0dHIpOwotICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gJiYgYW5pbWF0aW9uTW9kZSgpICE9IEFu
aW1hdGlvbk1vZGU6OlRvOworICAgIHJldHVybiB2YWx1ZSA9PSBzdW1BdG9tKCkgJiYgYW5pbWF0
aW9uTW9kZSgpICE9IEFuaW1hdGlvbk1vZGU6OlRvOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzVGFyZ2V0QXR0cmlidXRlQ1NTUHJvcGVydHkoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IGYzYWQxNTcw
MTE2Y2UyYTA3ZTUxNDEwMTEwYjZkYmFkMjI4Nzk3ODMuLjdjMTY2NDNlZTlkNjk3ZDEwZDRkNjM3
ODFmMWNlMzhmNTJkNmVlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgiCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCA5
YWQxZTRjMzhhZTU3ZGJkOGVmM2YyY2Q0ZmI2ZTY5ZGQ5ZDI0MmJiLi44OTkyZWM5OTM2OGRlM2Jh
Y2Q1Nzg4NmYzOGQwYmYzZTgxYjRjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRkVDb252b2x2
ZU1hdHJpeC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oIgogCkBAIC00MCw3ICs0MSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9k
ZVR5cGU+IHsKICAgICAgICAgY2FzZSBFZGdlTW9kZVR5cGU6OldyYXA6CiAgICAgICAgICAgICBy
ZXR1cm4gIndyYXAiX3M7CiAgICAgICAgIGNhc2UgRWRnZU1vZGVUeXBlOjpOb25lOgotICAgICAg
ICAgICAgcmV0dXJuICJub25lIl9zOworICAgICAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUzLDcgKzU0LDcg
QEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlwZT4gewogICAgICAgICAgICAg
cmV0dXJuIEVkZ2VNb2RlVHlwZTo6RHVwbGljYXRlOwogICAgICAgICBpZiAodmFsdWUgPT0gIndy
YXAiKQogICAgICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6V3JhcDsKLSAgICAgICAgaWYg
KHZhbHVlID09ICJub25lIikKKyAgICAgICAgaWYgKHZhbHVlID09IG5vbmVBdG9tKCkpCiAgICAg
ICAgICAgICByZXR1cm4gRWRnZU1vZGVUeXBlOjpOb25lOwogICAgICAgICByZXR1cm4gRWRnZU1v
ZGVUeXBlOjpVbmtub3duOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5cGVzLmgKaW5k
ZXggMDY3MDM0MTVlODk5NWQ4ZWI0NTk4MDMwYjdiMzBmYzE0OWI5OGQwMC4uYWY5NjNjMjhkMDZk
NTlmYzQ3Nzc4MjBjMDVkMzUzNDZiMzdkZDFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hcmtlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5
cGVzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21t
b25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKICNpbmNsdWRlICJT
VkdQcm9wZXJ0eVRyYWl0cy5oIgogCkBAIC03NSwxMSArNzYsNiBAQCBzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTWFya2VyVW5pdHNUeXBlPiB7CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPiB7Ci0gICAgc3RhdGljIGNvbnN0IFN0
cmluZyBhdXRvU3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGF1dG9TdHJpbmcgPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIp
OwotICAgICAgICByZXR1cm4gYXV0b1N0cmluZzsKLSAgICB9CiAgICAgc3RhdGljIGNvbnN0IFN0
cmluZyBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGF1dG9TdGFydFJldmVyc2VTdHJpbmcgPSBNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiYXV0by1zdGFydC1yZXZlcnNlIik7CkBAIC04OCw3ICs4NCw3IEBA
IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPiB7CiAgICAgc3Rh
dGljIHVuc2lnbmVkIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJPcmllbnRB
bmdsZTsgfQogICAgIHN0YXRpYyBTVkdNYXJrZXJPcmllbnRUeXBlIGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdHJpbmco
KSkKKyAgICAgICAgaWYgKHN0cmluZyA9PSBhdXRvQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJu
IFNWR01hcmtlck9yaWVudEF1dG87CiAgICAgICAgIGlmIChzdHJpbmcgPT0gYXV0b1N0YXJ0UmV2
ZXJzZVN0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVudEF1dG9TdGFy
dFJldmVyc2U7CkBAIC05Nyw3ICs5Myw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdN
YXJrZXJPcmllbnRUeXBlPiB7CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdNYXJrZXJP
cmllbnRUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBpZiAodHlwZSA9PSBTVkdNYXJrZXJPcmll
bnRBdXRvKQotICAgICAgICAgICAgcmV0dXJuIGF1dG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHJl
dHVybiBhdXRvQXRvbSgpOwogICAgICAgICBpZiAodHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBdXRv
U3RhcnRSZXZlcnNlKQogICAgICAgICAgICAgcmV0dXJuIGF1dG9TdGFydFJldmVyc2VTdHJpbmco
KTsKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCmluZGV4IDA4Y2Y0YjAzYzI1MTViNjIwODAwMDU3MjVmMDIyOTIzYjRkNmI3
YWIuLjZhMDMxYjBiYzRiMjRhNWRiNzQ4MzhlN2FmMDA1ZDk1MTA2YzQ3MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi
U1ZHU3R5bGVFbGVtZW50LmgiCiAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTY1LDkgKzY2
LDggQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQp
CiAKIGNvbnN0IEF0b21TdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBkZWZh
dWx0VmFsdWUoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgIGNvbnN0IEF0b21TdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnR5cGVBdHRy
KTsKLSAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CisgICAg
YXV0byYgdHlwZVZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7CisgICAg
cmV0dXJuIHR5cGVWYWx1ZS5pc051bGwoKSA/IGNzc0NvbnRlbnRUeXBlQXRvbSgpIDogdHlwZVZh
bHVlOwogfQogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCmluZGV4IDZhMjI0
OGM3Zjg1YTYwNDQ0ZDY3ZGI3YTkxYTdkOGViOWJjYzFmMDAuLjVkY2VkZTMxMzMzZTAyODNjMmNm
NjAwMDI5OThlNWMxYmMzNTczMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21t
b25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCkBAIC03Nyw3
ICs3OCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBl
PiB7CiAgICAgICAgIGNhc2UgU1ZHVGV4dFBhdGhTcGFjaW5nVW5rbm93bjoKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogICAgICAgICBjYXNlIFNWR1RleHRQYXRoU3BhY2luZ0F1
dG86Ci0gICAgICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgICAgICByZXR1cm4gYXV0
b0F0b20oKTsKICAgICAgICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdDoKICAgICAgICAg
ICAgIHJldHVybiAiZXhhY3QiX3M7CiAgICAgICAgIH0KQEAgLTg4LDcgKzg5LDcgQEAgc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+IHsKIAogICAgIHN0YXRp
YyBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAiYXV0byIpCisgICAgICAgIGlmICh2YWx1ZSA9
PSBhdXRvQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIFNWR1RleHRQYXRoU3BhY2luZ0F1dG87
CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiZXhhY3QiKQogICAgICAgICAgICAgcmV0dXJuIFNWR1Rl
eHRQYXRoU3BhY2luZ0V4YWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcAppbmRleCAxNmVhYjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3YWQ2ZTE5
N2QzNjI1Li40Y2M1ZGQ3MjNiOGJhOTE4YzFlNTY5NWYyODY3Y2NmYzdlOWVjNmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNjgs
NiArNjgsMTIgQEAgc3RhdGljIFNNSUxFdmVudFNlbmRlciYgc21pbEVuZEV2ZW50U2VuZGVyKCkK
ICAgICByZXR1cm4gc2VuZGVyOwogfQogCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW5kZWZp
bml0ZUF0b20oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpbmRlZmluaXRlVmFsdWU7Cit9CisKIC8v
IFRoaXMgaXMgdXNlZCBmb3IgZHVyYXRpb24gdHlwZSB0aW1lIHZhbHVlcyB0aGF0IGNhbid0IGJl
IG5lZ2F0aXZlLgogc3RhdGljIGNvbnN0IGRvdWJsZSBpbnZhbGlkQ2FjaGVkVGltZSA9IC0xLjsK
ICAgICAKQEAgLTMzOCw5ICszNDQsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cGFyc2VD
bG9ja1ZhbHVlKFN0cmluZ1ZpZXcgZGF0YSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJl
c29sdmVkKCk7CiAKICAgICBhdXRvIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKLQot
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5k
ZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlVmFsdWUuZ2V0KCkpCisgICAgaWYgKHBh
cnNlID09IGluZGVmaW5pdGVBdG9tKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZp
bml0ZSgpOwogCiAgICAgZG91YmxlIHJlc3VsdCA9IDA7CkBAIC02OTgsOCArNzAyLDcgQEAgU01J
TFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50KCkgY29uc3QKICAgICBpZiAodmFsdWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCi0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbmRlZmlu
aXRlVmFsdWUoImluZGVmaW5pdGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
Ci0gICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVWYWx1ZSkKKyAgICBpZiAodmFsdWUgPT0gaW5k
ZWZpbml0ZUF0b20oKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAg
ICAgYm9vbCBvazsKICAgICBkb3VibGUgcmVzdWx0ID0gdmFsdWUuc3RyaW5nKCkudG9Eb3VibGUo
Jm9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5VHJhaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRy
YWl0cy5oCmluZGV4IGU3NzY1YWNjZTg0ODMzMTVkM2I3NDQyYzgwMDlkOTNiZDkyNzI0MGIuLjYw
YTY5OTBiMmRkNTA4YTc5NzVjZWMxMzYxZTZhOWQ3ZGIwMWYyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVk
ZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiUXVhbGlmaWVkTmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBhMTZk
ZmM0YTIyZGIwMjM1NjIwYTdiOWY3ZTljNzhkMTk3YmI5MDc2Li42ZGFkMmQ0ZmUzODlhYmVkZTkz
YzlmNjQwN2JiNmE5NmE2NGVjYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0xMTQsNiArMTE1LDcg
QEAgU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBpbml0aWFsaXplQ29tbW9uQXRvbVN0cmlu
Z3MoKTsKIH0KIAogU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJlYWQoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKaW5kZXggZDIyOTU0YmJhM2YxY2Uw
YjhhMWRlOTZiYTYwMjE2OTNmNDgxMzM5MS4uYzMwNWJjMGI1ZTI3ODQ3NWFiYmMyNDc2YjhiMjIy
Y2Y0OWViZGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlhQYXRoVmFsdWUuaCIKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiWFBhdGhFeHByZXNzaW9uTm9kZS5o
IgogI2luY2x1ZGUgIlhQYXRoVXRpbC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCAxNjU4ZmMwMDBkMWY3ODA3NTI5NmU4ODMw
NjUxOTQxZjYyNmMyMGM2Li43YWZkODkzOGZjNDQ2ODc2MGE3ODk3MDg1NTZkZTZlYTMzMjljZTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJl
Y2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeVJlbGVhc2UuaD4KQEAgLTIyNyw2ICsyMjgs
NyBAQCB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIl
cCAtIEdQVVByb2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzOiIsIHRoaXMpOwogICAgIFdURjo6
VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW5pdGlhdGVkKCk7CiAgICAgQXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
CiAgICAgYXV0byYgbWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpzaW5nbGV0b24oKTsKICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFu
ZGxlcihbdGhpc10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCA1MzBjYmNkNWEwNmUwNDJkYjY2NWE1MDhhMGM2YjBjZDRkMTgxZjE5Li5kODFhZDg5MTJl
MmFjYTZkOTdmYzI0ODM4ZWY1NDQ1ZWQ5OTExMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFU
eXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ROUy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzLmg+CkBAIC0zMTgsNiArMzE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYKIAogICAgIFdURjo6VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW5pdGlhdGVkKCk7
CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25B
dG9tU3RyaW5ncygpOwogCiAgICAgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciA9IHBh
cmFtZXRlcnMuc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXI7CiAgICAgaWYgKCFt
X3N1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQppbmRleCBjMjgwY2ZmZTM5
ODNmZmM5ZGZjYzVmNTE2NGIzNGM2NDRiMzJhZjZmLi5iNGQ5MTIxYmNiZTczYzdkZDk0NWNiMTA3
ZGEwNmFkMGIyMjIyNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldl
YktpdDJJbml0aWFsaXplLmgiCiAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVU
aHJlYWRpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZUpJVE9wZXJhdGlvbnMuaD4KICNpbXBvcnQgPG11dGV4PgogI2lt
cG9ydCA8d3RmL0dlbmVyYXRlUHJvZmlsZXMuaD4KQEAgLTUwLDYgKzUxLDcgQEAgc3RhdGljIHZv
aWQgcnVuSW5pdGlhbGl6YXRpb25Db2RlKHZvaWQqID0gbnVsbHB0cikKICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0UoW05TVGhyZWFkIGlzTWFpblRocmVhZF0sICJJbml0aWFsaXplV2Vi
S2l0MiBzaG91bGQgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCIpOwogCiAgICAgQXRvbVN0
cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygp
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSW5pdFdlYkNvcmVUaHJlYWRTeXN0ZW1J
bnRlcmZhY2UoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
S2l0MkluaXRpYWxpemUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxp
emUuY3BwCmluZGV4IGU1YzA5NmYyOGQyOGFiZmY0M2M5MzcxNGY2NWRlN2JmMzJhMzJjZGEuLjAz
ZmNjMTExOWZhYjJhYjFjYjA5N2RiMjgwY2UxODE5OGM3NWFkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkxvZ0luaXRpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJDb3JlSklUT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmF0ZVByb2ZpbGVz
Lmg+CkBAIC00NSw2ICs0Niw3IEBAIHZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQogICAgIEpTQzo6
aW5pdGlhbGl6ZSgpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBBdG9t
U3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdz
KCk7CiAKICAgICBXVEY6OlJlZkNvdW50ZWRCYXNlOjplbmFibGVUaHJlYWRpbmdDaGVja3NHbG9i
YWxseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA3ZjY4ZmQzMjM2N2U5NWI5N2M1MzUzZmYyOGJj
Y2MxZDlmMTU4OGQ1Li43N2I5YTVlYTNiZWVhNTVkZDFhNjcyMDhhMTkwMDgyNGE5MDlmNzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJp
bmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudEV4dGVuc2lvblBhcnNlci5oPgpAQCAtNTQ2LDYgKzU0Nyw3IEBAIHZvaWQgQ29u
dGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoV1RGOjpTdHJpbmcmJiBp
ZGVudGlmaWVyLCBXVEY6CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBB
dG9tU3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJp
bmdzKCk7CiAgICAgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIAogICAgIGF1
dG8gcGFyc2VkUnVsZXMgPSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cGFyc2VSdWxlTGlz
dChqc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBo
aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcAppbmRl
eCA4NzU1NDhiYzRmYTVjNjJjZGIyMDNhY2E5ZTFjNWNiN2JlNTI0NWJhLi5mNmE3NzZmYjUwYjZh
YzBhYTMwNzM3ZTY5N2I5YjE2ZTA4NDk0OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0R3JhcGhpY3MuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJXZWJQcmVm
ZXJlbmNlcy5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnREZXNj
cmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CkBAIC00Nyw2ICs0
OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIEZvbnRDYXNjYWRlIG1ha2VG
b250KGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7CiAgICAgQXRvbVN0
cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygp
OwogCiAgICAgU3RyaW5nIGZvbnRGYW1pbHlTdHJpbmcoZGVzY3JpcHRpb24uZmFtaWx5LCBkZXNj
cmlwdGlvbi5mYW1pbHlMZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDVlNmMxODdjN2Q4NTA5MTZkMTM2YzkxYmYwZTg1MjU1M2Jk
Y2M1YS4uZjhiZjIwNWJkMGZjODAzNGQ3YTkwYWNmYjI5ZmMyOTA5NGYwMTk3OSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21vdGUgcmV1
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTU4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Om1ha2VCYWNrZW5kKToKKwogMjAyMi0wNC0yMCAgTWVnYW4gR2FyZG5l
ciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3MgcmVjZW50IGRl
cHJlY2F0aW9uIHdhcm5pbmdzIG9uIGlPUy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDdiNjg2OTdlNjRm
ZWRmZTg2OWM3MTg5OGJkZjNlM2U0YmI2MjlkNDkuLjdjZjZiNzI1NTFmYTQzNzRhN2ExMDM2Mzli
ZDJlZWFjZTdkZmVlNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbWJpbmVkVVJMRmlsdGVycy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25BY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgpA
QCAtMjEzLDYgKzIxNCw3IEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHJlcXVlc3RJblRvcEFu
ZEZyYW1lVVJMcyhBU0NJSUxpdGVyYWwgdXJsLCBBU0NJSUxpdGVyYWwKIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgbWFrZUJhY2tlbmQoU3RyaW5nJiYganNvbikK
IHsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1v
bkF0b21TdHJpbmdzKCk7CiAgICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29u
dGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoanNvbikpOwogICAgIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKICAgICBiYWNrZW5kLmFkZENv
bnRlbnRFeHRlbnNpb24oInRlc3RGaWx0ZXIiX3MsIFdURk1vdmUoZXh0ZW5zaW9uKSwgeyB9KTsK
</data>
<flag name="commit-queue"
          id="486862"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458075</attachid>
            <date>2022-04-21 10:37:11 -0700</date>
            <delta_ts>2022-04-21 15:16:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220421103710.patch</filename>
            <type>text/plain</type>
            <size>125157</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2NGY4MzU4ZmEwZTU1NTNjYzc2ZWU5
YzlmZDkzNDdhZjIwOGJhY2MuLjNjZDM0MDhhYzNiOWY2NDFlYTUzMDY1YTQ3NTYzYWYyZTdkMzBm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHRydWUgLyBmYWxz
ZSBBdG9tU3RyaW5ncyB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIHJldXNlIHRoZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1NjA5YjUzOTk3MWE4NzQzZGNlNzcyMjNkMmFhYTdiZWQ4ZTM3Yjg5Li45YzllZDRh
MmU2YjY5Y2NjNjIwOWQyNDkyY2RkN2EwZWI5OTBhMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjI2IEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21v
dGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkVmZmVjdDo6Z2V0VGltaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkVmZmVjdDo6dXBkYXRlVGltaW5nKToKKyAgICAgICAgKiBhbmltYXRpb24vRWZm
ZWN0VGltaW5nLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aXNWYWxp
ZENTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZGlzcGxheSBj
b25zdCk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRmVhdHVyZU5hbWVzOjppbml0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6OmRyb3BFZmZlY3QgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6Cisg
ICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9Gb250U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JDU1MpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZhbHVl
Rm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAgKiBodG1sL0F1
dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhU
TUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVWYWx1ZUZv
ckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlG
dW5jdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVmFsaWRE
aXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OmF1dG9jb21wbGV0ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJp
bmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlbG9hZCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvSW5wdXRNb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0TW9kZU5hbWVzOjpub25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp0ZWwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1v
ZGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnNlYXJj
aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFt
ZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnVwZGF0ZUlubmVy
VGV4dEVsZW1lbnRFZGl0YWJpbGl0eUltcGwpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmtpbmRLZXl3b3JkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjYXB0aW9uc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpwb3NpdGlvbkFsaWduIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZUVEN1ZTo6c2V0UG9zaXRpb25BbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRD
dWU6OnRvSlNPTiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdXRvS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVmlkZW9UcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9j
dW1lbnQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUpOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjphZGRSZXNv
dXJjZVRvQXJjaGl2ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREaXNwbGF5TmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpFdmVudFNvdXJjZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICog
cGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6aW5pdGlhbGl6ZU5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJp
bmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsdGVybmF0aXZlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjphdXRv
QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpjYXB0aW9uc0F0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tbWVudGFyeUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y3NzQ29udGVudFR5cGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OmVhZ2VyQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjplbWFp
bEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2VBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmxhenlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om1haW5BdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6Om5vbmVBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6Om9mZkF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6b25BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWludGV4dE9ubHlBdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc2V0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ym1pdEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c3Vi
dGl0bGVzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZWxBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRQbGFpbkNvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp1cmxB
dG9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0UGxhaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZVF1
aWNrTG9va0Zvck1JTUVUeXBlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphbmltYXRpb25MaXN0Q29udGFpbnNOZXdseVZhbGlk
QW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdW1BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWRkaXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlw
ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VN
b2RlVHlwZT46OmZyb21TdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJUeXBlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyT3JpZW50VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+OjphdXRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
RWxlbWVudDo6dHlwZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5n
VHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGVmaW5pdGVBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50IGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bV9ub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVl
LmNwcDoKKwogMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgdHJ1ZSAvIGZhbHNlIEF0b21TdHJpbmdzIHRvIGEgY2VudHJhbCBsb2NhdGlv
biBhbmQgcmV1c2UgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDAwOGM3YTg1NGM3NDIxZDc3ODRkZjM5MWFi
MzU0ZDJjMjIxNzA3Li5kYjczMmMyMDY2YTMwZWYzZTYxYWY1YjRlMzBjYjlkZjNkZWUxOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21t
b24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZUdQVVByb2Nlc3MpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnJ1bkluaXRp
YWxpemF0aW9uQ29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisKIDIwMjItMDQtMjAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVh
c2UgYXNzZXJ0IGxvZ2dpbmcgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGEyMDc5
ZjNhYjVmNmE4ZThhODViYjUxNjk4YmYxY2U0MjdlMGQ5MzQuLjA5YmI0Mzk3ZDhkMGI4NWFkMDli
ODQ3MDNmMmI0ZDhkNTcwMTAyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBw
cm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKG1ha2VGb250KToKKwogMjAyMi0w
NC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3Ry
aW5nOjp0cnVuY2F0ZSgpIGFuZCB1c2UgU3RyaW5nOjpsZWZ0KCkgaW5zdGVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZy5jcHAKaW5kZXggOTMwZmNiMjk5NzY4NDhkMzE4ZmNiZTEyODM0YTlmNGIz
ZWM1YTgwMy4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRmYTA3Y2EzYTFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMzcsOCArMTM3LDYgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRh
OwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sQXRvbURhdGE7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB4bWxuc0F0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOwotV1RGX0VYUE9SVF9QUklW
QVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VB
dG9tRGF0YTsKIAogdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKIHsKQEAgLTE1OSw4ICsxNTcsNiBA
QCB2b2lkIEF0b21TdHJpbmc6OmluaXQoKQogICAgICAgICBzdGFyQXRvbURhdGEuY29uc3RydWN0
V2l0aG91dEFjY2Vzc0NoZWNrKCIqIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1sbnNBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbG5zIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICB0cnVlQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFj
Y2Vzc0NoZWNrKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
ICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2UiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nLmgKaW5kZXggNzYzMTE1YTY2NjdiODg4M2JlNWNiY2UzYmViZjQ1NDYwMzEz
NTk1Yi4uMGFkZjUyMjNiYjYwMjljM2RlOTg5YzY4MzE3NDAxNjZmMDZjNzA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmgKQEAgLTI5MywxNiArMjkzLDEyIEBAIGV4dGVybiBXVEZfRVhQT1JU
X1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtcHR5QXRvbURh
dGE7CiBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0
b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbG5zQXRvbURhdGE7Ci1leHRlcm4gV1RGX0VYUE9S
VF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
dHJ1ZUF0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBudWxsQXRvbSgpIHsgcmV0dXJuIG51bGxBdG9tRGF0YS5nZXQoKTsg
fQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRv
bURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdGFyQXRvbSgpIHsgcmV0
dXJuIHN0YXJBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHhtbEF0
b20oKSB7IHJldHVybiB4bWxBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHhtbG5zQXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGZhbHNlQXRvbSgpIHsgcmV0dXJuIGZhbHNlQXRv
bURhdGEuZ2V0KCk7IH0KIAogaW5saW5lIEF0b21TdHJpbmcgQXRvbVN0cmluZzo6ZnJvbVVURjgo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTM2Miw5ICszNTgs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRv
bVN0cmluZz4gewogdXNpbmcgV1RGOjpBdG9tU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsK
IHVzaW5nIFdURjo6ZW1wdHlBdG9tOwotdXNpbmcgV1RGOjpmYWxzZUF0b207CiB1c2luZyBXVEY6
OnN0YXJBdG9tOwotdXNpbmcgV1RGOjp0cnVlQXRvbTsKIHVzaW5nIFdURjo6eG1sQXRvbTsKIHVz
aW5nIFdURjo6eG1sbnNBdG9tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4MGJiZWE4ZTcyMzRm
MDU1ZWZkNmUzNDAwNzUwYjM3ZjMzMTc4Y2FlLi4yOTc0MGNmNmE0MTlkYjg5NWI4MjFjYzlmOTI2
ZTdlOWQ1N2YwMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDAsNiArMTI0MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9DUFVNb25p
dG9yLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXIuaAogICAgIHBsYXRmb3JtL0NvbG9yQ2hv
b3NlckNsaWVudC5oCisgICAgcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaAogICAgIHBsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuaAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQ5ZjNiMzA3NTcy
MTE1Nzc3Nzg1OWMwYmFiMTYwMWQwY2Y4ZTk1ZTkuLjQ2OWNjM2FkYjVmYmY3YjM4MTQ5MmQzZWNk
NDIxOTI2Y2RjZmRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3RpdmVQYXN0
ZWJvYXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKICAgICB9CiAKLSAg
ICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgIGlmICh0eXBlID09IHRleHRQbGFp
bkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5U
ZXh0UmVhZGVyOwogICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFk
ZXIsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKICAg
ICAgICAgcmVzdWx0QXNTdHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCmluZGV4IGM5YjdmYzFkNTJmYTZmYTI0NjNkNTBmNTZiODk0ZWI1ZTZmYjUwNDEu
LjgzYmY5ZTUwMTYzZjRlOWNjYTFiMzRhYTMwYTQ1YTI0YTg2YjRiNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEzNiw3ICsxMzcsNiBAQCBj
b25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzcGVl
Y2hIaW50KCJzcGVlY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtdXNpY0hp
bnQoIm11c2ljIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgi
ZGV0YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEhpbnQoInRleHQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb3Rpb25IaW50KCJtb3Rpb24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKG1fcHJpdmF0
ZS0+Y29udGVudEhpbnQoKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50KCkgY29uc3QKICAgICBjYXNlIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkRldGFpbDoKICAgICAgICAgcmV0dXJuIGRldGFp
bEhpbnQ7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0
OgotICAgICAgICByZXR1cm4gdGV4dEhpbnQ7CisgICAgICAgIHJldHVybiB0ZXh0QXRvbSgpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICB9CkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRDb250ZW50SGludChjb25zdCBT
dHJpbmcmIGhpbnRWYWx1ZSkKICAgICAgICAgICAgIHZhbHVlID0gTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OkhpbnRWYWx1ZTo6RGV0YWlsOwogICAgICAgICBlbHNlIGlmIChoaW50VmFsdWUgPT0g
Im1vdGlvbiIpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpI
aW50VmFsdWU6Ok1vdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJ0ZXh0IikK
KyAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09IHRleHRBdG9tKCkpCiAgICAgICAgICAgICB2
YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OlRleHQ7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMGFmM2QwNmE1YjBi
YmM2OGZjMDExMzNiY2NmZTFmMmNkOTcwZTg5ZS4uNWQyMzE2ZmFjNzM5MzEwYzU4MGRiNmJlNWRi
ZWY0MWE5OTFhZmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjcsNiArMTg2Nyw3IEBAIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcAorcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCiBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMyOTEzMGViYzc2N2U1NzgzOTk5ZjdkMDY4N2IxZjExMjJlZDkyYjYu
LmVkZGE0MzA5NjIzN2NjOGI0ODIwZmE2MzgyNGRkODcxMzU3MmE2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzIsNiAr
MjczMiw3IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJG
MkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1
Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQu
aCAqLzsgfTsKIAkJODM5QkU2RDUyNEY1ODc2MjAwNERGNTBGIC8qIElJUkZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QkU2RDIyNEY1ODc1
NTAwNERGNTBGIC8qIElJUkZpbHRlci5oICovOyB9OworCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOUM2OUNFMjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3Ry
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzQTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDcz
RCAvKiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8q
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlF
MDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwpAQCAtMTIzMDMsNiArMTIzMDQs
OCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDIyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJGaWx0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDQyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZp
bHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJGaWx0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMkFCRDgyNEQ4NkRDNjAwRTJENzNEIC8qIERlbGF5
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBMkFCREEyNEQ4NkRDNzAwRTJENzNEIC8qIERlbGF5T3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVsYXlPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE2Nyw2ICszMDE3MCw4IEBACiAJCQkJ
QzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLAogCQkJCUMzN0NE
RUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLywKIAkJCQlCQ0M4
Q0ZDQTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAorCQkJCTgzOUM2OUNE
MjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5jcHAgKi8sCisJCQkJODM5QzY5
Q0UyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8sCiAJCQkJQTE0MDkw
RkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovLAog
CQkJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJ
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0zNDA2NCw2
ICszNDA2OSw3IEBACiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBC
NkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzlD
NjlEMDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21t
b25DcnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGMzJCMURGQkIxMDcw
MDQxNkQ2QyAvKiBDb21tb25WTS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDQzMWZkZWExNTcyNjI3MmEyYjY4Zjk3
NGIyNmUwYWU2YTU1ZmMwYWEuLjA3ZTE5ODM2ZDcwZDFkYjE1M2U4ODZmMTgyN2Y2YjliZjBlMWMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAKICNpbmNsdWRl
ICJDU1NBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1
ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvbi5oIgpAQCAtNjksNyArNzAsNyBAQCBFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRUaW1pbmcoKSBjb25zdAogICAgIHRpbWluZy5pdGVyYXRpb25TdGFy
dCA9IG1faXRlcmF0aW9uU3RhcnQ7CiAgICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlv
bnM7CiAgICAgaWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcu
ZHVyYXRpb24gPSAiYXV0byJfczsKKyAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gYXV0b0F0b20o
KTsKICAgICBlbHNlCiAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1h
dGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIHRpbWluZy5kaXJlY3Rpb24g
PSBtX2RpcmVjdGlvbjsKQEAgLTM5OSw3ICs0MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmlt
YXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGlt
aQogICAgICAgICAgICAgaWYgKGR1cmF0aW9uQXNEb3VibGUgPCAwIHx8IHN0ZDo6aXNuYW4oZHVy
YXRpb25Bc0RvdWJsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSAiYXV0byIpCisgICAgICAgICAgICBpZiAo
c3RkOjpnZXQ8U3RyaW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9IGF1dG9BdG9tKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRp
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCmluZGV4IDIx
MDczZmE0NzMwM2Y2NGZkMmJhMjYxOWFlOTE4N2Y1ODE1OTUwNmUuLmU4YzBmMWJkOGQ5NTkyMTQ2
YzExM2U2NDM0NTlhYzEwZGRiZmQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9FZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0
VGltaW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
b21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxh
eWJhY2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtMzMsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRWZmZWN0VGltaW5nIHsKLSAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgImF1dG8iX3MgfTsKKyAgICBzdGQ6OnZh
cmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgYXV0b0F0b20oKSB9OwogICAgIGRvdWJs
ZSBkZWxheSB7IDAgfTsKICAgICBkb3VibGUgZW5kRGVsYXkgeyAwIH07CiAgICAgZG91YmxlIGl0
ZXJhdGlvblN0YXJ0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAwOGZhNDY3Yzhh
MmUzNWU4MDE5Mzc3OTBjZjJkOTBmYmI4YmVjZjBmLi40OGMyNzMyYjEzMGFiZjRhNDBhOTBkYjY2
YjI2NGU4ZWFiNDNiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uRXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIgpAQCAtMjA0LDYgKzIwNSw3IEBAIGJvb2wgaXNW
YWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZUNv
bW1vbkF0b21TdHJpbmdzKCk7CiAgICAgUXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChIVE1MUXVpcmtzTW9kZSk7CiAgICAgQ1NTUGFyc2VyIHBhcnNl
cihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1
YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAuLjM0Njc3OTZmYjNhMWZjODc3Y2U4YTAyMGQ5
NTRlNDQ1YTg4ZWM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiAr
MjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBO
b2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBp
c0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0
cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3Ry
aW5nIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b20oKTsgfQog
CiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJ
bmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDRk
NTExYjVlNjg1NDEzMDVkNDBjMWMzM2I3OTA5YTY1MDY1NTZmNjIuLmQ5NWIwOTg3M2RkZThhN2I3
YjFjYTdiYjRmNWYzNmQwMDAwMjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDA1
LDcgKzQwNSw3IEBAIFN0cmluZyBGb250RmFjZTo6ZGlzcGxheShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGNvbnN0IGF1dG8mIGxvYWRpbmdCZWhhdmlvcldyYXBwZWQgPSBtX2JhY2tpbmctPmxv
YWRpbmdCZWhhdmlvcigpOwogICAgIGlmICghbG9hZGluZ0JlaGF2aW9yV3JhcHBlZCkKLSAgICAg
ICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1
cm4gY29udGV4dC5jc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsb2FkaW5nQmVoYXZpb3JXcmFw
cGVkLnZhbHVlKCkpLT5jc3NUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwCmluZGV4IDJmNWI4YjA0NzM5NWEyY2JkNzU1YWMxY2Y1MzRiZmRjZWY1NzEw
NTcuLjZkNTA5MTlkOTUxNmFiNzU3NGRhMDVmMjFiMGUwNGQ2Njk3MDBkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMgewogCkBAIC0zMyw2ICszNSw3IEBAIHZvaWQgaW5pdCgpCiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAg
ICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogI2RlZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3Ry
dWN0KHN0cmluZywgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBD
U1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9C
QUwpCiAjdW5kZWYgSU5JVElBTElaRV9HTE9CQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKaW5kZXggMGVkMmJlZDk2MjMyMDRmOWEwYmViOWZjYjE1YTEwZGQ3ZTVkOGYzOS4uNjY2YmNj
Nzk2NThjOWRlZGYxOWIyOTU3OTU0M2M4YmNiNjM2OTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTEyNyw3
ICsxMjgsNyBAQCBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiAgICAgU3RyaW5nIGxvd2VyY2FzZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXModHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAobG93ZXJj
YXNlVHlwZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWlu
OyIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVybiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8
fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCiAgICAgICAgIHJl
dHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRo
KCJ0ZXh0L2h0bWw7IikpCkBAIC0yNjUsNyArMjY2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNl
dERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CiAgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHVybC5zdHJpbmcoKTsKLSAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSB0
ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgc2FuaXRpemVkRGF0YSA9IGRhdGE7
IC8vIE5vdGhpbmcgdG8gc2FuaXRpemUuCiAKICAgICBpZiAoc2FuaXRpemVkRGF0YSAhPSBkYXRh
KQpAQCAtNDI4LDcgKzQyOSw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0
bWxUZXh0KQogewogICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKLSAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxh
aW5UZXh0KTsKKyAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9o
dG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZl
bnQpKTsKIH0KQEAgLTQ2Nyw3ICs0NjgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiAKIFN0cmluZyBEYXRhVHJh
bnNmZXI6OmRyb3BFZmZlY3QoKSBjb25zdAogewotICAgIHJldHVybiAibm9uZSJfczsKKyAgICBy
ZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyb3BFZmZlY3Qo
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNDE1NWY2MWQwMDJi
ZjJmNmYwN2UxNmRhZDU4YmQzYWQ3Njk0YWIuLmE5OGQyZjI1NGVhNjA0MmNlNzE1YzQxM2FjZDAx
OGUyNzA1ZmNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkV2ZW50LmgiCkBAIC02MDA3LDcgKzYwMDgsNyBAQCB2b2lkIERvY3VtZW50Ojpz
ZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiAKIFN0cmluZyBEb2N1bWVudDo6ZGVz
aWduTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gIm9uIl9zIDog
Im9mZiJfczsKKyAgICByZXR1cm4gaW5EZXNpZ25Nb2RlKCkgPyBvbkF0b20oKSA6IG9mZkF0b20o
KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCBk
MmFhOGQxZjdlMzk5ZTMzZGZhNWMxMTEwNjQxZDJmNDAxZTZjM2EwLi4wNWM4MmZiYWE5MThiZTBh
MWU2Mzc4NWIyYWFkZjM4YjdlNTRkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRPd25lci5oIgogCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE1MSw4ICsx
NTIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICAvLyBGSVhNRTogU2hvdWxkIE1JTUUgdHlw
ZXMgcmVhbGx5IGJlIGNhc2Ugc2Vuc2l0aXZlIGluIFhNTCBkb2N1bWVudHM/IERvZXNuJ3Qgc2Vl
bSBsaWtlIHRoZXkgc2hvdWxkLAogICAgIC8vIGV2ZW4gdGhvdWdoIG90aGVyIHRoaW5ncyBhcmUg
Y2FzZSBzZW5zaXRpdmUgaW4gdGhhdCBjb250ZXh0LiBNSU1FIHR5cGVzIHNob3VsZCBuZXZlciBi
ZSBjYXNlIHNlbnNpdGl2ZS4KICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoaXMgYW5kIHRoZW4g
cmVtb3ZlIHRoZSBpc0hUTUxFbGVtZW50IGNoZWNrIGhlcmUuCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZSgidGV4dC9j
c3MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InRleHQvY3NzIikgOiB0eXBlID09IGNzc0NvbnRlbnRUeXBlOworICAgIHJldHVybiBlbGVtZW50
LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZUF0b20oKTsKIH0KIAogdm9pZCBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKaW5kZXggYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZS4uOTFiYzRm
ZWI4OWRjNTgzYmYwYjNmNzA3MDVmYmQyYThiZGMyOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTk0LDcgKzk1LDcgQEAgdm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0PEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigidHlwZSJfcyk7CiAKLSAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKKyAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0
eSgpIHx8IHR5cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAg
ICAgICAgIG1faXNYU0wgPSB0eXBlID09ICJ0ZXh0L3htbCIgfHwgdHlwZSA9PSAidGV4dC94c2wi
IHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24veGh0
bWwreG1sIiB8fCB0eXBlID09ICJhcHBsaWNhdGlvbi9yc3MreG1sIiB8fCB0eXBlID09ICJhcHBs
aWNhdGlvbi9hdG9tK3htbCI7CiAgICAgICAgIGlmICghbV9pc0NTUyAmJiAhbV9pc1hTTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCmluZGV4IDU0ZDZjZjBl
NTgwNzk3NDExNWU2Y2VlZDcyNjdjNzhmYmRlMjIzNGUuLmIyNTZhMzJhNjhlZTEwYmFhOGRmYmQ4
NTQzMDIyMTU5MTA2OTMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1h
Z2VDb250cm9sc01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5l
cy5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9u
dFNoYWRvdy5jcHAKaW5kZXggMjg4NDgwYjY1NzdlOGVkMWEwM2Y3NThiMGI0ODQ3YjgxNzVmZmU4
Mi4uMjcwNzI0MGJjYWM1OGM1YjIwNzM2OTNjNDUwZTQxMjgzZjkxZTk0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRm9u
dFNoYWRvdy5oIgogCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAi
Q29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUyhjb25zdCBGb250U2hhZG93JiBzaGFk
b3cpCiB7CiAgICAgaWYgKHNoYWRvdy5vZmZzZXQuaXNaZXJvKCkgJiYgIXNoYWRvdy5ibHVyUmFk
aXVzKQotICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgp
OwogCiAgICAgaWYgKCFzaGFkb3cuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gIm5v
bmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgInB4ICIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA1ZWIzYmQwODczNDMyYjRkMGM4ZDlmOTEwZDI4N2RiMWI1OThkZmMzLi5hOWM0
YzYzOTQ3MDhlMzVjNTJmMmFhZDhiNWMyYzkwMDBlMzdhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKICNpbmNsdWRlICJDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNzE4LDcgKzcxOSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgICAg
ICBpZiAoaXNCbG9jayhlbGVtZW50KSkKICAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0
eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3Ms
IGZhbHNlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1l
bnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJu
b25lIl9zLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgbm9uZUF0b20oKSwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tCmluZGV4IGI1ZTBhY2E2ZTIxYmIyNmJiZGMzYzU4ZWJkMzUwOTY1ZDA4NDZk
ZjcuLjk0YTQ2MGY1MzQ5NDg0Y2FiMDhiZGU5ODhhMjdmYjE3NDAwMGE5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbXBvcnQgIkNvbG9yQ29udmVy
c2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW1wb3J0ICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAj
aW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDUz
Y2M2YWIwMTZiZTgyZTcwZWI1NTU1YTc5NjNlYTUwOWJiYmYzMDQuLjQyYjZjMjJlNTllMjg4Y2Fi
MDI2ODg5NmRmYWRkYjYwMTAxZjQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkNoYXJhY3Rl
ckRhdGEuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisj
aW1wb3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNTk3LDcgKzU5OCw3IEBAIFN0cmluZyBIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZh
bHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CiAgICAgICAgIGlmIChl
bGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KG5vZnJhbWVzVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgICAg
IHJldHVybiBub25lQXRvbSgpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
YWRkcmVzc1RhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShib2R5VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoY2VudGVyVGFnKQog
ICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkZFRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGRpclRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKGRsVGFnKQogICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkdFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZyYW1lVGFnKQpAQCAtMTAxNyw3ICsx
MDE4LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3RyaW5nIGZvbnRLZXJuaW5nID0gX2Nh
Y2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250S2Vybmlu
Zyk7CiAgICAgU3RyaW5nIGxldHRlclNwYWNpbmcgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9y
Tm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOwogICAgIGlmIChmb250S2Vy
bmluZy5sZW5ndGgoKSB8fCBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChm
b250S2VybmluZyA9PSAibm9uZSIpCisgICAgICAgIGlmIChmb250S2VybmluZyA9PSBub25lQXRv
bSgpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAMC4wIGZvcktleTpOU0tlcm5BdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUga2VyblZhbCA9
IGxldHRlclNwYWNpbmcubGVuZ3RoKCkgPyBsZXR0ZXJTcGFjaW5nLnRvRG91YmxlKCkgOiAwLjA7
CkBAIC0xMTEwLDcgKzExMTEsNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1
dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgICAgICBTdHJp
bmcgaHlwaGVuYXRpb24gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tF
bGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpOwogICAgICAgICBpZiAoaHlwaGVuYXRp
b24ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmIChoeXBoZW5hdGlvbiA9PSAiYXV0byIpCisg
ICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgICAg
ICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0b3I6MS4wXTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SHlwaGVuYXRpb25GYWN0
b3I6MC4wXTsKQEAgLTE2MTAsNyArMTYxMSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2VudGVy
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBCT09MIGVtYmVkZGVkKQogCiAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhZW1iZWRkZWQpCiAgICAgICAgIF9wcm9jZXNzSGVh
ZEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoIWRpc3BsYXlWYWx1ZS5sZW5ndGgoKSB8
fCAhKGRpc3BsYXlWYWx1ZSA9PSAibm9uZSIgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1
bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uLWdyb3VwIikpIHsKKyAgICBlbHNl
IGlmICghZGlzcGxheVZhbHVlLmxlbmd0aCgpIHx8ICEoZGlzcGxheVZhbHVlID09IG5vbmVBdG9t
KCkgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1bW4iIHx8IGRpc3BsYXlWYWx1ZSA9PSAi
dGFibGUtY29sdW1uLWdyb3VwIikpIHsKICAgICAgICAgaWYgKF9jYWNoZXMtPmlzQmxvY2tFbGVt
ZW50KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpICYmICEoZGlzcGxheVZh
bHVlID09ICJ0YWJsZS1jZWxsIiAmJiBbX3RleHRUYWJsZXMgY291bnRdID09IDApCiAgICAgICAg
ICAgICAmJiAhKFtfdGV4dExpc3RzIGNvdW50XSA+IDAgJiYgZGlzcGxheVZhbHVlID09ICJibG9j
ayIgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShsaVRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZSh1
bFRhZykgJiYgIWVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpKQogICAgICAgICAgICAgX25ld1Bh
cmFncmFwaEZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC50YWdOYW1lKCksIE5PLCBZRVMpOwpA
QCAtMTg2NSw3ICsxODY2LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBpZiAoZWxlbWVu
dC5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGlucHV0RWxlbWVudC50eXBlKCkgPT0gInRleHQiKSB7CisgICAgICAgICAgICBpZiAoaW5wdXRF
bGVtZW50LnR5cGUoKSA9PSB0ZXh0QXRvbSgpKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcg
KnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIFt2YWx1ZSBsZW5ndGhdID4gMCkKICAgICAgICAgICAgICAgICAgICAgX2FkZFZhbHVlKHZh
bHVlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzYWVlOWNmOWRk
N2RlNmUzZGM4MTUxMDQ4NWU3YzE3ZjRlMGVlZTI0Li44MGE4ODQzNTAyZWI1N2YwM2VkYjJlYjMx
ZGMyNzcxYzBmOWQzOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
QEAgLTEyODUsNyArMTI4Niw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8v
IFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVs
ZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5
ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKICAgICAgICAgZnJhZ21lbnQt
PnBhcnNlSFRNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKLSAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYg
KHNvdXJjZU1JTUVUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKQogICAgICAgICBm
cmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgV1RGTW92
ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bFBh
cnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNlU3RyaW5nKSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCmluZGV4IGQ2N2RjNzkyOTQ4NjIxNDM5NDE1
Y2VmZTg2MzY5MDc4ZjY0NzVlYmQuLjQwZTJhOTBlZWMwOTE1MjMwZmYwYjUyZDM1M2RiMjM3NjQy
NDU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NiwxMCArNTcsOCBAQCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6OkRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBudWxsQXRvbSgpOwotICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpOb25lOiB7
Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdmFsdWVOb25lKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgICAgICByZXR1cm4gdmFsdWVOb25lOwotICAgIH0KKyAgICBjYXNlIEF1dG9jYXBpdGFsaXpl
VHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAgICAgY2FzZSBBdXRvY2Fw
aXRhbGl6ZVR5cGU6OlNlbnRlbmNlczogewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlU2VudGVuY2VzKCJzZW50ZW5jZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiB2YWx1ZVNl
bnRlbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZGU1MTg1ZTE3YjM3ZTg0ZGIz
NzE0ODhiNDY4YmZkYzMyNTg3ZDQyOC4uOWRlNzBiN2M2YWRhYzNkZWNlZTA2ZDI1Y2M0MmI2YzQ5
MTIwZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRvZmlsbC5oIgogCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
QEAgLTEzNiw5ICsxMzcsNiBAQCBzdGF0aWMgdW5zaWduZWQgbWF4VG9rZW5zRm9yQXV0b2ZpbGxG
aWVsZENhdGVnb3J5KEF1dG9maWxsQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI3Byb2Nlc3NpbmctbW9kZWwtMwog
QXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotCiAgICAgLy8gTGFiZWw6IERlZmF1bHQKICAgICAvLyAyNi4gTGV0
IHRoZSBlbGVtZW50J3MgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIGVtcHR5IHN0
cmluZywgYW5kIGl0cyBhdXRvZmlsbCBoaW50IHNldCBhbmQgYXV0b2ZpbGwgc2NvcGUgYmUgZW1w
dHkuCiAgICAgLy8gMjcuIElmIHRoZSBlbGVtZW50J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBp
cyB3ZWFyaW5nIHRoZSBhdXRvZmlsbCBhbmNob3IgbWFudGxlLCB0aGVuIGxldCB0aGUgZWxlbWVu
dCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIGVtcHR5IHN0cmluZyBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCkBAIC0xNDksOSArMTQ3LDkgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6
Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAg
ICAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gZm9ybSA9IGVsZW1lbnQuZm9ybSgpOwotICAgICAgICBpZiAoZm9y
bSAmJiBmb3JtLT5hdXRvY29tcGxldGUoKSA9PSBvZmYpCi0gICAgICAgICAgICByZXR1cm4geyBv
ZmYsIGVtcHR5U3RyaW5nKCkgfTsKLSAgICAgICAgcmV0dXJuIHsgb24sIGVtcHR5U3RyaW5nKCkg
fTsKKyAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0b2NvbXBsZXRlKCkgPT0gb2ZmQXRvbSgp
KQorICAgICAgICAgICAgcmV0dXJuIHsgb2ZmQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBlbXB0eVN0cmluZygpIH07CiAgICAgfTsKIAogCkBAIC0x
OTksMTMgKzE5NywxMyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIGF1dG9maWxs
IGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhwb3NlZCBhdXRvZmlsbCB2YWx1
ZSBiZSB0aGUgc3RyaW5nICJvZmYiLgogICAgIC8vIFRoZW4sIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChjYXRlZ29yeSA9PSBBdXRvZmlsbENhdGVnb3J5OjpPZmYpCi0gICAgICAgIHJldHVy
biB7IG9mZiwgb2ZmLmdldCgpLnN0cmluZygpIH07CisgICAgICAgIHJldHVybiB7IG9mZkF0b20o
KSwgb2ZmQXRvbSgpLnN0cmluZygpIH07CiAKICAgICAvLyA4LiBJZiBjYXRlZ29yeSBpcyBBdXRv
bWF0aWMsIGxldCB0aGUgZWxlbWVudCdzIGF1dG9maWxsIGZpZWxkIG5hbWUgYmUgdGhlIHN0cmlu
ZyAib24iLAogICAgIC8vIGxldCBpdHMgYXV0b2ZpbGwgaGludCBzZXQgYmUgZW1wdHksIGFuZCBs
ZXQgaXRzIElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBzdHJpbmcKICAgICAvLyAi
b24iLiBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdvcnkgPT0gQXV0b2Zp
bGxDYXRlZ29yeTo6QXV0b21hdGljKQotICAgICAgICByZXR1cm4geyBvbiwgb24uZ2V0KCkuc3Ry
aW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgb25BdG9tKCksIG9uQXRvbSgpLnN0cmluZygpIH07
CiAKICAgICAvLyA5LiBMZXQgc2NvcGUgdG9rZW5zIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgLy8g
MTAuIExldCBoaW50IHRva2VucyBiZSBhbiBlbXB0eSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAppbmRleCA4YTU0Y2EwNTM1NGE5MzAyNzU5
YWI3NWJhM2ExNzU1ZjdiOWY0NTVkLi4yYjIzZTFmZDVjN2E4ZjNkODM2NzZjY2VjYTA0ZDA4Mzdl
OTRhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlw
ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00NiwxMyArNDcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIEZvcm1Db250cm9sU3RhdGUgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50
KCkpOwotICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gIm9uIl9zIDogIm9mZiJf
cyB9OworICAgIHJldHVybiB7IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gb25BdG9tKCkgOiBvZmZB
dG9tKCkgfTsKIH0KIAogdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpKTsKLSAgICBlbGVtZW50KCktPnNldENoZWNrZWQoc3RhdGVbMF0gPT0gIm9uIik7
CisgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09IG9uQXRvbSgpKTsKIH0KIAog
Ym9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYg
Zm9ybURhdGEpIGNvbnN0CkBAIC05OSw4ICsxMDAsNyBAQCBib29sIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKIAogU3RyaW5nIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb24oIm9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBvbi5nZXQoKTsKKyAg
ICByZXR1cm4gb25BdG9tKCk7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhp
bnQuY3BwCmluZGV4IDk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEuLmI3
NzU2OTRhMzIxMTE0NTllMjBkZDU0NGM3ZDU3MDA2YWYyNjJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFbnRlcktleUhpbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW50ZXJLZXlIaW50IGVudGVyS2V5SGludEZv
ckF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC02Myw3ICs2NSw3IEBAIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZUZvckVudGVyS2V5SGludChFbnRlcktleUhpbnQgaGludCkKICAg
ICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlvdXM6CiAgICAgICAgIHJldHVybiAicHJldmlvdXMi
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJzZWFy
Y2giX3M7CisgICAgICAgIHJldHVybiBzZWFyY2hBdG9tKCk7CiAgICAgY2FzZSBFbnRlcktleUhp
bnQ6OlNlbmQ6CiAgICAgICAgIHJldHVybiAic2VuZCJfczsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAppbmRleCBhOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4
YjEyYWVhMDYzMzAwMzMyLi44ZWI2YzNlZjhmMzEzNGQ4NmIzNjg5MWM1ZTQwMDFiYjY0MmQ1ZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxl
Z2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IHNyYykKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBm
YWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihw
cmVsb2FkQXR0ciwgImF1dG8iX3MpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsIGF1dG9BdG9tKCkpOwogICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAgICByZXR1
cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
aW5kZXggODc5NDg2N2M2ZTA0ZDUwMTYxNzNiZjk3ZDcyMzAwN2U5ZGFmMWRmZC4uOWMzNzMxNWFj
YjU2YmYwMGJjOTVlMzJkN2EwMTNhNzI1NzExNmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtODIsMTYgKzgzLDEyIEBAIGlu
dCBIVE1MQnV0dG9uRWxlbWVudDo6ZGVmYXVsdFRhYkluZGV4KCkgY29uc3QKIGNvbnN0IEF0b21T
dHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1Ym1pdCgi
c3VibWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICAgICAg
cmV0dXJuIHN1Ym1pdDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJVVFRPTjoKLSAgICAgICAg
ICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7Ci0gICAgICAgIGNh
c2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcmVzZXQoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwotICAgICAgICB9CisgICAgY2Fz
ZSBTVUJNSVQ6CisgICAgICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CisgICAgY2FzZSBCVVRUT046
CisgICAgICAgIHJldHVybiBIVE1MTmFtZXM6OmJ1dHRvblRhZy0+bG9jYWxOYW1lKCk7CisgICAg
Y2FzZSBSRVNFVDoKKyAgICAgICAgcmV0dXJuIHJlc2V0QXRvbSgpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5
YzM5YzU2ZDM0MTQzOGQwZTA4YjU1MTNlNjcyYjY5YTYwOWIxYjFkLi45MDEwNTA1ZGUxNTI5ZGQ0
OTZkOTRmOGYyYzMyNzYxNTczMjIxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCkBAIC00
MTUsMTMgKzQxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRvVmFsaWRE
aXJWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGx0clZhbHVlKCJsdHIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBydGxWYWx1ZSgicnRsIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbHVlKCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImx0ciIpKQogICAgICAgICByZXR1cm4gbHRyVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCiAgICAgICAgIHJldHVybiBydGxWYWx1
ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikp
Ci0gICAgICAgIHJldHVybiBhdXRvVmFsdWU7CisgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwog
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCkBAIC01NzgsMTcgKzU3OCwxMSBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgY2FzZSBDb250ZW50RWRp
dGFibGVUeXBlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIGZhbHNlQXRvbSgpOwogICAgIGNhc2Ug
Q29udGVudEVkaXRhYmxlVHlwZTo6UGxhaW50ZXh0T25seToKLSAgICAgICAgcmV0dXJuICJwbGFp
bnRleHQtb25seSJfczsKKyAgICAgICAgcmV0dXJuIHBsYWludGV4dE9ubHlBdG9tKCk7CiAgICAg
fQogICAgIHJldHVybiAiaW5oZXJpdCJfczsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHBsYWludGV4dE9ubHlOYW1lKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxhaW50ZXh0LW9ubHki
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHBsYWludGV4
dE9ubHlWYWx1ZS5nZXQoKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNl
dENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCkBAIC01OTYsNyArNTkw
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShj
b25zdCBTdHJpbmcmIGVuYWJsZWQpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCiAgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgZmFsc2VBdG9tKCkpOwogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQt
b25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRl
bnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9ubHlOYW1lKCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHBsYWludGV4dE9u
bHlBdG9tKCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
YWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFi
bGVBdHRyKTsKICAgICBlbHNlCkBAIC0xMDY0LDkgKzEwNTgsNyBAQCBib29sIEhUTUxFbGVtZW50
OjpzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9j
b3JyZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbk5hbWUoIm9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gb2ZmTmFtZSgib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJl
Y3RBdHRyLCBhdXRvY29ycmVjdCA/IG9uTmFtZS5nZXQoKSA6IG9mZk5hbWUuZ2V0KCkpOworICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRv
Y29ycmVjdCA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTdlMDhmZmE5M2Q2MWQwZGQ4MDk3OWRk
Zjg0YjFjM2NmNTJkMGUwNS4uNWUwMTY5YTczMTcwNDkxM2JkY2U2MDRiNmNmMDMzZjg4YzBjYTkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5o
IgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAt
MTAxMiwxMCArMTAxMyw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29tcGxldGUo
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxGb3JtRWxl
bWVudDo6YXV0b2NvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmIDogb247CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpID8gb2ZmQXRvbSgpIDogb25BdG9tKCk7CiB9
CiAKIFJlZlB0cjxET01Gb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpjb25zdHJ1Y3RFbnRyeUxp
c3QoUmVmPERPTUZvcm1EYXRhPiYmIGRvbUZvcm1EYXRhLCBTdHJpbmdQYWlyVmVjdG9yKiBmb3Jt
VmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAx
ZTgxZjU0MjViMDdlMjRkOWE5YzEyMDdlYjM1NTkyMTcyNDY1Yzg0Li5mMjhlNmQ5NjE1NmVhZGJk
MTBhYzVjMzk5MGEwMmEzMWI1ZWNkODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFbGVt
ZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNTcsOSArMTU4LDcgQEAgY29u
c3QgRmVhdHVyZVBvbGljeSYgSFRNTElGcmFtZUVsZW1lbnQ6OmZlYXR1cmVQb2xpY3koKSBjb25z
dAogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MSUZyYW1lRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRp
bmdzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenkoImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBsYXp5IDogZWFn
ZXI7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0ciksICJsYXp5IikgPyBs
YXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7CiB9CiAKIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnNl
dExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDAwY2RkNjJmZTA0NjM4NjQyNGU1Nzgx
NThhM2NjNWRkOTljOTZiYmIuLjhjNzM1MjBjNTRkNjdiYmEyMzlhNjRlZTdmODc2Y2JhZjU0NjBj
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTY3NCw3ICs2NzUsNyBAQCBTdHJpbmcgSFRNTElt
YWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25zdAogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBdXRv
OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuICJhdXRvIl9zOworICAgIHJldHVy
biBhdXRvQXRvbSgpOwogfQogCiBEZWNvZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmdNb2RlKCkgY29uc3QKQEAgLTg5NiwxMCArODk3LDggQEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1l
bnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpIGNvbnN0CiAKIGNvbnN0
IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJs
YXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGF1dG8mIGF0dHJp
YnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omxv
YWRpbmdBdHRyKTsKLSAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlVmFsdWUpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVybiBoYXNMYXp5TG9hZGFibGVB
dHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVWYWx1ZSkgPyBsYXp5QXRvbSgpIDogZWFnZXJBdG9tKCk7
CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0TG9hZGluZ0ZvckJpbmRpbmdzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggMjY0YTdhODgyNjZhODM5YmZkOGYzZWM5NTRiNjI5NzlmMTliMTkzZi4uZjI2MzBh
Y2QwYmU2Y2NkZGJkNjQ1MjBmMzc5MzdkODE2ODQ3NjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0u
aCIKICNpbmNsdWRlICJDb250ZW50UnVsZUxpc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCkBAIC0zNjQ5LDE2ICszNjUwLDE2IEBAIFN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9t
ZWRpYWNhcHR1cmUtbWFpbi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCiAgICAgLy8g
InByZWxvYWQiIC0gT24gZ2V0dGluZzogbm9uZS4gT24gc2V0dGluZzogaWdub3JlZC4KICAgICBp
ZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3ByZWxvYWQp
IHsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lOgotICAgICAgICByZXR1cm4g
Im5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhOgogICAgICAgICByZXR1cm4gIm1ldGFkYXRhIl9zOwogICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86Ci0gICAgICAgIHJldHVybiAiYXV0byJf
czsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhi
ZjMuLmFiOGQ2YTI5OWVmNmNjZjBhMWQyMTAwMTEzODZiMWI5ZjNhOGU2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQzNCwxMyArNDM1
LDEyIEBAIHVuc2lnbmVkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlU2VsZWN0
aW9uRW5kKCkgY29uc3QKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9uZSgibm9uZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZvcndhcmQoImZvcndhcmQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBiYWNrd2FyZCgiYmFja3dhcmQiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAg
IGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiBub25lOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJl
Y3Rpb246CiAgICAgICAgIHJldHVybiBmb3J3YXJkOwogICAgIGNhc2UgU2VsZWN0aW9uSGFzQmFj
a3dhcmREaXJlY3Rpb246CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGRpcmVjdGlvblN0cmluZyhUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBub25lOwor
ICAgIHJldHVybiBub25lQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRNb2RlLmNwcAppbmRleCAzNDlkODViNTYyZTdiYjljNWFkZmVkNTI3MTFmNTMwNWM0N2Rl
NDllLi43ZTgwYzc3ZjdlZjk0Y2Y4MDgwMDdlMGNjNDZjZjAyNmJmZjQ1ZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dE1vZGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MiwzMiArODMsMjcgQEAgbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzIHsKIAogY29uc3Qg
QXRvbVN0cmluZyYgbm9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBub25lQXRvbSgpOwogfQog
CiBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInRleHQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRleHRBdG9t
KCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHRl
bEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoInVybCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1
cm4gdXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJlbWFp
bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbW9kZTsK
KyAgICByZXR1cm4gZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIG51bWVyaWMo
KQpAQCAtMTI0LDggKzEyMCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRlY2ltYWwoKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBzZWFyY2goKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBzZWFyY2hBdG9t
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElucHV0TW9kZU5hbWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlTmFtZXMuY3BwCmluZGV4IDQ1MDM2OWVjODFkY2JmMTAzMzY5MGQ3ZjY0MzcxNjVm
MWVlOGM1NmYuLjZmZmJjZjVjZjIyNTY5MzI3OTlmMWFlZTNhMWM0M2M1MWI1MWVhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDggKzY0LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgZGF0ZXRpbWVsb2NhbCgpCiAKIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoImVt
YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBlbWFpbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgZmlsZSgp
CkBAIC0xMTcsMzIgKzExNywyNyBAQCBjb25zdCBBdG9tU3RyaW5nJiByYW5nZSgpCiAKIGNvbnN0
IEF0b21TdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiByZXNldEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInNlYXJjaCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c2VhcmNoQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXQoKQogewotICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgic3Vi
bWl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiBzdWJtaXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRlbGVw
aG9uZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJ0ZWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHRlbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBuYW1lKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0aW1lKCkKQEAgLTE1Myw4ICsxNDgsNyBAQCBjb25zdCBBdG9tU3RyaW5n
JiB0aW1lKCkKIAogY29uc3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInVybCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
dXJsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWVrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IDkzMDQ4NGI4NWFiMjVhZTU0N2RmN2YzMWZkN2QyMGE1YWEyYmU2ZmEuLjdmNDczNTA3ZmJm
YWRiZWY4M2Q1MWM4ZmYxMDliOTYyYTEyM2RiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMTUwLDggKzE1MSw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkCiAK
IHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHlJbXBsKGJvb2wgaXNFZGl0YWJsZSwgYm9vbCBpbml0aWFsaXphdGlvbikKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBs
YWluVGV4dE9ubHlOYW1lKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBwbGFpblRl
eHRPbmx5TmFtZS5nZXQoKSA6IGZhbHNlQXRvbSgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlID0g
aXNFZGl0YWJsZSA/IHBsYWludGV4dE9ubHlBdG9tKCkgOiBmYWxzZUF0b20oKTsKICAgICBpZiAo
aW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlcyB7
IEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCB2YWx1ZSkgfTsKICAgICAgICAgcGFyc2Vy
U2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCmluZGV4IDY5OTRiMTEzMWUyMzQ4ZTRlZTlkMjVjMDlhY2Q0ZGY2NTg3YzEwM2Yu
LjdiYWVhYTA2NWM3MzQwOThlMmJhMDNkMzMzMDllMzE4ODM5ZWQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAtMzgsMjggKzM4LDE3IEBACiAjaW5jbHVk
ZSAiQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5o
IgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdv
cmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKLX0KLQogY29uc3QgQXRvbVN0cmlu
ZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlw
dGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3Jk
KCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG1haW4oIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIG1haW47Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNj
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtNzIsMTIgKzYxLDYgQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6dHJhbnNsYXRpb25LZXl3b3JkKCkKICAgICByZXR1cm4gdHJhbnNsYXRpb247CiB9CiAKLWNv
bnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNvbW1lbnRhcnk7Ci19Ci0KIEF1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTEyMywxMCArMTA2
LDEwIEBAIHZvaWQgQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpCiAKIGJvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgp
Ci0gICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKKyAgICByZXR1cm4gdmFs
dWUgPT0gYWx0ZXJuYXRpdmVBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUF0
b20oKQogICAgICAgICB8fCB2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKQotICAgICAgICB8
fCB2YWx1ZSA9PSBtYWluS2V5d29yZCgpCisgICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkK
ICAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkKICAgICAgICAgfHwgdmFsdWUg
PT0gdHJhbnNsYXRpb25LZXl3b3JkKCk7CiB9CkBAIC0yMDgsMTMgKzE5MSwxMyBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmtpbmQoKSkgewogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgot
ICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CiAgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpOwpAQCAtMjIzLDcgKzIwNiw3IEBAIHZvaWQgQXVk
aW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKICAgICAgICAgc2V0S2luZChBdWRpb1Ry
YWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVk
aW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CiAgICAg
ICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5oCmluZGV4IDRlMTg2YzE2NjIwN2IwN2E3OGQwZTc2ZWM0ZDNkZDA5MDk5NjE3MjguLmJk
YjdmMWIyMmMwMjE5MTY5Y2MxMzI3ZjQ1MzUxNTIxZmU3ZTdiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC00NiwxMiArNDYsOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVz
Y3JpcHRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5LZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RW5hYmxlZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAppbmRleCAxMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiLi45MTU4YWU0
ZDMwNDE4NzBiNWI3Mzg3OWY4NTgxOWI4MDJkOWM0Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCkBAIC01MCwxOCArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2spOwogCi1jb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRs
ZXMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRp
dGxlczsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVzY3Jp
cHRpb25zS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTEwMyw3ICs5MSw3IEBAIFRleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IGtpbmQsIGNvCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHJhY2tU
eXBlKHR5cGUpCiB7Ci0gICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYg
KGtpbmQgPT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIG1fa2luZCA9IEtpbmQ6OkNhcHRpb25z
OwogICAgIGVsc2UgaWYgKGtpbmQgPT0gY2hhcHRlcnNLZXl3b3JkKCkpCiAgICAgICAgIG1fa2lu
ZCA9IEtpbmQ6OkNoYXB0ZXJzOwpAQCAtMTY3LDkgKzE1NSw5IEBAIGJvb2wgVGV4dFRyYWNrOjpl
bmFibGVkKCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29y
ZCgpKQorICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICBpZiAodmFsdWUg
PT0gY2FwdGlvbnNBdG9tKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg3LDcg
KzE3NSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25z
dAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBLaW5kOjpDYXB0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGNhcHRpb25zS2V5d29yZCgpOworICAgICAgICByZXR1cm4gY2FwdGlvbnNB
dG9tKCk7CiAgICAgY2FzZSBLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJuIGNoYXB0ZXJz
S2V5d29yZCgpOwogICAgIGNhc2UgS2luZDo6RGVzY3JpcHRpb25zOgpAQCAtMTk3LDEwICsxODUs
MTAgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiAg
ICAgY2FzZSBLaW5kOjpNZXRhZGF0YToKICAgICAgICAgcmV0dXJuIG1ldGFkYXRhS2V5d29yZCgp
OwogICAgIGNhc2UgS2luZDo6U3VidGl0bGVzOgotICAgICAgICByZXR1cm4gc3VidGl0bGVzS2V5
d29yZCgpOworICAgICAgICByZXR1cm4gc3VidGl0bGVzQXRvbSgpOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc3VidGl0bGVzS2V5d29yZCgpOworICAgIHJl
dHVybiBzdWJ0aXRsZXNBdG9tKCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQg
bmV3S2luZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDk0MGMwMjQ2
MmU4NjkzY2I4ODg5ZDAyN2I2YzlhODZlZjJlOTBjZjUuLjJiNjI3NGMyNWY0NWQ2OTQyMGM5NDJi
MTQyZGEzMTAxMzMzNTY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1l
bnVPZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVBdXRvbWF0aWNJ
dGVtKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgp
OwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9tU3RyaW5nJik7
CiAKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggYWJmNzU2OTY0YzM3OWU4Nzc0ZGFjZWFiODEyMGUy
OGZjZDE0YWE3Yy4uZTI3MjVjOGU4NDgwOWFjNjcwMmUyZTYzMzIyMGRlODQwY2ZiOGEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBA
IC0xMzcsMTIgKzEzOCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGxpbmVSaWdodEtleXdvcmQo
KQogICAgIHJldHVybiBsaW5lUmlnaHQ7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcmIGF1dG9L
ZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBhdXRv
WChNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpKTsKLSAgICByZXR1cm4gYXV0b1g7Ci19
Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVmPFZUVEN1ZUJveD4gVlRU
Q3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKQEAgLTQ3Nyw3
ICs0NzIsNyBAQCBjb25zdCBTdHJpbmcmIFZUVEN1ZTo6cG9zaXRpb25BbGlnbigpIGNvbnN0CiAg
ICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDoKICAgICAgICAgcmV0dXJuIGxpbmVS
aWdodEtleXdvcmQoKTsKICAgICBjYXNlIFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG86Ci0gICAg
ICAgIHJldHVybiBhdXRvS2V5d29yZCgpOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CkBAIC00OTMsNyArNDg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRU
Q3VlOjpzZXRQb3NpdGlvbkFsaWduKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHBvc2l0
aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQ2VudGVyOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IGxpbmVSaWdodEtleXdvcmQoKSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQg
PSBQb3NpdGlvbkFsaWdubWVudExpZ25SaWdodDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRv
S2V5d29yZCgpKQorICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHBv
c2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGlnbm1lbnRMaWduQXV0bzsKICAgICBlbHNlCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0xMzI5LDEzICsxMzI0LDEzIEBAIHZvaWQgVlRUQ3VlOjp0
b0pTT04oSlNPTjo6T2JqZWN0JiBvYmplY3QpIGNvbnN0CiAgICAgb2JqZWN0LnNldFN0cmluZygi
dmVydGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9M
aW5lcyJfcywgc25hcFRvTGluZXMoKSk7CiAgICAgaWYgKG1fbGluZVBvc2l0aW9uKQotICAgICAg
ICBvYmplY3Quc2V0U3RyaW5nKCJsaW5lIl9zLCAiYXV0byJfcyk7CisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoImxpbmUiX3MsIGF1dG9BdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0
LnNldERvdWJsZSgibGluZSJfcywgKm1fbGluZVBvc2l0aW9uKTsKICAgICBpZiAobV90ZXh0UG9z
aXRpb24pCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCAqbV90ZXh0UG9z
aXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3Ms
ICJhdXRvIl9zKTsKKyAgICAgICAgb2JqZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsIGF1dG9B
dG9tKCkpOwogICAgIG9iamVjdC5zZXRJbnRlZ2VyKCJzaXplIl9zLCBtX2N1ZVNpemUpOwogICAg
IG9iamVjdC5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDczZTlkMGYxN2FmNTY1YjdhMmQxZDk5M2M5
MmM3MzdkNzk0ZjQ0YTcuLjA3MWE3NzQyNmRmMDRiNWM0ZjkwODI1YzU1MmUyOTlmNjdiNzVhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0Nv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgpAQCAtNDYsNDIgKzQ3
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gYWx0ZXJuYXRpdmU7
Ci19Ci0KLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi17
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgcmV0dXJuIGNhcHRpb25zOwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpt
YWluS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNpZ247CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcm
IFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlczsK
LX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gY29tbWVudGFyeTsKLX0KLQogVmlkZW9UcmFjazo6VmlkZW9UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQogICAgIDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6OlZp
ZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQ
cml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQpAQCAtMTE4
LDEyICs4OSwxMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKIAogYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRp
dmVLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKQotICAg
ICAgICB8fCB2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBt
YWluS2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlQXRvbSgpCisgICAg
ICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY2Fw
dGlvbnNBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkF0b20oKQogICAgICAgICB8fCB2
YWx1ZSA9PSBzaWduS2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IHN1YnRpdGxlc0tleXdv
cmQoKTsKKyAgICAgICAgfHwgdmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpOwogfQogCiB2b2lkIFZp
ZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCkBAIC0yNDEsMjIgKzIx
MiwyMiBAQCB2b2lkIFZpZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChhbHRlcm5hdGl2ZUF0b20oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY2Fw
dGlvbnNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6TWFpbjoKLSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAg
ICAgICAgc2V0S2luZChtYWluQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OlNpZ246CiAgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpT
dWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgp
KTsKKyAgICAgICAgc2V0S2luZChzdWJ0aXRsZXNBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKLSAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChjb21tZW50
YXJ5QXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CiAgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCmluZGV4IGUxZTBlOWIwMjU4ZDUxMjc2Mjk3MDZkMGVjNDIyYTNj
YmQwM2Y2OTkuLjFlMjJiYmI0NTM3MTJmOGUyYTkxMWI3Mzg4OTlmNDNiM2RiZDY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC00OSwxMiArNDksNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IG1haW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpZ25LZXl3b3Jk
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJv
b2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IGY4ZGRiZDM4MDViNDU4MGE4ZDc2NDQ4OTEyM2NkOTIxZWMy
NjA1ZjQuLmM2OTQ0MDAzODZkY2I5ZjM3OTNkYjc4NzhjZmI0MWZjZTQzOTcyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5j
bHVkZSAiSVNPVlRUQ3VlLmgiCkBAIC05Miw3ICs5Myw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpw
YXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNo
YXIKIAogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50JiBjbGll
bnQsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBQ
QUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIFBBTDo6VVRGOEVuY29kaW5nKCkp
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBhZTAyOWJmYmJl
OTMzODI4YmRiMGM5ZWFiNTk5MmUwMDQ5NDk4NTY5Li4yNDQwZTNhYjcxYTY5YjJjMGM4MjI5Mjcx
NTNkOTgyNzNkMmM1NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC03ODIsNyArNzgzLDcgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JE
b2N1bWVudChEb2MKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHN0eWxlRWxl
bWVudCA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgc3R5bGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dHlwZUF0
dHIsIEF0b21TdHJpbmcoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgY3NzQ29udGVudFR5cGVBdG9tKCkpOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogdGFyZ2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURv
Y3VtZW50cywgZm9yIGV4YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAppbmRleCAyYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwLi45ZmIw
MDUyN2M5MzY1NDE5OWM4Nzk3OWEyMjk4M2YxYWNmMWEwY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgpAQCAtMTAzLDcg
KzEwNCw3IEBAIFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGlu
Z1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQogICAgICAgICByZXR1cm4gIm11
bHRpcGFydC9mb3JtLWRhdGEiX3M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsK
KyAgICAgICAgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpOwogICAgIHJldHVybiAi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggZjA0M2NkNTk3MDU0MTk3
NzYzOGI2ZGY0MjJmYTBmZDM5N2ViN2UxYS4uMmQxYWRmM2Y3ZTA5ZjAzMzAyYjYxZGZlZmQ2Yjc5
OTZhMDJhOWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIu
aCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKLSAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXBsYWNlbWVudFJlc3BvbnNlIHsgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgInRleHQvcGxh
aW4iX3MsIDAsICJVVEYtOCJfcyB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2Vt
ZW50UmVzcG9uc2UgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCB0ZXh0UGxhaW5Db250ZW50VHlw
ZUF0b20oKSwgMCwgIlVURi04Il9zIH07CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2Vt
ZW50RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCks
IHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBjZGU3
YWU0Y2MxMGVlZjVhNmIzODQ4MjcxMDU3YjM3MDhmNWI1NzM1Li5mNTllY2ZjNmMwOTZkNDQwMjBl
Y2QzMjYyZGNhMmQyNTQyMGZhZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5B
QkxFKE1IVE1MKQogI2luY2x1ZGUgIk1IVE1MUGFyc2VyLmgiCiAKKyNpbmNsdWRlICJDb21tb25B
dG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1IVE1MQXJjaGl2ZS5oIgogI2luY2x1ZGUgIk1JTUVI
ZWFkZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC0xMTksNyArMTIwLDcg
QEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFk
ZXIoTUlNRUhlYWRlciogaGVhZGVyKQogdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0Fy
Y2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQog
ewogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKLSAg
ICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZShtaW1l
VHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUo
bWltZVR5cGUpIHx8IG1pbWVUeXBlID09ICJ0ZXh0L2NzcyIpIHsKKyAgICBpZiAoIU1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IG1p
bWVUeXBlID09IGNzc0NvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIG1fcmVzb3VyY2VzLmFw
cGVuZChyZXNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMTRjY2Qy
YTNiOWYzMTdlNWUyNGI2ZWQ3ZDZlMTVjNWVjYTY5ZWQyOS4uZjUyYTkyZDAzZTUzMjhjNmQ5N2M1
MWMwYzUxMzc4YmY2MmFkYzhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNDAsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hl
ZENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKICAgICA6IENhY2hl
ZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OkNTU1N0eWxlU2hlZXQsIHNlc3Npb25J
RCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZSgidGV4dC9jc3MiX3MsIHJlcXVlc3QuY2hhcnNldCgpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoY3NzQ29udGVudFR5cGVBdG9tKCksIHJlcXVlc3QuY2hh
cnNldCgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IGMxNDQzMDJmMDNiZDk1NTY5YzZjMjA0NzQzYWVk
YjhiYWVhYWUzMjguLmJiOGFlMDYzZDA3ZjVlODUxYmQyZWU5NzVkMWQyZTY2ZGFjY2E1OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCmluZGV4IDEyNTNiNTgwMDViNTJmYmEyNDEwODI4NjEyN2M0ZDEzMmYwZDA0NWMuLjk0
MDNlNjUyYzhiMjhjNzYxZDQ4NjAyMmQ3M2QyNGZjNDk0YzJkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgIkNv
bG9yU2VyaWFsaXphdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKQEAgLTczMCw3ICs3MzEsNyBAQCBzdGF0aWMg
U3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kRGlzcGxheU5hbWVJZk5lZWRlZChjb25zdCBBdWRpb1Ry
YWNrJiB0cmFjaywgY29ucwogICAgIGlmICgodHJhY2sua2luZCgpID09IEF1ZGlvVHJhY2s6OmRl
c2NyaXB0aW9uS2V5d29yZCgpIHx8IHRyYWNrLmtpbmQoKSA9PSBBdWRpb1RyYWNrOjptYWluRGVz
Y0tleXdvcmQoKSkgJiYgIXRleHQuY29udGFpbnMoYXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNE
aXNwbGF5TmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGFkZEF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRp
b25zU3VmZml4KHRleHQpOwogCi0gICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBBdWRpb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCgpICYmICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tLaW5kQ29tbWVu
dGFyeURpc3BsYXlOYW1lKCkpKQorICAgIGlmICh0cmFjay5raW5kKCkgPT0gY29tbWVudGFyeUF0
b20oKSAmJiAhdGV4dC5jb250YWlucyhhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFt
ZSgpKSkKICAgICAgICAgcmV0dXJuIGFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeVN1ZmZpeCh0
ZXh0KTsKIAogICAgIHJldHVybiB0ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTM1OGI4NDY0
YmI1OTM5MTA1YTY4OTg0NzZmZjY5MWFlZjNjMzc4MC4uYmNjZGU1ODE1MTBjYTJmYjFmNmM3ZmQw
ZDhkNjQ0NjA4NTdjN2U0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgog
I2luY2x1ZGUgIkNvbnN0YW50UHJvcGVydHlNYXAuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNs
aWVudC5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgpAQCAtMjA2Niw3ICsy
MDY3LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIAotICAgIG1fdXNl
clN0eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9zKS0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIG1fdXNlclN0
eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoY3NzQ29udGVudFR5cGVBdG9t
KCkpLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKaW5kZXggN2Y5ZTFiN2EyNzBkMmI1ZGI2MWZlOThkN2IxMDUwMGE3ZTZjZWUxNi4uNTA4
OTRlMGQyOTBjZDNjZTVmMjE4YmM2ZjA4MGJkZjg4NThiODU4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDU1NJbXBv
cnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
SW5saW5lcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKQEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NT
dHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNp
ZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgUEFMOjpUZXh0RW5j
b2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAg
ICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBjc3ND
b250ZW50VHlwZUF0b20oKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29k
ZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDQzNzEyODA0MTljMmVhYWI4OTg4MmYxNGEz
NGNhOTI1NzkyNWZjOTguLjdkYjNiOWJiNjFmYmZmNmI5MzFjYmI1OTdlNThlYWE1YmVjNGUxMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zNjIsNyAr
MzYzLDcgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwg
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGEKICAgICAvLyBJbXBsZW1lbnQgZm9ybWF0
dGVycyBmb3IgcHJvcGVydGllcyB3ZSBjYXJlIGFib3V0LgogICAgIGlmICghc3RyY21wKHByb3Bl
cnR5TmFtZSwgIm1hcmdpbi1sZWZ0IikpIHsKICAgICAgICAgaWYgKHN0eWxlLT5tYXJnaW5MZWZ0
KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgICAgICBy
ZXR1cm4gYXV0b0F0b20oKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5t
YXJnaW5MZWZ0KCkudmFsdWUoKSk7CiAgICAgfQogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFt
ZSwgImxpbmUtaGVpZ2h0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nl
c3NXYXJtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmlu
ZGV4IGRmYTNlODJhNjI4NGJiZGExMDQyMzg2MmU2NWUyYjhiZDBmZmVjZDIuLmJlMjM4MzRkN2Jl
NDU5MmZmZGMzMjYyZWMzYWVjN2ZmODY2MWNjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vz
c1dhcm1pbmcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc1dhcm1pbmcuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9u
dENhY2hlLmgiCkBAIC01MSw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgUHJv
Y2Vzc1dhcm1pbmc6OmluaXRpYWxpemVOYW1lcygpCiB7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgp
OworICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIEhUTUxOYW1lczo6aW5p
dCgpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBNZWRpYUZlYXR1cmVOYW1lczo6
aW5pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0
cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxOGU0MmM5OWEzMjMwZTEwYWJlZTM1YmY0NTM0Mjc2MGVlZjRhYTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5n
cy5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRp
dmVBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gYXV0b0F0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBjYXB0aW9uc0F0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNzc0NvbnRlbnRUeXBlQXRvbURhdGE7CitNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVhZ2VyQXRvbURhdGE7
CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRv
bURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZh
bHNlQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGxhenlBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gbWFpbkF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBub25lQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IG9mZkF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFpbnRleHRPbmx5QXRvbURhdGE7CitNYWluVGhy
ZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHJlc2V0QXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21E
YXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdWJt
aXRBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gc3VidGl0bGVzQXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRlbEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB0ZXh0QXRvbURhdGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGE7CitNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsK
K01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsQXRvbURh
dGE7CisKK3ZvaWQgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCkKK3sKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplS2V5LCBbXSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIG5vdCB0aHJlYWQgc2Fm
ZSwgc28gdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCBm
aXJzdC4KKyAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgICAgIGFsdGVybmF0aXZl
QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJhbHRlcm5hdGl2ZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgYXV0b0F0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICAgICAgY2FwdGlvbnNBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNz
Q2hlY2soImNhcHRpb25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
ICAgICBjb21tZW50YXJ5QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJjb21t
ZW50YXJ5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBjc3ND
b250ZW50VHlwZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dC9jc3Mi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGVhZ2VyQXRvbURh
dGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgZW1haWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0
QWNjZXNzQ2hlY2soImVtYWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgICAgICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2Ui
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGxhenlBdG9tRGF0
YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIG1haW5BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
ICAgIG5vbmVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm5vbmUiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIG9mZkF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICBvbkF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygi
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHBsYWludGV4
dE9ubHlBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInBsYWludGV4dC1vbmx5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICByZXNldEF0b21E
YXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygicmVzZXQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHNlYXJjaEF0b21EYXRhLmNvbnN0cnVjdFdpdGhv
dXRBY2Nlc3NDaGVjaygic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgICAgICBzdWJtaXRBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInN1
Ym1pdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3VidGl0
bGVzQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJ0aXRsZXMiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRlbEF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGVsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgICAgICB0ZXh0QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNr
KCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4
dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdHJ1
ZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidHJ1ZSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdXJsQXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCJ1cmwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NDY0MDc4ODY5MTk1YWQ2
Njc5MTIxMzJhYzE5Mjk2YWM2MmJkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
eHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBhbHRl
cm5hdGl2ZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gYXV0b0F0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnNBdG9tRGF0YTsKK2V4dGVybiBNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRhcnlBdG9t
RGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGNzc0NvbnRlbnRUeXBlQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZW1haWxBdG9tRGF0YTsKK2V4
dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNl
QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBsYXp5QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBtYWluQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBub25lQXRvbURhdGE7CitleHRlcm4gTWFp
blRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvZmZBdG9tRGF0YTsK
K2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9u
QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBwbGFpbnRleHRPbmx5QXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworZXh0ZXJuIE1haW5U
aHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc2VhcmNoQXRvbURhdGE7
CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
dWJtaXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHN1YnRpdGxlc0F0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGVsQXRvbURhdGE7CitleHRlcm4gTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0ZXh0QXRvbURhdGE7Citl
eHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0ZXh0
UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsQXRvbURhdGE7CisKK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2ZUF0b20oKSB7IHJldHVybiBhbHRlcm5hdGl2
ZUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgYXV0b0F0b20oKSB7
IHJldHVybiBhdXRvQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBj
YXB0aW9uc0F0b20oKSB7IHJldHVybiBjYXB0aW9uc0F0b21EYXRhLmdldCgpOyB9CitpbmxpbmUg
Y29uc3QgQXRvbVN0cmluZyYgY29tbWVudGFyeUF0b20oKSB7IHJldHVybiBjb21tZW50YXJ5QXRv
bURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBjc3NDb250ZW50VHlwZUF0
b20oKSB7IHJldHVybiBjc3NDb250ZW50VHlwZUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29u
c3QgQXRvbVN0cmluZyYgZWFnZXJBdG9tKCkgeyByZXR1cm4gZWFnZXJBdG9tRGF0YS5nZXQoKTsg
fQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtYWlsQXRvbSgpIHsgcmV0dXJuIGVtYWlsQXRv
bURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBmYWxzZUF0b20oKSB7IHJl
dHVybiBmYWxzZUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbGF6
eUF0b20oKSB7IHJldHVybiBsYXp5QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9t
U3RyaW5nJiBtYWluQXRvbSgpIHsgcmV0dXJuIG1haW5BdG9tRGF0YS5nZXQoKTsgfQoraW5saW5l
IGNvbnN0IEF0b21TdHJpbmcmIG5vbmVBdG9tKCkgeyByZXR1cm4gbm9uZUF0b21EYXRhLmdldCgp
OyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgb2ZmQXRvbSgpIHsgcmV0dXJuIG9mZkF0b21E
YXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgb25BdG9tKCkgeyByZXR1cm4g
b25BdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHBsYWludGV4dE9u
bHlBdG9tKCkgeyByZXR1cm4gcGxhaW50ZXh0T25seUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUg
Y29uc3QgQXRvbVN0cmluZyYgcmVzZXRBdG9tKCkgeyByZXR1cm4gcmVzZXRBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHNlYXJjaEF0b20oKSB7IHJldHVybiBzZWFy
Y2hBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHN1Ym1pdEF0b20o
KSB7IHJldHVybiBzdWJtaXRBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHN1YnRpdGxlc0F0b20oKSB7IHJldHVybiBzdWJ0aXRsZXNBdG9tRGF0YS5nZXQoKTsgfQor
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRlbEF0b20oKSB7IHJldHVybiB0ZWxBdG9tRGF0YS5n
ZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRBdG9tKCkgeyByZXR1cm4gdGV4
dEF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tKCkgeyByZXR1cm4gdGV4dFBsYWluQ29udGVudFR5cGVBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRydWVBdG9tKCkgeyByZXR1cm4gdHJ1ZUF0
b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgdXJsQXRvbSgpIHsgcmV0
dXJuIHVybEF0b21EYXRhLmdldCgpOyB9CisKK1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6
ZUNvbW1vbkF0b21TdHJpbmdzKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggYmExNzg3MjQ3MWFlMjg2NGY3NzA4MmM0
N2Q2N2YyNjNlZDVkZjk1OC4uNDVjY2I2YjM5Njg4MmUwZWVhMjZjMTFiZGZiNzZlMWZhMmRjNWU0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC00NCw3ICs0NSw3IEBAIFBhc3RlYm9hcmRCdWZmZXI6On5QYXN0ZWJvYXJkQnVmZmVyKCkg
PSBkZWZhdWx0OwogCiBib29sIFBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHR5cGUgPT0gInRleHQvcGxh
aW4iIHx8IHR5cGUgPT0gInRleHQvaHRtbCIgfHwgdHlwZSA9PSAidGV4dC91cmktbGlzdCI7Cisg
ICAgcmV0dXJuIHR5cGUgPT0gdGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCkgfHwgdHlwZSA9PSAi
dGV4dC9odG1sIiB8fCB0eXBlID09ICJ0ZXh0L3VyaS1saXN0IjsKIH0KIAogYm9vbCBQYXN0ZWJv
YXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4u
NWVjMmQ5MDcxYjJkZDJkZWRkNjFiNDhkNDg5ZDcwZmRhN2VjZTAyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdGF0aWNQYXN0ZWJvYXJkLmgiCiAKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTExLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJv
YXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1cCkKIAogdm9pZCBTdGF0aWNQYXN0
ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9w
dGlvbikKIHsKLSAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHRl
eHQpOworICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0ZXh0UGxhaW5Db250ZW50VHlwZUF0
b20oKSwgdGV4dCk7CiB9CiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uLmNwcAppbmRleCBjNzEyMDE2MTA5NTg3YWQ1ZGM0YzllMWM5YTM2MWRiZThmNjkz
MzJhLi45NGY0MWY3NGYzZTY3ZmEzZjBkY2U5YTZhN2U5MGVhYWUyYTQwOGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTEyOSw3ICsxMzAs
NyBAQCBib29sIEFuaW1hdGlvbjo6YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiYgb3Ro
ZXIsIGJvb2wgbWF0Y2hQcm9wZXJ0aWVzKSBjbwogCiBhdXRvIEFuaW1hdGlvbjo6aW5pdGlhbE5h
bWUoKSAtPiBjb25zdCBOYW1lJgogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBp
bml0aWFsVmFsdWUgeyBOYW1lIHsgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIm5vbmUiKSwgdHJ1
ZSB9IH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5hbWU+IGluaXRpYWxWYWx1ZSB7IE5h
bWUgeyBub25lQXRvbSgpLCB0cnVlIH0gfTsKICAgICByZXR1cm4gaW5pdGlhbFZhbHVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggYzA4ZTFmZjExZTdiNzE1YjdiOWYwOGZmYmRhNzUzZDkyZjkyOTg5OS4uOGEwNmFjNmJk
Mjg1OTcxOTU4ZTJkZjQyMTMzNjU0OGFhYzQwYjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIkZvdXJDQy5oIgpAQCAtMzMxLDEyICszMzIsNiBAQCBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCiAgICAgcmV0dXJuIGFwcGxpY2F0
aW9uT2N0ZXRTdHJlYW07CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0UGxhaW4o
KQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdGV4dFBsYWluKCJ0ZXh0L3BsYWluIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiB0ZXh0UGxhaW47Ci19Ci0KIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSogTWVkaWFQbGF5ZXI6OnBsYXllclByaXZhdGUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7CkBAIC00ODUsNyArNDgwLDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHIKIAogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBub3Qg
bWVhbmluZ2Z1bCwgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgogICAgIEF0b21T
dHJpbmcgY29udGFpbmVyVHlwZSA9IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwotICAg
IGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0
aW9uT2N0ZXRTdHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CisgICAg
aWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gYXBwbGljYXRp
b25PY3RldFN0cmVhbSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gdGV4dFBsYWluQ29udGVudFR5cGVB
dG9tKCkpIHsKICAgICAgICAgaWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkpCiAgICAgICAgICAg
ICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5z
dHJpbmcoKSkpOwogICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCBlYjI5ZjI1OGZkMTgzZTQwMjA1OTVlZjZh
ZDg3MTE0NzBjNDcxOTRmLi41NTMxZjc2ZjU0OGVmMDVmZmVhOTZlZDMwMWNhZDAzY2Q1ZWI5MmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1w
b3J0ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2ltcG9ydCAiQ29tbW9uVk0uaCIKICNpbXBvcnQg
IkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5oIgpAQCAtNjkyLDYgKzY5Myw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkK
IAogICAgIC8vIEluaXRpYWxpemUgQXRvbVN0cmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAg
V1RGOjpBdG9tU3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0
b21TdHJpbmdzKCk7CiAKICAgICAvLyBJbml0aWFsaXplIFRocmVhZEdsb2JhbERhdGEgb24gdGhl
IG1haW4gVUkgdGhyZWFkIHNvIHRoYXQgdGhlIFdlYkNvcmUgdGhyZWFkCiAgICAgLy8gY2FuIGxh
dGVyIHNldCBpdCdzIHRocmVhZC1zcGVjaWZpYyBkYXRhIHRvIHBvaW50IHRvIHRoZSBzYW1lIG9i
amVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCmluZGV4IDY2NzA4ZWMwMDE0ZTBlMDI3Mjk4NTgwYzg3ZDA3OWM4NmI3ZDM4NWIuLjIyZGFi
ZWI0MmEwNDhiZjZkNGVjOGQ5MzU1MmU1NGNhYmQzNTBmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlckZpZWxkLmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGM4NGQ0OTBjMzJkOGNjYzdiNzRmNDQ3
YmZiMDk3NjUwMjdiYTc3ZDguLmM0NDQxMmFkOTRhNTk5YWM2MDMxZjFiYmZjYzM4NmEyMGU2MzRh
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkNTU0FuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5QW5pbWF0aW9uLmgi
CiAjaW5jbHVkZSAiQ1NTVHJhbnNpdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCiAjaW5jbHVkZSAiRGVjbGFyYXRpdmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKQEAgLTI1Nyw3ICsyNTgsNyBAQCBi
b29sIFN0eWxlYWJsZTo6YW5pbWF0aW9uTGlzdENvbnRhaW5zTmV3bHlWYWxpZEFuaW1hdGlvbihj
b25zdCBBbmltYXRpb25MaXN0JiBhbgogCiAgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBhbmlt
YXRpb25zKSB7CiAgICAgICAgIGF1dG8mIG5hbWUgPSBhbmltYXRpb24tPm5hbWUoKS5zdHJpbmc7
Ci0gICAgICAgIGlmIChuYW1lICE9ICJub25lIiAmJiAhbmFtZS5pc0VtcHR5KCkgJiYga2V5ZnJh
bWVFZmZlY3RTdGFjay5jb250YWluc0ludmFsaWRDU1NBbmltYXRpb25OYW1lKG5hbWUpICYmIGtl
eWZyYW1lc1J1bGVFeGlzdHNGb3JBbmltYXRpb24oZWxlbWVudCwgYW5pbWF0aW9uLmdldCgpLCBu
YW1lKSkKKyAgICAgICAgaWYgKG5hbWUgIT0gbm9uZUF0b20oKSAmJiAhbmFtZS5pc0VtcHR5KCkg
JiYga2V5ZnJhbWVFZmZlY3RTdGFjay5jb250YWluc0ludmFsaWRDU1NBbmltYXRpb25OYW1lKG5h
bWUpICYmIGtleWZyYW1lc1J1bGVFeGlzdHNGb3JBbmltYXRpb24oZWxlbWVudCwgYW5pbWF0aW9u
LmdldCgpLCBuYW1lKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzAy
LDcgKzMwMyw3IEBAIHZvaWQgU3R5bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJl
bmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgICAgIGF1dG8mIGFuaW1hdGlvbk5hbWUgPSBjdXJyZW50QW5pbWF0
aW9uLT5uYW1lKCkuc3RyaW5nOwotICAgICAgICAgICAgaWYgKGFuaW1hdGlvbk5hbWUgPT0gIm5v
bmUiIHx8IGFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKGFuaW1hdGlv
bk5hbWUgPT0gbm9uZUF0b20oKSB8fCBhbmltYXRpb25OYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKCFrZXlmcmFtZXNSdWxlRXhpc3Rz
Rm9yQW5pbWF0aW9uKGVsZW1lbnQsIGN1cnJlbnRBbmltYXRpb24uZ2V0KCksIGFuaW1hdGlvbk5h
bWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNw
cAppbmRleCA0YjZjNTMwYmU5ZGNkMGVmNGU1MjBhOGYxMGYyYmM0NmExMzVmZGFiLi5hNjVlYzFj
OGU4MTNlNDYyYWY5Y2U0MTQxMWU5MjI4MDBjYTAwYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJQYXRoVHJhdmVyc2FsU3RhdGUuaCIKICNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCkBAIC0xMTAsMTAgKzExMSw5IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0CiAgICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Um90YXRlTW9kZSBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBhdXRvVmFsKCJhdXRvIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBy
b3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpOwotICAgIGlmIChyb3Rh
dGUgPT0gYXV0b1ZhbCkKKyAgICBhdXRvJiByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6
OnJvdGF0ZUF0dHIpOworICAgIGlmIChyb3RhdGUgPT0gYXV0b0F0b20oKSkKICAgICAgICAgcmV0
dXJuIFJvdGF0ZUF1dG87CiAgICAgaWYgKHJvdGF0ZSA9PSBhdXRvUmV2ZXJzZSkKICAgICAgICAg
cmV0dXJuIFJvdGF0ZUF1dG9SZXZlcnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDUzMjE0OTdhZDEwYjcwM2YzOTEyYmNiMGZmNmQxNjBlMjA0NjE4
NGUuLmU3N2ExNTczMzM0ZDQzM2I0ZGNhZmE2MDE4MDdmMzEzZDZjZTY2ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTMxOSwxOCArMzE5LDIyIEBA
IFN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSBjb25zdAogICAgIHJldHVy
biBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpmcm9tQXR0cik7CiB9
CiAKLWJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSgpIGNvbnN0CitzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgc3VtQXRvbSgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gc3VtOworfQorCitib29sIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAorewogICAgIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6YWRkaXRpdmVB
dHRyKTsKLSAgICByZXR1cm4gdmFsdWUgPT0gc3VtIHx8IGFuaW1hdGlvbk1vZGUoKSA9PSBBbmlt
YXRpb25Nb2RlOjpCeTsKKyAgICByZXR1cm4gdmFsdWUgPT0gc3VtQXRvbSgpIHx8IGFuaW1hdGlv
bk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeTsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVt
ZW50Ojppc0FjY3VtdWxhdGVkKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bSgic3VtIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlID0gYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwotICAgIHJl
dHVybiB2YWx1ZSA9PSBzdW0gJiYgYW5pbWF0aW9uTW9kZSgpICE9IEFuaW1hdGlvbk1vZGU6OlRv
OworICAgIHJldHVybiB2YWx1ZSA9PSBzdW1BdG9tKCkgJiYgYW5pbWF0aW9uTW9kZSgpICE9IEFu
aW1hdGlvbk1vZGU6OlRvOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzVGFyZ2V0
QXR0cmlidXRlQ1NTUHJvcGVydHkoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IGYzYWQxNTcwMTE2Y2UyYTA3ZTUxNDEw
MTEwYjZkYmFkMjI4Nzk3ODMuLjdjMTY2NDNlZTlkNjk3ZDEwZDRkNjM3ODFmMWNlMzhmNTJkNmVl
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCA5YWQxZTRjMzhhZTU3ZGJk
OGVmM2YyY2Q0ZmI2ZTY5ZGQ5ZDI0MmJiLi44OTkyZWM5OTM2OGRlM2JhY2Q1Nzg4NmYzOGQwYmYz
ZTgxYjRjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRkVDb252b2x2ZU1hdHJpeC5oIgogI2lu
Y2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkBAIC00MCw3
ICs0MSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+IHsKICAgICAg
ICAgY2FzZSBFZGdlTW9kZVR5cGU6OldyYXA6CiAgICAgICAgICAgICByZXR1cm4gIndyYXAiX3M7
CiAgICAgICAgIGNhc2UgRWRnZU1vZGVUeXBlOjpOb25lOgotICAgICAgICAgICAgcmV0dXJuICJu
b25lIl9zOworICAgICAgICAgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUzLDcgKzU0LDcgQEAgc3RydWN0IFNWR1By
b3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlwZT4gewogICAgICAgICAgICAgcmV0dXJuIEVkZ2VNb2Rl
VHlwZTo6RHVwbGljYXRlOwogICAgICAgICBpZiAodmFsdWUgPT0gIndyYXAiKQogICAgICAgICAg
ICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6V3JhcDsKLSAgICAgICAgaWYgKHZhbHVlID09ICJub25l
IikKKyAgICAgICAgaWYgKHZhbHVlID09IG5vbmVBdG9tKCkpCiAgICAgICAgICAgICByZXR1cm4g
RWRnZU1vZGVUeXBlOjpOb25lOwogICAgICAgICByZXR1cm4gRWRnZU1vZGVUeXBlOjpVbmtub3du
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5cGVzLmgKaW5kZXggMDY3MDM0MTVlODk5
NWQ4ZWI0NTk4MDMwYjdiMzBmYzE0OWI5OGQwMC4uYWY5NjNjMjhkMDZkNTlmYzQ3Nzc4MjBjMDVk
MzUzNDZiMzdkZDFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5cGVzLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0
cy5oIgogCkBAIC03NSwxMSArNzYsNiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFy
a2VyVW5pdHNUeXBlPiB7CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdNYXJrZXJPcmllbnRUeXBlPiB7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBhdXRvU3RyaW5n
KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGF1
dG9TdHJpbmcgPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXV0byIpOwotICAgICAgICByZXR1
cm4gYXV0b1N0cmluZzsKLSAgICB9CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBhdXRvU3RhcnRS
ZXZlcnNlU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGF1dG9TdGFydFJldmVyc2VTdHJpbmcgPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1Q
TCgiYXV0by1zdGFydC1yZXZlcnNlIik7CkBAIC04OCw3ICs4NCw3IEBAIHN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhp
Z2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJPcmllbnRBbmdsZTsgfQogICAgIHN0
YXRpYyBTVkdNYXJrZXJPcmllbnRUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgewotICAgICAgICBpZiAoc3RyaW5nID09IGF1dG9TdHJpbmcoKSkKKyAgICAgICAgaWYg
KHN0cmluZyA9PSBhdXRvQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVu
dEF1dG87CiAgICAgICAgIGlmIChzdHJpbmcgPT0gYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVudEF1dG9TdGFydFJldmVyc2U7CkBAIC05
Nyw3ICs5Myw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBl
PiB7CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdNYXJrZXJPcmllbnRUeXBlIHR5cGUp
CiAgICAgewogICAgICAgICBpZiAodHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBdXRvKQotICAgICAg
ICAgICAgcmV0dXJuIGF1dG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRvQXRvbSgp
OwogICAgICAgICBpZiAodHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlKQog
ICAgICAgICAgICAgcmV0dXJuIGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKTsKICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCmlu
ZGV4IDA4Y2Y0YjAzYzI1MTViNjIwODAwMDU3MjVmMDIyOTIzYjRkNmI3YWIuLjZhMDMxYjBiYzRi
MjRhNWRiNzQ4MzhlN2FmMDA1ZDk1MTA2YzQ3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50
LmgiCiAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTY1LDkgKzY2LDggQEAgdm9pZCBTVkdT
dHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiAKIGNvbnN0IEF0b21T
dHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBkZWZhdWx0VmFsdWUoInRleHQv
Y3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGNvbnN0IEF0b21T
dHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnR5cGVBdHRyKTsKLSAgICByZXR1cm4g
bi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CisgICAgYXV0byYgdHlwZVZhbHVl
ID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7CisgICAgcmV0dXJuIHR5cGVWYWx1
ZS5pc051bGwoKSA/IGNzc0NvbnRlbnRUeXBlQXRvbSgpIDogdHlwZVZhbHVlOwogfQogCiB2b2lk
IFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCmluZGV4IDZhMjI0OGM3Zjg1YTYwNDQ0ZDY3
ZGI3YTkxYTdkOGViOWJjYzFmMDAuLjVkY2VkZTMxMzMzZTAyODNjMmNmNjAwMDI5OThlNWMxYmMz
NTczMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKQEAgLTIwLDYg
KzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCkBAIC03Nyw3ICs3OCw3IEBAIHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiB7CiAgICAgICAgIGNh
c2UgU1ZHVGV4dFBhdGhTcGFjaW5nVW5rbm93bjoKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogICAgICAgICBjYXNlIFNWR1RleHRQYXRoU3BhY2luZ0F1dG86Ci0gICAgICAgICAg
ICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICAg
ICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdDoKICAgICAgICAgICAgIHJldHVybiAiZXhh
Y3QiX3M7CiAgICAgICAgIH0KQEAgLTg4LDcgKzg5LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+IHsKIAogICAgIHN0YXRpYyBTVkdUZXh0UGF0aFNw
YWNpbmdUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IGlmICh2YWx1ZSA9PSAiYXV0byIpCisgICAgICAgIGlmICh2YWx1ZSA9PSBhdXRvQXRvbSgpKQog
ICAgICAgICAgICAgcmV0dXJuIFNWR1RleHRQYXRoU3BhY2luZ0F1dG87CiAgICAgICAgIGlmICh2
YWx1ZSA9PSAiZXhhY3QiKQogICAgICAgICAgICAgcmV0dXJuIFNWR1RleHRQYXRoU3BhY2luZ0V4
YWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNw
cAppbmRleCAxNmVhYjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3YWQ2ZTE5N2QzNjI1Li40Y2M1ZGQ3
MjNiOGJhOTE4YzFlNTY5NWYyODY3Y2NmYzdlOWVjNmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNjgsNiArNjgsMTIgQEAgc3Rh
dGljIFNNSUxFdmVudFNlbmRlciYgc21pbEVuZEV2ZW50U2VuZGVyKCkKICAgICByZXR1cm4gc2Vu
ZGVyOwogfQogCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW5kZWZpbml0ZUF0b20oKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5k
ZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBpbmRlZmluaXRlVmFsdWU7Cit9CisKIC8vIFRoaXMgaXMgdXNlZCBm
b3IgZHVyYXRpb24gdHlwZSB0aW1lIHZhbHVlcyB0aGF0IGNhbid0IGJlIG5lZ2F0aXZlLgogc3Rh
dGljIGNvbnN0IGRvdWJsZSBpbnZhbGlkQ2FjaGVkVGltZSA9IC0xLjsKICAgICAKQEAgLTMzOCw5
ICszNDQsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKFN0cmlu
Z1ZpZXcgZGF0YSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAKICAg
ICBhdXRvIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKLQotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJp
bmRlZmluaXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmIChw
YXJzZSA9PSBpbmRlZmluaXRlVmFsdWUuZ2V0KCkpCisgICAgaWYgKHBhcnNlID09IGluZGVmaW5p
dGVBdG9tKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogCiAgICAg
ZG91YmxlIHJlc3VsdCA9IDA7CkBAIC02OTgsOCArNzAyLDcgQEAgU01JTFRpbWUgU1ZHU01JTEVs
ZW1lbnQ6OnJlcGVhdENvdW50KCkgY29uc3QKICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUoImluZGVm
aW5pdGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaWYgKHZhbHVl
ID09IGluZGVmaW5pdGVWYWx1ZSkKKyAgICBpZiAodmFsdWUgPT0gaW5kZWZpbml0ZUF0b20oKSkK
ICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAgICAgYm9vbCBvazsKICAg
ICBkb3VibGUgcmVzdWx0ID0gdmFsdWUuc3RyaW5nKCkudG9Eb3VibGUoJm9rKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4IGU3
NzY1YWNjZTg0ODMzMTVkM2I3NDQyYzgwMDlkOTNiZDkyNzI0MGIuLjYwYTY5OTBiMmRkNTA4YTc5
NzVjZWMxMzYxZTZhOWQ3ZGIwMWYyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxp
emF0aW9uLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBhMTZkZmM0YTIyZGIwMjM1NjIw
YTdiOWY3ZTljNzhkMTk3YmI5MDc2Li42ZGFkMmQ0ZmUzODlhYmVkZTkzYzlmNjQwN2JiNmE5NmE2
NGVjYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0xMTQsNiArMTE1LDcgQEAgU2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBj
b250ZXh0RGF0YSwKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF0b21TdHJp
bmc6OmluaXQoKTsKKyAgICBpbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIH0KIAogU2Vy
dmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJlYWQoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhWYWx1ZS5jcHAKaW5kZXggZDIyOTU0YmJhM2YxY2UwYjhhMWRlOTZiYTYwMjE2
OTNmNDgxMzM5MS4uYzMwNWJjMGI1ZTI3ODQ3NWFiYmMyNDc2YjhiMjIyY2Y0OWViZGMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlhQYXRoVmFsdWUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21T
dHJpbmdzLmgiCiAjaW5jbHVkZSAiWFBhdGhFeHByZXNzaW9uTm9kZS5oIgogI2luY2x1ZGUgIlhQ
YXRoVXRpbC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmNwcAppbmRleCAxNjU4ZmMwMDBkMWY3ODA3NTI5NmU4ODMwNjUxOTQxZjYyNmMyMGM2
Li43YWZkODkzOGZjNDQ2ODc2MGE3ODk3MDg1NTZkZTZlYTMzMjljZTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29t
bW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lbW9yeVJlbGVhc2UuaD4KQEAgLTIyNyw2ICsyMjgsNyBAQCB2b2lkIEdQVVBy
b2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQVVByb2Nlc3M6
OmluaXRpYWxpemVHUFVQcm9jZXNzOiIsIHRoaXMpOwogICAgIFdURjo6VGhyZWFkOjpzZXRDdXJy
ZW50VGhyZWFkSXNVc2VySW5pdGlhdGVkKCk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAg
IFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgYXV0byYgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKTsK
ICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbdGhpc10gKENy
aXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1MzBjYmNkNWEw
NmUwNDJkYjY2NWE1MDhhMGM2YjBjZDRkMTgxZjE5Li5kODFhZDg5MTJlMmFjYTZkOTdmYzI0ODM4
ZWY1NDQ1ZWQ5OTExMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21T
dHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ROUy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC0zMTgsNiArMzE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKIAogICAgIFdURjo6
VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW5pdGlhdGVkKCk7CiAgICAgQXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
CiAgICAgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciA9IHBhcmFtZXRlcnMuc2hvdWxk
U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXI7CiAgICAgaWYgKCFtX3N1cHByZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQppbmRleCBjMjgwY2ZmZTM5ODNmZmM5ZGZjYzVmNTE2
NGIzNGM2NDRiMzJhZjZmLi5iNGQ5MTIxYmNiZTczYzdkZDk0NWNiMTA3ZGEwNmFkMGIyMjIyNWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFs
aXplQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYktpdDJJbml0aWFsaXpl
LmgiCiAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUpJVE9wZXJhdGlvbnMuaD4KICNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0dlbmVy
YXRlUHJvZmlsZXMuaD4KQEAgLTUwLDYgKzUxLDcgQEAgc3RhdGljIHZvaWQgcnVuSW5pdGlhbGl6
YXRpb25Db2RlKHZvaWQqID0gbnVsbHB0cikKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoW05TVGhyZWFkIGlzTWFpblRocmVhZF0sICJJbml0aWFsaXplV2ViS2l0MiBzaG91bGQgYmUg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCIpOwogCiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwor
ICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgSW5pdFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCmluZGV4IGU1
YzA5NmYyOGQyOGFiZmY0M2M5MzcxNGY2NWRlN2JmMzJhMzJjZGEuLjAzZmNjMTExOWZhYjJhYjFj
YjA5N2RiMjgwY2UxODE5OGM3NWFkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYktpdDJJbml0aWFsaXplLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLaXQy
SW5pdGlhbGl6ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkxvZ0luaXRpYWxp
emF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGluZy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSklUT3Bl
cmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmF0ZVByb2ZpbGVzLmg+CkBAIC00NSw2ICs0
Niw3IEBAIHZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQogICAgIEpTQzo6aW5pdGlhbGl6ZSgpOwog
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7
CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiAKICAgICBXVEY6
OlJlZkNvdW50ZWRCYXNlOjplbmFibGVUaHJlYWRpbmdDaGVja3NHbG9iYWxseSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcAppbmRleCA3ZjY4ZmQzMjM2N2U5NWI5N2M1MzUzZmYyOGJjY2MxZDlmMTU4OGQ1Li43
N2I5YTVlYTNiZWVhNTVkZDFhNjcyMDhhMTkwMDgyNGE5MDlmNzlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVu
c2lvblBhcnNlci5oPgpAQCAtNTQ2LDYgKzU0Nyw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3Rv
cmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBXVEY6
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBdG9tU3RyaW5nOjppbml0
KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiAgICAgV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIAogICAgIGF1dG8gcGFyc2VkUnVsZXMg
PSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cGFyc2VSdWxlTGlzdChqc29uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcAppbmRleCA4NzU1NDhiYzRmYTVj
NjJjZGIyMDNhY2E5ZTFjNWNiN2JlNTI0NWJhLi5mNmE3NzZmYjUwYjZhYzBhYTMwNzM3ZTY5N2I5
YjE2ZTA4NDk0OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRH
cmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0R3JhcGhpY3Mu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisj
aW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9udENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnREZXNjcmlwdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CkBAIC00Nyw2ICs0OCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIEZvbnRDYXNjYWRlIG1ha2VGb250KGNvbnN0IFdlYkZv
bnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwor
ICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgU3RyaW5n
IGZvbnRGYW1pbHlTdHJpbmcoZGVzY3JpcHRpb24uZmFtaWx5LCBkZXNjcmlwdGlvbi5mYW1pbHlM
ZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZDVlNmMxODdjN2Q4NTA5MTZkMTM2YzkxYmYwZTg1MjU1M2JkY2M1YS4uZjhiZjIwNWJk
MGZjODAzNGQ3YTkwYWNmYjI5ZmMyOTA5NGYwMTk3OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTIwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBnbG9iYWwgQXRv
bVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Om1ha2VCYWNrZW5kKToKKwogMjAyMi0wNC0yMCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRu
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3MgcmVjZW50IGRlcHJlY2F0aW9uIHdhcm5p
bmdzIG9uIGlPUy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDdiNjg2OTdlNjRmZWRmZTg2OWM3MTg5OGJk
ZjNlM2U0YmI2MjlkNDkuLjdjZjZiNzI1NTFmYTQzNzRhN2ExMDM2MzliZDJlZWFjZTdkZmVlNmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0
ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25zLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlV0aWxpdGllcy5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NvbWJpbmVkVVJMRmlsdGVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29t
bW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgpAQCAtMjEzLDYgKzIxNCw3
IEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHJlcXVlc3RJblRvcEFuZEZyYW1lVVJMcyhBU0NJ
SUxpdGVyYWwgdXJsLCBBU0NJSUxpdGVyYWwKIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQgbWFrZUJhY2tlbmQoU3RyaW5nJiYganNvbikKIHsKICAgICBBdG9tU3Ry
aW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7
CiAgICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoanNvbikpOwogICAgIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKICAgICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24o
InRlc3RGaWx0ZXIiX3MsIFdURk1vdmUoZXh0ZW5zaW9uKSwgeyB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458097</attachid>
            <date>2022-04-21 15:16:48 -0700</date>
            <delta_ts>2022-04-21 17:01:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220421151647.patch</filename>
            <type>text/plain</type>
            <size>125973</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU0OTc5ZjY2NWJkYmYxZmM1NDgyMDVm
OTE5NDFkZjI5NWM4ZmQ4NzkuLmQyOWFiNWM4YjdmMzM4YzA5MTBjOTZjYjUyNDcxNzczNTIwYzYy
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjEgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyOTI4NjMpOiBzdGQ6OnJlbW92ZV9jdnJlZl90IG5vdCBkZWZpbmVkIGluIEdDQzk8CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYWE4MGQ0NjI1MzM1ZDRjMzZjM2MwMmM0ODA0OTAxZTU5YjJjMTAzZC4uMWUxNGI0
ZGNkOWFmZGM2ZWRhNDQ1NTViZjc4ODI0Nzg5NjIyNDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyNiBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBwcm9t
b3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldENvbnRlbnRIaW50KToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25FZmZlY3Q6OmdldFRpbWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyk6CisgICAgICAgICogYW5pbWF0aW9uL0Vm
ZmVjdFRpbWluZy5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmlzVmFs
aWRDU1NTZWxlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAg
KiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmRpc3BsYXkg
Y29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUZlYXR1cmVOYW1lczo6aW5pdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RGF0YUZyb21JdGVtTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRlc2lnbk1vZGUgY29uc3QpOgor
ICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZENTU0NvbnRlbnRUeXBlKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvRm9udFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemF0aW9uRm9yQ1NTKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1v
dmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6cHJvcGVydHlWYWx1
ZUZvck5vZGUpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9y
RWxlbWVudCk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfZW50ZXJFbGVtZW50KToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1U
b0ZyYWdtZW50KToKKyAgICAgICAgKiBodG1sL0F1dG9jYXBpdGFsaXplLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmluZ0ZvckF1dG9jYXBpdGFsaXplVHlwZSk6CisgICAgICAgICogaHRtbC9B
dXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21I
VE1MRm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c2F2
ZUZvcm1Db250cm9sU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJs
ZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9FbnRlcktleUhpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlVmFsdWVG
b3JFbnRlcktleUhpbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5
RnVuY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1ZhbGlk
RGlyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRBdXRvY29ycmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGFpbnRleHRPbmx5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICog
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50OjphdXRvY29tcGxldGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OmxvYWRpbmdGb3JC
aW5kaW5ncyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncyBjb25zdCk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnByZWxvYWQgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0aW9uU3Ry
aW5nKToKKyAgICAgICAgKiBodG1sL0lucHV0TW9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dE1vZGVOYW1lczo6bm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1vZGVOYW1lczo6
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1vZGVOYW1lczo6dGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRN
b2RlTmFtZXM6OmVtYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjpzZWFy
Y2gpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OmVtYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6c2VhcmNoKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzdWJtaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGVOYW1lczo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dXJs
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5l
clRleHRFbGVtZW50RWRpdGFiaWxpdHlJbXBsKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aXNWYWxpZEtpbmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjptYWluS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCk6IERl
bGV0ZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kS2V5d29yZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6cG9zaXRpb25BbGlnbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWVFRDdWU6OnNldFBvc2l0aW9uQWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjp0b0pTT04gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0tleXdvcmQpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrOjppc1ZhbGlkS2luZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRv
Y3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlRW5jb2RpbmdUeXBlKToK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVz
b3VyY2VUb0FyY2hpdmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hlZENT
U1N0eWxlU2hlZXQpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZEF1ZGlvVHJhY2tLaW5kRGlzcGxheU5hbWVJZk5lZWRlZCk6
CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFNvdXJjZTo6RXZlbnRTb3VyY2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2Vy
aWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkpOgorICAgICAgICAq
IHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1p
bmc6OmluaXRpYWxpemVOYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmlu
Z3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3Ry
aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjphbHRlcm5hdGl2ZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6YXV0
b0F0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y2FwdGlvbnNBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbW1lbnRhcnlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc0NvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjplYWdlckF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZW1h
aWxBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmZhbHNlQXRvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpsYXp5QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjptYWluQXRvbSk6CisgICAgICAgIChXZWJD
b3JlOjpub25lQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpvZmZBdG9tKToKKyAgICAgICAgKFdl
YkNvcmU6Om9uQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpwbGFpbnRleHRPbmx5QXRvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXNldEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJtaXRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnN1
YnRpdGxlc0F0b20pOgorICAgICAgICAoV2ViQ29yZTo6dGVsQXRvbSk6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UGxhaW5Db250ZW50VHlwZUF0
b20pOgorICAgICAgICAoV2ViQ29yZTo6dHJ1ZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6dXJs
QXRvbSk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0aWFs
TmFtZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW06CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VR
dWlja0xvb2tGb3JNSU1FVHlwZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6YW5pbWF0aW9uTGlzdENvbnRhaW5zTmV3bHlWYWxp
ZEFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OnVwZGF0ZUNT
U0FuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRl
TW9kZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3VtQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25F
bGVtZW50Ojppc0FkZGl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlv
bkVsZW1lbnQ6OmlzQWNjdW11bGF0ZWQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5
cGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxFZGdl
TW9kZVR5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyVHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+
Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR01h
cmtlck9yaWVudFR5cGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0
eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6YXV0b1N0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHls
ZUVsZW1lbnQ6OnR5cGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhY2lu
Z1R5cGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxT
VkdUZXh0UGF0aFNwYWNpbmdUeXBlPjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRlZmluaXRlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCBjb25zdCk6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1fbm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiB4bWwvWFBhdGhWYWx1
ZS5jcHA6CisKIDIwMjItMDQtMjEgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4K
IAogICAgICAgICBPbmx5IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGV7Q2hpbGRyZW4sTm9kZX0gb25j
ZSB3aGVuIHByb2Nlc3Npbmcgbm90aWZpY2F0aW9ucyBpbiBBWE9iamVjdENhY2hlOjp1cGRhdGVJ
c29sYXRlZFRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGI3MDAwYTI2YThiYzVhMjc4YTcwYWQyZDg1MGYyNThk
YTZmNmVjMy4uZjQwMzUyZTIyODgyY2Y1M2QyYzRmNzE5OTg2M2E5ZGIwZWIyZjY2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhl
YWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpydW5Jbml0aWFsaXph
dGlvbkNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVM
aXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QpOgorCiAyMDIyLTA0LTIxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgaXMgYnJva2VuIG9uIHNo
aXBwaW5nIG1hY09TIGR1ZSB0byBUQkEgYW5ub3RhdGlvbnMgcmVwbGFjZW1lbnQgaW4gQVBJIGhl
YWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhMjA3OWYzYWI1ZjZhOGU4YTg1
YmI1MTY5OGJmMWNlNDI3ZTBkOTM0Li5lYWU2NzE0M2NmZTYwYWYxNDExYTI3NTkzMjczMDZiMTNh
MjQxNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjItMDQtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1vbiBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRH
cmFwaGljcy5jcHA6CisgICAgICAgIChtYWtlRm9udCk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZzo6dHJ1bmNhdGUo
KSBhbmQgdXNlIFN0cmluZzo6bGVmdCgpIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbVN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
Y3BwCmluZGV4IDkzMGZjYjI5OTc2ODQ4ZDMxOGZjYmUxMjgzNGE5ZjRiM2VjNWE4MDMuLjU0ZTVi
MTU2YTIxYmViMjA5NTY0ODU1NGNhN2M0ZmEwN2NhM2ExY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcApAQCAtMTM3LDggKzEzNyw2IEBAIFdURl9FWFBPUlRfUFJJVkFURSBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZW1wdHlBdG9tRGF0YTsKIFdURl9FWFBPUlRf
UFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN0
YXJBdG9tRGF0YTsKIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sbnNBdG9tRGF0
YTsKLVdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsKLVdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFk
TGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIHZv
aWQgQXRvbVN0cmluZzo6aW5pdCgpCiB7CkBAIC0xNTksOCArMTU3LDYgQEAgdm9pZCBBdG9tU3Ry
aW5nOjppbml0KCkKICAgICAgICAgc3RhckF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3ND
aGVjaygiKiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1s
QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJ4bWwiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHhtbG5zQXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCJ4bWxucyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICAgICAgdHJ1ZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidHJ1
ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgZmFsc2VBdG9t
RGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CmluZGV4IDc2MzExNWE2NjY3Yjg4ODNiZTVjYmNlM2JlYmY0NTQ2MDMxMzU5NWIuLjBhZGY1MjIz
YmI2MDI5YzNkZTk4OWM2ODMxNzQwMTY2ZjA2YzcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCkBAIC0yOTMsMTYgKzI5MywxMiBAQCBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRhOwogZXh0ZXJuIFdU
Rl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IHN0YXJBdG9tRGF0YTsKIGV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB4bWxBdG9tRGF0YTsKIGV4dGVy
biBXVEZfRVhQT1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiB4bWxuc0F0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsK
LWV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOwogCiBpbmxpbmUgY29uc3QgQXRvbVN0cmlu
ZyYgbnVsbEF0b20oKSB7IHJldHVybiBudWxsQXRvbURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBlbXB0eUF0b20oKSB7IHJldHVybiBlbXB0eUF0b21EYXRhLmdldCgpOyB9
CiBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgc3RhckF0b20oKSB7IHJldHVybiBzdGFyQXRvbURh
dGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxBdG9tKCkgeyByZXR1cm4g
eG1sQXRvbURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxuc0F0b20o
KSB7IHJldHVybiB4bWxuc0F0b21EYXRhLmdldCgpOyB9Ci1pbmxpbmUgY29uc3QgQXRvbVN0cmlu
ZyYgdHJ1ZUF0b20oKSB7IHJldHVybiB0cnVlQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBmYWxzZUF0b20oKSB7IHJldHVybiBmYWxzZUF0b21EYXRhLmdldCgpOyB9
CiAKIGlubGluZSBBdG9tU3RyaW5nIEF0b21TdHJpbmc6OmZyb21VVEY4KGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7CkBAIC0zNjIsOSArMzU4LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PEF0b21TdHJpbmc+IHsKIHVz
aW5nIFdURjo6QXRvbVN0cmluZzsKIHVzaW5nIFdURjo6bnVsbEF0b207CiB1c2luZyBXVEY6OmVt
cHR5QXRvbTsKLXVzaW5nIFdURjo6ZmFsc2VBdG9tOwogdXNpbmcgV1RGOjpzdGFyQXRvbTsKLXVz
aW5nIFdURjo6dHJ1ZUF0b207CiB1c2luZyBXVEY6OnhtbEF0b207CiB1c2luZyBXVEY6OnhtbG5z
QXRvbTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZjhiYTk5NTc5ZTY1NzM3MDEwY2Q0Nzc0YjNl
NDljMzRkYjkxM2NkMS4uNWE4OWY5ODc0N2IyZTAwYmM5MDBhY2M5N2U0NzIwNGQ5MTQ2MDU1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQwLDYgKzEyNDAsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vQ1BVTW9uaXRvci5oCiAgICAgcGxh
dGZvcm0vQ29sb3JDaG9vc2VyLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXJDbGllbnQuaAor
ICAgIHBsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmgKICAgICBwbGF0Zm9ybS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmgKICAgICBwbGF0
Zm9ybS9Db250ZXh0TWVudS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAppbmRleCA0OWYzYjMwNzU3MjExNTc3Nzc4NTljMGJh
YjE2MDFkMGNmOGU5NWU5Li40NjljYzNhZGI1ZmJmN2IzODE0OTJkM2VjZDQyMTkyNmNkY2ZkZmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNsaXBib2FyZEltYWdl
UmVhZGVyLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjM0LDcgKzIzNSw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpn
ZXRUeXBlKENsaXBib2FyZEl0ZW0mIGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVy
cmVkUHJvCiAgICAgICAgIHJlc3VsdEFzU3RyaW5nID0gYWN0aXZlUGFzdGVib2FyZCgpLnJlYWRV
UkwoaXRlbUluZGV4LCB0aXRsZSkuc3RyaW5nKCk7CiAgICAgfQogCi0gICAgaWYgKHR5cGUgPT0g
InRleHQvcGxhaW4iX3MpIHsKKyAgICBpZiAodHlwZSA9PSB0ZXh0UGxhaW5Db250ZW50VHlwZUF0
b20oKSkgewogICAgICAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHBsYWluVGV4dFJlYWRlcjsKICAg
ICAgICAgYWN0aXZlUGFzdGVib2FyZCgpLnJlYWQocGxhaW5UZXh0UmVhZGVyLCBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5OjpJZ25vcmVVUkwsIGl0ZW1JbmRleCk7CiAgICAgICAgIHJlc3VsdEFz
U3RyaW5nID0gV1RGTW92ZShwbGFpblRleHRSZWFkZXIudGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRl
eCBjOWI3ZmMxZDUyZmE2ZmEyNDYzZDUwZjU2Yjg5NGViNWU2ZmI1MDQxLi44M2JmOWU1MDE2M2Y0
ZTljY2ExYjM0YWEzMGE0NWEyNGE4NmI0YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0xMzYsNyArMTM3LDYgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgTWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQoKSBjb25zdAogICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3BlZWNoSGludCgic3BlZWNo
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbXVzaWNIaW50KCJtdXNpYyIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRldGFpbEhpbnQoImRldGFpbCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRIaW50KCJ0ZXh0IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW90aW9uSGludCgibW90aW9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgc3dpdGNoIChtX3ByaXZhdGUtPmNvbnRlbnRIaW50
KCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRy
YWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6SGludFZhbHVlOjpEZXRhaWw6CiAgICAgICAgIHJldHVybiBkZXRhaWxIaW50OwogICAgIGNh
c2UgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OkhpbnRWYWx1ZTo6VGV4dDoKLSAgICAgICAgcmV0
dXJuIHRleHRIaW50OworICAgICAgICByZXR1cm4gdGV4dEF0b20oKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAgICAgfQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQoY29uc3QgU3RyaW5nJiBoaW50VmFs
dWUpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFs
dWU6OkRldGFpbDsKICAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJtb3Rpb24iKQogICAg
ICAgICAgICAgdmFsdWUgPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpNb3Rp
b247Ci0gICAgICAgIGVsc2UgaWYgKGhpbnRWYWx1ZSA9PSAidGV4dCIpCisgICAgICAgIGVsc2Ug
aWYgKGhpbnRWYWx1ZSA9PSB0ZXh0QXRvbSgpKQogICAgICAgICAgICAgdmFsdWUgPSBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0OwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhmYzAxMTMzYmNj
ZmUxZjJjZDk3MGU4OWUuLjVkMjMxNmZhYzczOTMxMGM1ODBkYjZiZTVkYmVmNDFhOTkxYWZjMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xODY3LDYgKzE4NjcsNyBAQCBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKK3Bs
YXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcAogcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCiBw
bGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5OGQ4ZWVhMmFmZDg1ZDE1ODYwNjZmYjNjNzA5MmI3NjNiNWU3MjkxLi4wZjhlZTA3YzFkZDQz
ZjFkZDNkM2JlZTBkZDUzMmVlNDA0YjUyMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzMyLDYgKzI3MzIsNyBAQAogCQk4
MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUEyRjJDMUUyMDRBNkQwMDM5
MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVEMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JS
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi87IH07CiAJCTgz
OUJFNkQ1MjRGNTg3NjIwMDRERjUwRiAvKiBJSVJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUJFNkQyMjRGNTg3NTUwMDRERjUwRiAvKiBJ
SVJGaWx0ZXIuaCAqLzsgfTsKKwkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0
b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0EyQUJEQjI0RDg2
REUwMDBFMkQ3M0QgLyogRGVsYXlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0EyQUJEODI0RDg2REM2MDBFMkQ3M0QgLyogRGVsYXlPcHRp
b25zLmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNBQ0Qw
MTMyNTIyOUUxMDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0FDRDAxMDI1MjI5RTA0MDAwRDEyNEUgLyog
V29ya2xldE9wdGlvbnMuaCAqLzsgfTsKQEAgLTEyMzA0LDYgKzEyMzA1LDggQEAKIAkJODM5QUFG
RUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzOUJFNkQyMjRGNTg3NTUwMDRERjUwRiAvKiBJSVJGaWx0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUlSRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzOUJFNkQ0MjRGNTg3NTUwMDRERjUwRiAvKiBJSVJGaWx0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUlSRmlsdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM5QzY5Q0QyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0
b21TdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1v
bkF0b21TdHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM5QzY5Q0Uy
ODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1vbkF0b21TdHJpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQTJBQkQ4MjREODZEQzYwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVsYXlPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzQTJBQkRBMjREODZEQzcwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERlbGF5
T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZE
N0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzAxNjksNiArMzAxNzIsOCBAQAogCQkJCUMzMzBBMjIxMTNFQzE5
NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLywKIAkJCQlDMzdDREVCQzE0OUVGMjAzMDA0
MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggKi8sCiAJCQkJQkNDOENGQ0EwOTg2Q0QyNDAw
MTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiAqLywKKwkJCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovLAorCQkJCTgzOUM2OUNFMjgxMEQxMUMwMEU2
OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5oICovLAogCQkJCUExNDA5MEZDMUFBNTFFNDgwMDkx
MTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCAqLywKIAkJCQk0MUQwMTVDOTBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovLAogCQkJCTQxRDAxNUM4MEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovLApAQCAtMzQwNjcsNiArMzQwNzIsNyBAQAog
CQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5
MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM5QzY5RDAyODEwRDExRDAw
RTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRG
QzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYwRjMyQjFERkJCMTA3MDA0MTZENkMgLyogQ29t
bW9uVk0uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uRWZmZWN0LmNwcAppbmRleCA0MzFmZGVhMTU3MjYyNzJhMmI2OGY5NzRiMjZlMGFlNmE1NWZj
MGFhLi4wN2UxOTgzNmQ3MGQxZGIxNTNlODg2ZjE4MjdmNmI5YmYwZTFjM2Y5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdC5oIgogCiAjaW5jbHVkZSAiQ1NTQW5pbWF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJGaWxsTW9kZS5o
IgogI2luY2x1ZGUgIkpTQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCIKICNpbmNsdWRlICJXZWJBbmlt
YXRpb24uaCIKQEAgLTY5LDcgKzcwLDcgQEAgRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6
Z2V0VGltaW5nKCkgY29uc3QKICAgICB0aW1pbmcuaXRlcmF0aW9uU3RhcnQgPSBtX2l0ZXJhdGlv
blN0YXJ0OwogICAgIHRpbWluZy5pdGVyYXRpb25zID0gbV9pdGVyYXRpb25zOwogICAgIGlmICht
X2l0ZXJhdGlvbkR1cmF0aW9uID09IDBfcykKLSAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gImF1
dG8iX3M7CisgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IGF1dG9BdG9tKCk7CiAgICAgZWxzZQog
ICAgICAgICB0aW1pbmcuZHVyYXRpb24gPSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSht
X2l0ZXJhdGlvbkR1cmF0aW9uKTsKICAgICB0aW1pbmcuZGlyZWN0aW9uID0gbV9kaXJlY3Rpb247
CkBAIC0zOTksNyArNDAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQW5pbWF0aW9uRWZmZWN0Ojp1
cGRhdGVUaW1pbmcoc3RkOjpvcHRpb25hbDxPcHRpb25hbEVmZmVjdFRpbWkKICAgICAgICAgICAg
IGlmIChkdXJhdGlvbkFzRG91YmxlIDwgMCB8fCBzdGQ6OmlzbmFuKGR1cmF0aW9uQXNEb3VibGUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdGQ6OmdldDxTdHJpbmc+KHRpbWluZy0+ZHVy
YXRpb24udmFsdWUoKSkgIT0gImF1dG8iKQorICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSBhdXRvQXRvbSgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcuaAppbmRleCAyMTA3M2ZhNDczMDNmNjRm
ZDJiYTI2MTlhZTkxODdmNTgxNTk1MDZlLi5lOGMwZjFiZDhkOTU5MjE0NmMxMTNlNjQzNDU5YWMx
MGRkYmZkOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0VGlt
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmlu
Z3MuaCIKICNpbmNsdWRlICJGaWxsTW9kZS5oIgogI2luY2x1ZGUgIlBsYXliYWNrRGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTMzLDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IEVmZmVjdFRpbWluZyB7Ci0gICAgc3RkOjp2YXJpYW50PGRvdWJsZSwg
U3RyaW5nPiBkdXJhdGlvbiB7ICJhdXRvIl9zIH07CisgICAgc3RkOjp2YXJpYW50PGRvdWJsZSwg
U3RyaW5nPiBkdXJhdGlvbiB7IGF1dG9BdG9tKCkgfTsKICAgICBkb3VibGUgZGVsYXkgeyAwIH07
CiAgICAgZG91YmxlIGVuZERlbGF5IHsgMCB9OwogICAgIGRvdWJsZSBpdGVyYXRpb25TdGFydCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggMDhmYTQ2N2M4YTJlMzVlODAxOTM3Nzkw
Y2YyZDkwZmJiOGJlY2YwZi4uNDhjMjczMmIxMzBhYmY0YTQwYTkwZGI2NmIyNjRlOGVhYjQzYmRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvbkVycm9yLmgiCiAj
aW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuaCIKQEAgLTIwNCw2ICsyMDUsNyBAQCBib29sIGlzVmFsaWRDU1NTZWxlY3Rv
cihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBDU1NQYXJzZXJDb250ZXh0IGNv
bnRleHQoSFRNTFF1aXJrc01vZGUpOwogICAgIENTU1BhcnNlciBwYXJzZXIoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBiNGYzZDg3OGQ3NWFhZTdjMTNjNmM1YjM3
ZjExY2EzNzk5ZjYxZDMwLi4zNDY3Nzk2ZmIzYTFmYzg3N2NlOGEwMjBkOTU0ZTQ0NWE4OGVjN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVl
dC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAg
IENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2Rl
LCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNo
ZWV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAKICAgICBib29sIGlzQ1NTU3R5bGVT
aGVldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBTdHJpbmcgdHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJ0ZXh0L2NzcyJfczsgfQorICAgIFN0cmluZyB0eXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gY3NzQ29udGVudFR5cGVBdG9tKCk7IH0KIAogICAgIFJlZjxTdHls
ZVNoZWV0Q29udGVudHM+IG1fY29udGVudHM7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVl
dCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCA0ZDUxMWI1ZTY4NTQxMzA1
ZDQwYzFjMzNiNzkwOWE2NTA2NTU2ZjYyLi5kOTViMDk4NzNkZGU4YTdiN2IxY2E3YmI0ZjVmMzZk
MDAwMDIzNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBT
dHJpbmcgRm9udEZhY2U6OmRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBjb25zdCBh
dXRvJiBsb2FkaW5nQmVoYXZpb3JXcmFwcGVkID0gbV9iYWNraW5nLT5sb2FkaW5nQmVoYXZpb3Io
KTsKICAgICBpZiAoIWxvYWRpbmdCZWhhdmlvcldyYXBwZWQpCi0gICAgICAgIHJldHVybiAiYXV0
byJfczsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobG9hZGluZ0JlaGF2aW9yV3JhcHBlZC52YWx1ZSgpKS0+
Y3NzVGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApp
bmRleCAyZjViOGIwNDczOTVhMmNiZDc1NWFjMWNmNTM0YmZkY2VmNTcxMDU3Li42ZDUwOTE5ZDk1
MTZhYjc1NzRkYTA1ZjIxYjBlMDRkNjY5NzAwZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YUZlYXR1cmVOYW1lcy5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5h
bWVzIHsKIApAQCAtMzMsNiArMzUsNyBAQCB2b2lkIGluaXQoKQogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQXRvbVN0cmluZzo6
aW5pdCgpOworICAgICAgICBpbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNkZWZpbmUg
SU5JVElBTElaRV9HTE9CQUwobmFtZSwgc3RyaW5nKSBuYW1lLmNvbnN0cnVjdChzdHJpbmcsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgQ1NTX01FRElBUVVFUllf
TkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKElOSVRJQUxJWkVfR0xPQkFMKQogI3VuZGVmIElO
SVRJQUxJWkVfR0xPQkFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDBlZDJi
ZWQ5NjIzMjA0ZjlhMGJlYjlmY2IxNWExMGRkN2U1ZDhmMzkuLjY2NmJjYzc5NjU4YzlkZWRmMTli
Mjk1Nzk1NDNjOGJjYjYzNjkwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZEltYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJEYXRhVHJhbnNmZXJJdGVtLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbUxpc3Qu
aCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgc3Rh
dGljIFN0cmluZyBub3JtYWxpemVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIFN0cmlu
ZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHR5cGUp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInRl
eHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKLSAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIl9zOworICAgICAgICByZXR1cm4gdGV4dFBsYWluQ29udGVudFR5
cGVBdG9tKCk7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlw
ZS5zdGFydHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJp
LWxpc3QiX3M7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIp
KQpAQCAtMjY1LDcgKzI2Niw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1M
aXN0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBhdXRv
IHVybCA9IFVSTCh7IH0sIGRhdGEpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIHNhbml0aXplZERhdGEgPSB1cmwuc3RyaW5nKCk7Ci0gICAgfSBlbHNlIGlmICh0eXBl
ID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gdGV4dFBsYWluQ29udGVu
dFR5cGVBdG9tKCkpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBkYXRhOyAvLyBOb3RoaW5nIHRv
IHNhbml0aXplLgogCiAgICAgaWYgKHNhbml0aXplZERhdGEgIT0gZGF0YSkKQEAgLTQyOCw3ICs0
MjksNyBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVu
dChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKICAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7Ci0gICAg
cGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CisgICAg
cGFzdGVib2FyZC0+d3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHBsYWlu
VGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRl
eHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CkBAIC00
NjcsNyArNDY4LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmNvbW1pdFRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBuYXRpdmVQYXN0ZWJvYXJkKQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZm
ZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgcmV0dXJuIG5vbmVBdG9t
KCk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiMTNhZDQ5M2YwYzZiYTQyZTg5NTE3ZTQyMWQ0
OWJhNDUyMTczMTk4Li42MjFmMGZhMTAyMzcxM2EwNDFmZmZhMmYxNWRlZWJlOTIxZjMxNzI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21tZW50LmgiCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2lu
Y2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVu
dC5oIgpAQCAtNjAwOSw3ICs2MDEwLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShJ
bmhlcml0ZWRCb29sIHZhbHVlKQogCiBTdHJpbmcgRG9jdW1lbnQ6OmRlc2lnbk1vZGUoKSBjb25z
dAogewotICAgIHJldHVybiBpbkRlc2lnbk1vZGUoKSA/ICJvbiJfcyA6ICJvZmYiX3M7CisgICAg
cmV0dXJuIGluRGVzaWduTW9kZSgpID8gb25BdG9tKCkgOiBvZmZBdG9tKCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggZDJhYThkMWY3ZTM5OWUz
M2RmYTVjMTExMDY0MWQyZjQwMWU2YzNhMC4uMDVjODJmYmFhOTE4YmUwYTFlNjM3ODViMmFhZGYz
OGI3ZTU0ZDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRWxlbWVudElu
bGluZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNTEsOCArMTUyLDcgQEAgaW5saW5l
IGJvb2wgaXNWYWxpZENTU0NvbnRlbnRUeXBlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpCiAgICAgLy8gRklYTUU6IFNob3VsZCBNSU1FIHR5cGVzIHJlYWxseSBiZSBj
YXNlIHNlbnNpdGl2ZSBpbiBYTUwgZG9jdW1lbnRzPyBEb2Vzbid0IHNlZW0gbGlrZSB0aGV5IHNo
b3VsZCwKICAgICAvLyBldmVuIHRob3VnaCBvdGhlciB0aGluZ3MgYXJlIGNhc2Ugc2Vuc2l0aXZl
IGluIHRoYXQgY29udGV4dC4gTUlNRSB0eXBlcyBzaG91bGQgbmV2ZXIgYmUgY2FzZSBzZW5zaXRp
dmUuCiAgICAgLy8gV2Ugc2hvdWxkIHZlcmlmeSB0aGlzIGFuZCB0aGVuIHJlbW92ZSB0aGUgaXNI
VE1MRWxlbWVudCBjaGVjayBoZXJlLgotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3NzQ29udGVudFR5cGUoInRleHQvY3NzIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1l
bnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0ZXh0L2NzcyIpIDog
dHlwZSA9PSBjc3NDb250ZW50VHlwZTsKKyAgICByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50
KCkgPyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9jc3MiKSA6IHR5
cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiB9CiAKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93
bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGMyZjNi
NzMwN2QwZDA5MGEzM2NjNzE2NmRhNjIzNDlmNTJiNTBjZWUuLjkxYmM0ZmViODlkYzU4M2JmMGIz
ZjcwNzA1ZmJkMmE4YmRjMjlkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC05NCw3ICs5NSw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBT
dHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMtPmdldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4o
InR5cGUiX3MpOwogCi0gICAgICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09
ICJ0ZXh0L2NzcyI7CisgICAgICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09
IGNzc0NvbnRlbnRUeXBlQXRvbSgpOwogI2lmIEVOQUJMRShYU0xUKQogICAgICAgICBtX2lzWFNM
ID0gdHlwZSA9PSAidGV4dC94bWwiIHx8IHR5cGUgPT0gInRleHQveHNsIiB8fCB0eXBlID09ICJh
cHBsaWNhdGlvbi94bWwiIHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfHwgdHlw
ZSA9PSAiYXBwbGljYXRpb24vcnNzK3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24vYXRvbSt4
bWwiOwogICAgICAgICBpZiAoIW1faXNDU1MgJiYgIW1faXNYU0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAppbmRleCA1NGQ2Y2YwZTU4MDc5NzQxMTVlNmNl
ZWQ3MjY3Yzc4ZmJkZTIyMzRlLi5iMjU2YTMyYTY4ZWUxMGJhYThkZmJkODU0MzAyMjE1OTEwNjkz
MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGV4
dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRl
ICJFbGVtZW50UmFyZURhdGEuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9udFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCmlu
ZGV4IDI4ODQ4MGI2NTc3ZThlZDFhMDNmNzU4YjBiNDg0N2I4MTc1ZmZlODIuLjI3MDcyNDBiY2Fj
NThjNWIyMDczNjkzYzQ1MGU0MTI4M2Y5MWU5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRm9udFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
U2hhZG93LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZvbnRTaGFkb3cuaCIKIAog
I2luY2x1ZGUgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJp
bmdzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNCwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5n
IHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgRm9udFNoYWRvdyYgc2hhZG93KQogewogICAgIGlm
IChzaGFkb3cub2Zmc2V0LmlzWmVybygpICYmICFzaGFkb3cuYmx1clJhZGl1cykKLSAgICAgICAg
cmV0dXJuICJub25lIl9zOworICAgICAgICByZXR1cm4gbm9uZUF0b20oKTsKIAogICAgIGlmICgh
c2hhZG93LmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgICAg
ICByZXR1cm4gbm9uZUF0b20oKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBi
dWlsZGVyLmFwcGVuZChzaGFkb3cub2Zmc2V0LndpZHRoKCksICJweCAiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWVi
M2JkMDg3MzQzMmI0ZDBjOGQ5ZjkxMGQyODdkYjFiNTk4ZGZjMy4uYTljNGM2Mzk0NzA4ZTM1YzUy
ZjJhYWQ4YjVjMmM5MDAwZTM3YTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5j
bHVkZSAiRGF0YVRyYW5zZmVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTcxOCw3ICs3
MTksNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHls
ZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICAgICAgaWYgKGlzQmxvY2so
ZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIl9zLCBmYWxzZSk7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxl
KCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCAibm9uZSJfcywgZmFsc2Up
OworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5RmxvYXQsIG5vbmVBdG9tKCksIGZhbHNlKTsKICAgICAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpp
bmRleCBiNWUwYWNhNmUyMWJiMjZiYmRjM2M1OGViZDM1MDk2NWQwODQ2ZGY3Li45NGE0NjBmNTM0
OTQ4NGNhYjA4YmRlOTg4YTI3ZmIxNzQwMDBhOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJD
U1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW1wb3J0ICJDb2xvckNvbnZlcnNpb24uaCIKICNpbXBv
cnQgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgorI2ltcG9ydCAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZS5oIgogI2ltcG9ydCAiRWRpdGlu
Zy5oIgogI2ltcG9ydCAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA1M2NjNmFiMDE2YmU4MmU3
MGViNTU1NWE3OTYzZWE1MDliYmJmMzA0Li40MmI2YzIyZTU5ZTI4OGNhYjAyNjg4OTZkZmFkZGI2
MDEwMWY0OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW1w
b3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW1wb3J0
ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTU5Nyw3ICs1OTgs
NyBAQCBTdHJpbmcgSFRNTENvbnZlcnRlckNhY2hlczo6cHJvcGVydHlWYWx1ZUZvck5vZGUoTm9k
ZSYgbm9kZSwgQ1NTUHJvcGVydHlJRCBwcm9wZQogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewog
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdO
YW1lKGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShub2ZyYW1lc1RhZykp
Ci0gICAgICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgICAgICByZXR1cm4gbm9uZUF0
b20oKTsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
Ym9keVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGNlbnRlclRhZykKICAgICAgICAgICAgICB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoZGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXJUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXZUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkbFRh
ZykKICAgICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZHRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShmaWVsZHNldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShmcmFtZVRhZykKQEAgLTEwMTcsNyArMTAxOCw3IEBAIE5TRGlj
dGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogICAgIFN0cmluZyBmb250S2VybmluZyA9IF9jYWNoZXMtPnByb3BlcnR5
VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udEtlcm5pbmcpOwogICAgIFN0cmlu
ZyBsZXR0ZXJTcGFjaW5nID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwg
Q1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKTsKICAgICBpZiAoZm9udEtlcm5pbmcubGVuZ3RoKCkg
fHwgbGV0dGVyU3BhY2luZy5sZW5ndGgoKSkgewotICAgICAgICBpZiAoZm9udEtlcm5pbmcgPT0g
Im5vbmUiKQorICAgICAgICBpZiAoZm9udEtlcm5pbmcgPT0gbm9uZUF0b20oKSkKICAgICAgICAg
ICAgIFthdHRycyBzZXRPYmplY3Q6QDAuMCBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgZG91YmxlIGtlcm5WYWwgPSBsZXR0ZXJTcGFjaW5n
Lmxlbmd0aCgpID8gbGV0dGVyU3BhY2luZy50b0RvdWJsZSgpIDogMC4wOwpAQCAtMTExMCw3ICsx
MTExLDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICAgICAgU3RyaW5nIGh5cGhlbmF0aW9u
ID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUJsb2NrRWxlbWVudCwgQ1NTUHJv
cGVydHlXZWJraXRIeXBoZW5zKTsKICAgICAgICAgaWYgKGh5cGhlbmF0aW9uLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gImF1dG8iKQorICAgICAgICAgICAgaWYg
KGh5cGhlbmF0aW9uID09IGF1dG9BdG9tKCkpCiAgICAgICAgICAgICAgICAgW3BhcmFncmFwaFN0
eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjEuMF07CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjAuMF07CkBAIC0x
NjEwLDcgKzE2MTEsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgQk9PTCBlbWJlZGRlZCkKIAogICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
aGVhZFRhZykgJiYgIWVtYmVkZGVkKQogICAgICAgICBfcHJvY2Vzc0hlYWRFbGVtZW50KGVsZW1l
bnQpOwotICAgIGVsc2UgaWYgKCFkaXNwbGF5VmFsdWUubGVuZ3RoKCkgfHwgIShkaXNwbGF5VmFs
dWUgPT0gIm5vbmUiIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uIiB8fCBkaXNwbGF5
VmFsdWUgPT0gInRhYmxlLWNvbHVtbi1ncm91cCIpKSB7CisgICAgZWxzZSBpZiAoIWRpc3BsYXlW
YWx1ZS5sZW5ndGgoKSB8fCAhKGRpc3BsYXlWYWx1ZSA9PSBub25lQXRvbSgpIHx8IGRpc3BsYXlW
YWx1ZSA9PSAidGFibGUtY29sdW1uIiB8fCBkaXNwbGF5VmFsdWUgPT0gInRhYmxlLWNvbHVtbi1n
cm91cCIpKSB7CiAgICAgICAgIGlmIChfY2FjaGVzLT5pc0Jsb2NrRWxlbWVudChlbGVtZW50KSAm
JiAhZWxlbWVudC5oYXNUYWdOYW1lKGJyVGFnKSAmJiAhKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUt
Y2VsbCIgJiYgW190ZXh0VGFibGVzIGNvdW50XSA9PSAwKQogICAgICAgICAgICAgJiYgIShbX3Rl
eHRMaXN0cyBjb3VudF0gPiAwICYmIGRpc3BsYXlWYWx1ZSA9PSAiYmxvY2siICYmICFlbGVtZW50
Lmhhc1RhZ05hbWUobGlUYWcpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUodWxUYWcpICYmICFlbGVt
ZW50Lmhhc1RhZ05hbWUob2xUYWcpKSkKICAgICAgICAgICAgIF9uZXdQYXJhZ3JhcGhGb3JFbGVt
ZW50KGVsZW1lbnQsIGVsZW1lbnQudGFnTmFtZSgpLCBOTywgWUVTKTsKQEAgLTE4NjUsNyArMTg2
Niw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShp
bnB1dFRhZykpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKSB7
CiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQu
dHlwZSgpID09ICJ0ZXh0IikgeworICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC50eXBlKCkg
PT0gdGV4dEF0b20oKSkgewogICAgICAgICAgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IGlucHV0
RWxlbWVudC52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBbdmFsdWUgbGVu
Z3RoXSA+IDApCiAgICAgICAgICAgICAgICAgICAgIF9hZGRWYWx1ZSh2YWx1ZSwgZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggM2FlZTljZjlkZDdkZTZlM2RjODE1MTA0
ODVlN2MxN2Y0ZTBlZWUyNC4uODBhODg0MzUwMmViNTdmMDNlZGIyZWIzMWRjMjc3MWMwZjlkMzhh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oIgogI2luY2x1ZGUgIkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5n
cy5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xMjg1LDcgKzEy
ODYsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zv
cm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAgICAvLyBXZSBhY2hpZXZlIHRo
YXQgZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRl
eHQgZm9yIHRoZSBmcmFnbWVudC4KICAgICAgICAgYXV0byBmYWtlQm9keSA9IEhUTUxCb2R5RWxl
bWVudDo6Y3JlYXRlKG91dHB1dERvYyk7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoV1RG
TW92ZShzb3VyY2VTdHJpbmcpLCBmYWtlQm9keS5wdHIoKSk7Ci0gICAgfSBlbHNlIGlmIChzb3Vy
Y2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCisgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlw
ZSA9PSB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgZnJhZ21lbnQtPnBhcnNl
ckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIFdURk1vdmUoc291cmNlU3RyaW5n
KSkpOwogICAgIGVsc2UgewogICAgICAgICBib29sIHN1Y2Nlc3NmdWxQYXJzZSA9IGZyYWdtZW50
LT5wYXJzZVhNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1
dG9jYXBpdGFsaXplLmNwcAppbmRleCBkNjdkYzc5Mjk0ODYyMTQzOTQxNWNlZmU4NjM2OTA3OGY2
NDc1ZWJkLi40MGUyYTkwZWVjMDkxNTIzMGZmMGI1MmQzNTNkYjIzNzY0MjQ1ODZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTYsMTAgKzU3LDggQEAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0b2NhcGl0YWxp
emVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSB0eXBlKQogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpEZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbEF0
b20oKTsKLSAgICBjYXNlIEF1dG9jYXBpdGFsaXplVHlwZTo6Tm9uZTogewotICAgICAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlTm9uZSgi
bm9uZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0dXJu
IHZhbHVlTm9uZTsKLSAgICB9CisgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6Ok5vbmU6Cisg
ICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpT
ZW50ZW5jZXM6IHsKICAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB2YWx1ZVNlbnRlbmNlcygic2VudGVuY2VzIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gdmFsdWVTZW50ZW5jZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQXV0b2ZpbGwuY3BwCmluZGV4IGRlNTE4NWUxN2IzN2U4NGRiMzcxNDg4YjQ2OGJmZGMz
MjU4N2Q0MjguLjlkZTcwYjdjNmFkYWMzZGVjZWUwNmQyNWNjNDJiNmM0OTEyMGY0MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQXV0b2ZpbGwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGwuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCkBAIC0xMzYsOSArMTM3
LDYgQEAgc3RhdGljIHVuc2lnbmVkIG1heFRva2Vuc0ZvckF1dG9maWxsRmllbGRDYXRlZ29yeShB
dXRvZmlsbENhdGVnb3J5IGNhdGVnb3J5KQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNwcm9jZXNzaW5nLW1vZGVsLTMKIEF1dG9maWxsRGF0YSBB
dXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbigib24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBvZmYoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLQogICAgIC8vIExhYmVsOiBEZWZhdWx0CiAgICAgLy8gMjYuIExldCB0aGUgZWxlbWVudCdz
IElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBpdHMg
YXV0b2ZpbGwgaGludCBzZXQgYW5kIGF1dG9maWxsIHNjb3BlIGJlIGVtcHR5LgogICAgIC8vIDI3
LiBJZiB0aGUgZWxlbWVudCdzIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgaXMgd2VhcmluZyB0aGUg
YXV0b2ZpbGwgYW5jaG9yIG1hbnRsZSwgdGhlbiBsZXQgdGhlIGVsZW1lbnQncyBhdXRvZmlsbCBm
aWVsZCBuYW1lIGJlIHRoZSBlbXB0eSBzdHJpbmcgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAt
MTQ5LDkgKzE0Nyw5IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgICAgICAgICByZXR1
cm4geyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpIH07CiAgICAgICAgIAogICAgICAgICBh
dXRvIGZvcm0gPSBlbGVtZW50LmZvcm0oKTsKLSAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0
b2NvbXBsZXRlKCkgPT0gb2ZmKQotICAgICAgICAgICAgcmV0dXJuIHsgb2ZmLCBlbXB0eVN0cmlu
ZygpIH07Ci0gICAgICAgIHJldHVybiB7IG9uLCBlbXB0eVN0cmluZygpIH07CisgICAgICAgIGlm
IChmb3JtICYmIGZvcm0tPmF1dG9jb21wbGV0ZSgpID09IG9mZkF0b20oKSkKKyAgICAgICAgICAg
IHJldHVybiB7IG9mZkF0b20oKSwgZW1wdHlTdHJpbmcoKSB9OworICAgICAgICByZXR1cm4geyBv
bkF0b20oKSwgZW1wdHlTdHJpbmcoKSB9OwogICAgIH07CiAKIApAQCAtMTk5LDEzICsxOTcsMTMg
QEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICAvLyBhdXRvZmlsbCBoaW50IHNldCBiZSBl
bXB0eSwgYW5kIGxldCBpdHMgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIHN0cmlu
ZyAib2ZmIi4KICAgICAvLyBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdv
cnkgPT0gQXV0b2ZpbGxDYXRlZ29yeTo6T2ZmKQotICAgICAgICByZXR1cm4geyBvZmYsIG9mZi5n
ZXQoKS5zdHJpbmcoKSB9OworICAgICAgICByZXR1cm4geyBvZmZBdG9tKCksIG9mZkF0b20oKS5z
dHJpbmcoKSB9OwogCiAgICAgLy8gOC4gSWYgY2F0ZWdvcnkgaXMgQXV0b21hdGljLCBsZXQgdGhl
IGVsZW1lbnQncyBhdXRvZmlsbCBmaWVsZCBuYW1lIGJlIHRoZSBzdHJpbmcgIm9uIiwKICAgICAv
LyBsZXQgaXRzIGF1dG9maWxsIGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhw
b3NlZCBhdXRvZmlsbCB2YWx1ZSBiZSB0aGUgc3RyaW5nCiAgICAgLy8gIm9uIi4gVGhlbiwgYWJv
cnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGNhdGVnb3J5ID09IEF1dG9maWxsQ2F0ZWdvcnk6OkF1
dG9tYXRpYykKLSAgICAgICAgcmV0dXJuIHsgb24sIG9uLmdldCgpLnN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBvbkF0b20oKS5zdHJpbmcoKSB9OwogCiAgICAgLy8gOS4g
TGV0IHNjb3BlIHRva2VucyBiZSBhbiBlbXB0eSBsaXN0LgogICAgIC8vIDEwLiBMZXQgaGludCB0
b2tlbnMgYmUgYW4gZW1wdHkgc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNr
YWJsZUlucHV0VHlwZS5jcHAKaW5kZXggOGE1NGNhMDUzNTRhOTMwMjc1OWFiNzViYTNhMTc1NWY3
YjlmNDU1ZC4uMmIyM2UxZmQ1YzdhOGYzZDgzNjc2Y2NlY2EwNGQwODM3ZTk0YTE5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzZUNoZWNrYWJsZUlu
cHV0VHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJE
T01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgpAQCAtNDYsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBGb3JtQ29udHJvbFN0YXRlIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNhdmVGb3Jt
Q29udHJvbFN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1
cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfcyA6ICJvZmYiX3MgfTsKKyAgICByZXR1
cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpIH07CiB9CiAK
IHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29u
c3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0g
ICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09ICJvbiIpOworICAgIGVsZW1lbnQo
KS0+c2V0Q2hlY2tlZChzdGF0ZVswXSA9PSBvbkF0b20oKSk7CiB9CiAKIGJvb2wgQmFzZUNoZWNr
YWJsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhKSBjb25z
dApAQCAtOTksOCArMTAwLDcgQEAgYm9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCiAKIFN0cmluZyBCYXNlQ2hlY2thYmxlSW5w
dXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gb24uZ2V0KCk7CisgICAgcmV0dXJuIG9uQXRv
bSgpOwogfQogCiBib29sIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnN0b3Jlc1ZhbHVlU2VwYXJh
dGVGcm9tQXR0cmlidXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJL
ZXlIaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAppbmRleCA5
NzAzODE0Yzg0ZjQ2OWNkNGZiMTM2NWUxMTNkNjczMmEwZWU2OTlhLi5iNzc1Njk0YTMyMTExNDU5
ZTIwZGQ1NDRjN2Q1NzAwNmFmMjYyZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhpbnQu
Y3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW50
ZXJLZXlIaW50LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEVudGVyS2V5SGludCBlbnRlcktleUhpbnRGb3JBdHRyaWJ1dGVWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNjMsNyArNjUsNyBAQCBTdHJpbmcgYXR0cmlidXRl
VmFsdWVGb3JFbnRlcktleUhpbnQoRW50ZXJLZXlIaW50IGhpbnQpCiAgICAgY2FzZSBFbnRlcktl
eUhpbnQ6OlByZXZpb3VzOgogICAgICAgICByZXR1cm4gInByZXZpb3VzIl9zOwogICAgIGNhc2Ug
RW50ZXJLZXlIaW50OjpTZWFyY2g6Ci0gICAgICAgIHJldHVybiAic2VhcmNoIl9zOworICAgICAg
ICByZXR1cm4gc2VhcmNoQXRvbSgpOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpTZW5kOgogICAg
ICAgICByZXR1cm4gInNlbmQiX3M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlv
RWxlbWVudC5jcHAKaW5kZXggYThjMDAzMjI5ZTQzMThiODc3NWU3MjY1OGIxMmFlYTA2MzMwMDMz
Mi4uOGViNmMzZWY4ZjMxMzRkODZiMzY4OTFjNWU0MDAxYmI2NDJkNWQzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJIVE1MQXVkaW9FbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKQEAgLTU0LDcgKzU1LDcgQEAgUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1M
QXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBzcmMpCiB7CiAgICAg
YXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBkb2N1bWVudCwgZmFsc2UpOwotICAgIGVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsICJh
dXRvIl9zKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHByZWxvYWRBdHRyLCBhdXRvQXRvbSgpKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHNyYyk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IDg3OTQ4Njdj
NmUwNGQ1MDE2MTczYmY5N2Q3MjMwMDdlOWRhZjFkZmQuLjljMzczMTVhY2I1NmJmMDBiYzk1ZTMy
ZDdhMDEzYTcyNTcxMTZiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SFRNTEJ1dHRvbkVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTgyLDE2ICs4MywxMiBAQCBpbnQgSFRNTEJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNvbnN0CiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MQnV0
dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewotICAgICAgICBjYXNlIFNVQk1JVDogewotICAgICAgICAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdWJtaXQoInN1Ym1pdCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBCVVRUT046Ci0gICAgICAgICAgICByZXR1cm4gSFRN
TE5hbWVzOjpidXR0b25UYWctPmxvY2FsTmFtZSgpOwotICAgICAgICBjYXNlIFJFU0VUOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHJlc2V0KCJyZXNldCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICAgICAgICAgIHJldHVybiByZXNldDsKLSAgICAgICAgfQorICAgIGNhc2UgU1VCTUlUOgorICAg
ICAgICByZXR1cm4gc3VibWl0QXRvbSgpOworICAgIGNhc2UgQlVUVE9OOgorICAgICAgICByZXR1
cm4gSFRNTE5hbWVzOjpidXR0b25UYWctPmxvY2FsTmFtZSgpOworICAgIGNhc2UgUkVTRVQ6Cisg
ICAgICAgIHJldHVybiByZXNldEF0b20oKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggOWMzOWM1NmQzNDE0Mzhk
MGUwOGI1NTEzZTY3MmI2OWE2MDliMWIxZC4uOTAxMDUwNWRlMTUyOWRkNDk2ZDk0ZjhmMmMzMjc2
MTU3MzIyMTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgog
I2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpAQCAtNDE1LDEzICs0MTYsMTIg
QEAgc3RhdGljIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB0b1ZhbGlkRGlyVmFsdWUoY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBsdHJWYWx1ZSgibHRyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gcnRsVmFsdWUoInJ0bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGF1dG9WYWx1ZSgiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsdHIiKSkKICAg
ICAgICAgcmV0dXJuIGx0clZhbHVlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgInJ0bCIpKQogICAgICAgICByZXR1cm4gcnRsVmFsdWU7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiYXV0byIpKQotICAgICAgICByZXR1
cm4gYXV0b1ZhbHVlOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1cm4gbnVs
bEF0b20oKTsKIH0KIApAQCAtNTc4LDE3ICs1NzgsMTEgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpj
b250ZW50RWRpdGFibGUoKSBjb25zdAogICAgIGNhc2UgQ29udGVudEVkaXRhYmxlVHlwZTo6RmFs
c2U6CiAgICAgICAgIHJldHVybiBmYWxzZUF0b20oKTsKICAgICBjYXNlIENvbnRlbnRFZGl0YWJs
ZVR5cGU6OlBsYWludGV4dE9ubHk6Ci0gICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHkiX3M7
CisgICAgICAgIHJldHVybiBwbGFpbnRleHRPbmx5QXRvbSgpOwogICAgIH0KICAgICByZXR1cm4g
ImluaGVyaXQiX3M7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5
TmFtZSgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBwbGFpbnRleHRPbmx5VmFsdWUoInBsYWludGV4dC1vbmx5IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBwbGFpbnRleHRPbmx5VmFsdWUuZ2V0
KCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUoY29uc3QgU3RyaW5nJiBlbmFibGVkKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShlbmFibGVkLCAidHJ1ZSIpKQpAQCAtNTk2LDcgKzU5MCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBl
bmFibGVkKQogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJs
ZWQsICJmYWxzZSIpKQogICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGNvbnRlbnRlZGl0YWJsZUF0dHIsIGZhbHNlQXRvbSgpKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAicGxhaW50ZXh0LW9ubHkiKSkKLSAgICAg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRy
LCBwbGFpbnRleHRPbmx5TmFtZSgpKTsKKyAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCBwbGFpbnRleHRPbmx5QXRvbSgpKTsKICAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAiaW5oZXJp
dCIpKQogICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0cik7CiAgICAg
ZWxzZQpAQCAtMTA2NCw5ICsxMDU4LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c2hvdWxkQXV0b2Nv
cnJlY3QoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRBdXRvY29ycmVjdChib29sIGF1
dG9jb3JyZWN0KQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gb25OYW1lKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IG9mZk5hbWUoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBz
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2Nv
cnJlY3QgPyBvbk5hbWUuZ2V0KCkgOiBvZmZOYW1lLmdldCgpKTsKKyAgICBzZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBvbkF0
b20oKSA6IG9mZkF0b20oKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCmluZGV4IDE3ZTA4ZmZhOTNkNjFkMGRkODA5NzlkZGY4NGIxYzNjZjUyZDBl
MDUuLjVlMDE2OWE3MzE3MDQ5MTNiZGNlNjA0YjZjZjAzM2Y4OGMwY2E5MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJE
T01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTEwMTIsMTAgKzEwMTMs
NyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NvbXBsZXRlKGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jb21w
bGV0ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBvbigib24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBv
ZmYoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLQotICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
YXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKSA/IG9mZiA6IG9uOworICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvbXBs
ZXRlQXR0ciksICJvZmYiKSA/IG9mZkF0b20oKSA6IG9uQXRvbSgpOwogfQogCiBSZWZQdHI8RE9N
Rm9ybURhdGE+IEhUTUxGb3JtRWxlbWVudDo6Y29uc3RydWN0RW50cnlMaXN0KFJlZjxET01Gb3Jt
RGF0YT4mJiBkb21Gb3JtRGF0YSwgU3RyaW5nUGFpclZlY3RvciogZm9ybVZhbHVlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMWU4MWY1NDI1YjA3ZTI0
ZDlhOWMxMjA3ZWIzNTU5MjE3MjQ2NWM4NC4uZjI4ZTZkOTYxNTZlYWRiZDEwYWM1YzM5OTBhMDJh
MzFiNWVjZDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTU3LDkgKzE1OCw3IEBAIGNvbnN0IEZlYXR1cmVQb2xp
Y3kmIEhUTUxJRnJhbWVFbGVtZW50OjpmZWF0dXJlUG9saWN5KCkgY29uc3QKIAogY29uc3QgQXRv
bVN0cmluZyYgSFRNTElGcmFtZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0CiB7
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBl
YWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJsYXp5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6bG9hZGluZ0F0dHIpLCAibGF6eSIpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6bG9hZGluZ0F0dHIpLCAibGF6eSIpID8gbGF6eUF0b20oKSA6IGVh
Z2VyQXRvbSgpOwogfQogCiB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpzZXRMb2FkaW5nRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAppbmRleCAwMGNkZDYyZmUwNDYzODY0MjRlNTc4MTU4YTNjYzVkZDk5Yzk2
YmJiLi44YzczNTIwYzU0ZDY3YmJhMjM5YTY0ZWU3Zjg3NmNiYWY1NDYwYzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCkBAIC02NzQsNyArNjc1LDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmRl
Y29kaW5nKCkgY29uc3QKICAgICBjYXNlIERlY29kaW5nTW9kZTo6QXV0bzoKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiAiYXV0byJfczsKKyAgICByZXR1cm4gYXV0b0F0b20oKTsK
IH0KIAogRGVjb2RpbmdNb2RlIEhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nTW9kZSgpIGNvbnN0
CkBAIC04OTYsMTAgKzg5Nyw4IEBAIHNpemVfdCBIVE1MSW1hZ2VFbGVtZW50OjpwZW5kaW5nRGVj
b2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKSBjb25zdAogCiBjb25zdCBBdG9tU3RyaW5nJiBI
VE1MSW1hZ2VFbGVtZW50Ojpsb2FkaW5nRm9yQmluZGluZ3MoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZWFnZXIoImVhZ2Vy
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbGF6eSgibGF6eSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBhdXRvJiBhdHRyaWJ1dGVWYWx1ZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0cik7Ci0g
ICAgcmV0dXJuIGhhc0xhenlMb2FkYWJsZUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZVZhbHVlKSA/
IGxhenkgOiBlYWdlcjsKKyAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUo
YXR0cmlidXRlVmFsdWUpID8gbGF6eUF0b20oKSA6IGVhZ2VyQXRvbSgpOwogfQogCiB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OnNldExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ0YzAz
NmUyOWI3M2FhM2ZhYTRhZDdjNTJiN2FhMTAxNjRlMTBlNjMuLmVhYmI2NTdlMTMxNzZiMDJiYzgy
ZDA4M2QwY2VhNmI2OTM1OWQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAi
Q29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIgpAQCAtMzY0OSwxNiArMzY1MCwxNiBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6cHJl
bG9hZCgpIGNvbnN0CiAgICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0dXJlLW1h
aW4vI21lZGlhc3RyZWFtcy1pbi1tZWRpYS1lbGVtZW50cwogICAgIC8vICJwcmVsb2FkIiAtIE9u
IGdldHRpbmc6IG5vbmUuIE9uIHNldHRpbmc6IGlnbm9yZWQuCiAgICAgaWYgKG1fbWVkaWFTdHJl
YW1TcmNPYmplY3QpCi0gICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgcmV0dXJuIG5v
bmVBdG9tKCk7CiAjZW5kaWYKIAogICAgIHN3aXRjaCAobV9wcmVsb2FkKSB7CiAgICAgY2FzZSBN
ZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZToKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpN
ZXRhRGF0YToKICAgICAgICAgcmV0dXJuICJtZXRhZGF0YSJfczsKICAgICBjYXNlIE1lZGlhUGxh
eWVyOjpQcmVsb2FkOjpBdXRvOgotICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgIHJl
dHVybiBhdXRvQXRvbSgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCA2ZmIxMGY2NzEyNWQ4NzNiMzdhZjI1M2ZhMGUwNWY1YzIzYWQ4YmYzLi5hYjhkNmEyOTll
ZjZjY2YwYTFkMjEwMDExMzg2YjFiOWYzYThlNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNpbmNsdWRlICJFZGl0
aW5nLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC00MzQsMTMgKzQzNSwxMiBAQCB1bnNpZ25l
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVNlbGVjdGlvbkVuZCgpIGNvbnN0
CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gYmFja3dhcmQoImJhY2t3YXJkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIFNlbGVjdGlv
bkhhc05vRGlyZWN0aW9uOgotICAgICAgICByZXR1cm4gbm9uZTsKKyAgICAgICAgcmV0dXJuIG5v
bmVBdG9tKCk7CiAgICAgY2FzZSBTZWxlY3Rpb25IYXNGb3J3YXJkRGlyZWN0aW9uOgogICAgICAg
ICByZXR1cm4gZm9yd2FyZDsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0JhY2t3YXJkRGlyZWN0aW9u
OgpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkaXJlY3Rpb25T
dHJpbmcoVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbm9uZTsKKyAgICByZXR1cm4gbm9u
ZUF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnNlbGVjdGlvbkRpcmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0TW9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAK
aW5kZXggMzQ5ZDg1YjU2MmU3YmI5YzVhZGZlZDUyNzExZjUzMDVjNDdkZTQ5ZS4uN2U4MGM3N2Y3
ZWY5NGNmODA4MDA3ZTBjYzQ2Y2YwMjZiZmY0NWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dE1vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2Rl
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklu
cHV0TW9kZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODIsMzIgKzgz
LDI3IEBAIG5hbWVzcGFjZSBJbnB1dE1vZGVOYW1lcyB7CiAKIGNvbnN0IEF0b21TdHJpbmcmIG5v
bmUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gbW9kZSgibm9uZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICByZXR1cm4gbW9kZTsKKyAgICByZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0ZWwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgidGVsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiB0ZWxBdG9tKCk7CiB9CiAK
IGNvbnN0IEF0b21TdHJpbmcmIHVybCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ1cmwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHVybEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgZW1haWwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgiZW1haWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIGVt
YWlsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBudW1lcmljKCkKQEAgLTEyNCw4ICsx
MjAsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBkZWNpbWFsKCkKIAogY29uc3QgQXRvbVN0cmluZyYg
c2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IG1vZGUoInNlYXJjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1cm4gc2VhcmNoQXRvbSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnB1dE1vZGVOYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVz
LmNwcAppbmRleCA0NTAzNjllYzgxZGNiZjEwMzM2OTBkN2Y2NDM3MTY1ZjFlZThjNTZmLi42ZmZi
Y2Y1Y2YyMjU2OTMyNzk5ZjFhZWUzYTFjNDNjNTFiNTFlYThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCkBAIC02Myw4ICs2NCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lbG9j
YWwoKQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJlbWFpbCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
ZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIGZpbGUoKQpAQCAtMTE3LDMyICsx
MTcsMjcgQEAgY29uc3QgQXRvbVN0cmluZyYgcmFuZ2UoKQogCiBjb25zdCBBdG9tU3RyaW5nJiBy
ZXNldCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJyZXNldCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4gcmVzZXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0
b21TdHJpbmcmIHNlYXJjaCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHNlYXJjaEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc3VibWl0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInN1Ym1pdCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c3VibWl0QXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB0ZWxlcGhvbmUoKQogewotICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgi
dGVsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiB0ZWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRleHQoKQog
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bmFtZSgidGV4dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1
cm4gbmFtZTsKKyAgICByZXR1cm4gdGV4dEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYg
dGltZSgpCkBAIC0xNTMsOCArMTQ4LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgdGltZSgpCiAKIGNv
bnN0IEF0b21TdHJpbmcmIHVybCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJ1cmwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHVybEF0b20oKTsKIH0K
IAogY29uc3QgQXRvbVN0cmluZyYgd2VlaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA5MzA0ODRiODVh
YjI1YWU1NDdkZjdmMzFmZDdkMjBhNWFhMmJlNmZhLi43ZjQ3MzUwN2ZiZmFkYmVmODNkNTFjOGZm
MTA5Yjk2MmExMjNkYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAg
LTE1MCw4ICsxNTEsNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZAogCiB2b2lkIFRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudDo6dXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5SW1w
bChib29sIGlzRWRpdGFibGUsIGJvb2wgaW5pdGlhbGl6YXRpb24pCiB7Ci0gICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFpblRleHRPbmx5TmFt
ZSgicGxhaW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgY29uc3QgYXV0byYgdmFsdWUgPSBpc0VkaXRhYmxlID8gcGxhaW5UZXh0T25seU5hbWUuZ2V0
KCkgOiBmYWxzZUF0b20oKTsKKyAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBw
bGFpbnRleHRPbmx5QXRvbSgpIDogZmFsc2VBdG9tKCk7CiAgICAgaWYgKGluaXRpYWxpemF0aW9u
KSB7CiAgICAgICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXMgeyBBdHRyaWJ1dGUoY29u
dGVudGVkaXRhYmxlQXR0ciwgdmFsdWUpIH07CiAgICAgICAgIHBhcnNlclNldEF0dHJpYnV0ZXMo
YXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRl
eCA2OTk0YjExMzFlMjM0OGU0ZWU5ZDI1YzA5YWNkNGRmNjU4N2MxMDNmLi43YmFlYWEwNjVjNzM0
MDk4ZTJiYTAzZDMzMzA5ZTMxODgzOWVkMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHAKQEAgLTM4LDI4ICszOCwxNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKICNpbmNsdWRlICJB
dWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29u
c3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0
aXZlKCJhbHRlcm5hdGl2ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICByZXR1cm4gYWx0ZXJuYXRpdmU7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6
OmRlc2NyaXB0aW9uS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbigiZGVzY3JpcHRpb24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQog
Ci1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCi17Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtYWluKCJtYWlu
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtYWluOwot
fQotCiBjb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQogewog
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWFp
bkRlc2MoIm1haW4tZGVzYyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAg
LTcyLDEyICs2MSw2IEBAIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9u
S2V5d29yZCgpCiAgICAgcmV0dXJuIHRyYW5zbGF0aW9uOwogfQogCi1jb25zdCBBdG9tU3RyaW5n
JiBBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5KCJjb21tZW50YXJ5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjb21tZW50
YXJ5OwotfQotCiBBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgOiBNZWRpYVRy
YWNrQmFzZShjb250ZXh0LCBNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRl
LmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKICAg
ICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCkBAIC0xMjMsMTAgKzEwNiwxMCBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiBib29s
IEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKQotICAgICAgICB8fCB2
YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0
aXZlQXRvbSgpCisgICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKICAgICAgICAg
fHwgdmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gbWFp
bktleXdvcmQoKQorICAgICAgICB8fCB2YWx1ZSA9PSBtYWluQXRvbSgpCiAgICAgICAgIHx8IHZh
bHVlID09IG1haW5EZXNjS2V5d29yZCgpCiAgICAgICAgIHx8IHZhbHVlID09IHRyYW5zbGF0aW9u
S2V5d29yZCgpOwogfQpAQCAtMjA4LDEzICsxOTEsMTMgQEAgdm9pZCBBdWRpb1RyYWNrOjp1cGRh
dGVLaW5kRnJvbVByaXZhdGUoKQogewogICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsK
ICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKLSAgICAgICAgc2V0S2lu
ZChBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoYWx0
ZXJuYXRpdmVBdG9tKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpEZXNjcmlwdGlvbjoKICAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlv
bktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6
Ok1haW46Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAg
ICAgIHNldEtpbmQobWFpbkF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9U
cmFja1ByaXZhdGU6Ok1haW5EZXNjOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5E
ZXNjS2V5d29yZCgpKTsKQEAgLTIyMyw3ICsyMDYsNyBAQCB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0
ZUtpbmRGcm9tUHJpdmF0ZSgpCiAgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6dHJhbnNsYXRp
b25LZXl3b3JkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRl
OjpDb21tZW50YXJ5OgotICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3
b3JkKCkpOworICAgICAgICBzZXRLaW5kKGNvbW1lbnRhcnlBdG9tKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOgogICAgICAgICBzZXRLaW5kKGVt
cHR5U3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAppbmRleCA0
ZTE4NmMxNjYyMDdiMDdhNzhkMGU3NmVjNGQzZGQwOTA5OTYxNzI4Li5iZGI3ZjFiMjJjMDIxOTE2
OWNjMTMyN2Y0NTM1MTUyMWZlN2U3YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suaApAQCAtNDYsMTIgKzQ2LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5B
dWRpb1RyYWNrKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgYWx0ZXJuYXRpdmVL
ZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlc2NyaXB0aW9uS2V5d29y
ZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBtYWluS2V5d29yZCgpOwogICAgIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgdHJhbnNsYXRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoY29uc3Qg
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggMTBmNGQx
ZGFlMGE5OTAyNWI1ZDQwZjIzOGRkNTVlYTZjMzY5ZDcwYi4uOTE1OGFlNGQzMDQxODcwYjViNzM4
NzlmODU4MTliODAyZDljNGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcApAQCAtNTAsMTggKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrKTsKIAotY29uc3QgQXRvbVN0cmluZyYgVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzdWJ0aXRsZXM7Ci19Ci0KLXN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnMoImNhcHRp
b25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjYXB0
aW9uczsKLX0KLQogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdvcmQo
KQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gZGVzY3JpcHRpb25zKCJkZXNjcmlwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CkBAIC0xMDMsNyArOTEsNyBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjbwogICAg
ICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewot
ICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgIGlmIChraW5kID09IGNhcHRp
b25zQXRvbSgpKQogICAgICAgICBtX2tpbmQgPSBLaW5kOjpDYXB0aW9uczsKICAgICBlbHNlIGlm
IChraW5kID09IGNoYXB0ZXJzS2V5d29yZCgpKQogICAgICAgICBtX2tpbmQgPSBLaW5kOjpDaGFw
dGVyczsKQEAgLTE2Nyw5ICsxNTUsOSBAQCBib29sIFRleHRUcmFjazo6ZW5hYmxlZCgpIGNvbnN0
CiAKIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICBpZiAo
dmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
dmFsdWUgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYgKHZhbHVlID09IGNhcHRpb25zQXRv
bSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25z
S2V5d29yZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Nyw3ICsxNzUsNyBAQCBjb25z
dCBBdG9tU3RyaW5nJiBUZXh0VHJhY2s6OmtpbmRLZXl3b3JkKCkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKG1fa2luZCkgewogICAgIGNhc2UgS2luZDo6Q2FwdGlvbnM6Ci0gICAgICAgIHJldHVybiBj
YXB0aW9uc0tleXdvcmQoKTsKKyAgICAgICAgcmV0dXJuIGNhcHRpb25zQXRvbSgpOwogICAgIGNh
c2UgS2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBjaGFwdGVyc0tleXdvcmQoKTsKICAg
ICBjYXNlIEtpbmQ6OkRlc2NyaXB0aW9uczoKQEAgLTE5NywxMCArMTg1LDEwIEBAIGNvbnN0IEF0
b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25zdAogICAgIGNhc2UgS2luZDo6
TWV0YWRhdGE6CiAgICAgICAgIHJldHVybiBtZXRhZGF0YUtleXdvcmQoKTsKICAgICBjYXNlIEtp
bmQ6OlN1YnRpdGxlczoKLSAgICAgICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICAg
ICAgcmV0dXJuIHN1YnRpdGxlc0F0b20oKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICByZXR1cm4gc3VidGl0bGVz
QXRvbSgpOwogfQogCiB2b2lkIFRleHRUcmFjazo6c2V0S2luZChLaW5kIG5ld0tpbmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA5NDBjMDI0NjJlODY5M2NiODg4OWQw
MjdiNmM5YTg2ZWYyZTkwY2Y1Li4yYjYyNzRjMjVmNDVkNjk0MjBjOTQyYjE0MmRhMzEwMTMzMzU2
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUzLDcgKzUzLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBUZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpOwog
ICAgIHN0YXRpYyBUZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwogCi0gICAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgVGV4dFRy
YWNrTGlzdCogdGV4dFRyYWNrTGlzdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCmluZGV4IGFiZjc1Njk2NGMzNzllODc3NGRhY2VhYjgxMjBlMjhmY2QxNGFhN2MuLmUy
NzI1YzhlODQ4MDlhYzY3MDJlMmU2MzMyMjBkZTg0MGNmYjhhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtMTM3LDEyICsxMzgs
NiBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBsaW5lUmlnaHRLZXl3b3JkKCkKICAgICByZXR1cm4g
bGluZVJpZ2h0OwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nJiBhdXRvS2V5d29yZCgpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYXV0b1goTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoImF1dG8iKSk7Ci0gICAgcmV0dXJuIGF1dG9YOwotfQotCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZjxWVFRDdWVCb3g+IFZUVEN1ZUJveDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCkBAIC00NzcsNyArNDcyLDcgQEAgY29u
c3QgU3RyaW5nJiBWVFRDdWU6OnBvc2l0aW9uQWxpZ24oKSBjb25zdAogICAgIGNhc2UgUG9zaXRp
b25BbGlnbm1lbnRMaWduUmlnaHQ6CiAgICAgICAgIHJldHVybiBsaW5lUmlnaHRLZXl3b3JkKCk7
CiAgICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25BdXRvOgotICAgICAgICByZXR1cm4gYXV0
b0tleXdvcmQoKTsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwpAQCAtNDkzLDcgKzQ4OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFZUVEN1ZTo6c2V0UG9zaXRp
b25BbGlnbihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBwb3NpdGlvbkFsaWdubWVudCA9
IFBvc2l0aW9uQWxpZ25tZW50TGlnbkNlbnRlcjsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBsaW5l
UmlnaHRLZXl3b3JkKCkpCiAgICAgICAgIHBvc2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGln
bm1lbnRMaWduUmlnaHQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYXV0b0tleXdvcmQoKSkKKyAg
ICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRvQXRvbSgpKQogICAgICAgICBwb3NpdGlvbkFsaWdubWVu
dCA9IFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG87CiAgICAgZWxzZQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMTMyOSwxMyArMTMyNCwxMyBAQCB2b2lkIFZUVEN1ZTo6dG9KU09OKEpTT046Ok9i
amVjdCYgb2JqZWN0KSBjb25zdAogICAgIG9iamVjdC5zZXRTdHJpbmcoInZlcnRpY2FsIl9zLCB2
ZXJ0aWNhbCgpKTsKICAgICBvYmplY3Quc2V0Qm9vbGVhbigic25hcFRvTGluZXMiX3MsIHNuYXBU
b0xpbmVzKCkpOwogICAgIGlmIChtX2xpbmVQb3NpdGlvbikKLSAgICAgICAgb2JqZWN0LnNldFN0
cmluZygibGluZSJfcywgImF1dG8iX3MpOworICAgICAgICBvYmplY3Quc2V0U3RyaW5nKCJsaW5l
Il9zLCBhdXRvQXRvbSgpKTsKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoImxp
bmUiX3MsICptX2xpbmVQb3NpdGlvbik7CiAgICAgaWYgKG1fdGV4dFBvc2l0aW9uKQogICAgICAg
ICBvYmplY3Quc2V0RG91YmxlKCJwb3NpdGlvbiJfcywgKm1fdGV4dFBvc2l0aW9uKTsKICAgICBl
bHNlCi0gICAgICAgIG9iamVjdC5zZXRTdHJpbmcoInBvc2l0aW9uIl9zLCAiYXV0byJfcyk7Cisg
ICAgICAgIG9iamVjdC5zZXRTdHJpbmcoInBvc2l0aW9uIl9zLCBhdXRvQXRvbSgpKTsKICAgICBv
YmplY3Quc2V0SW50ZWdlcigic2l6ZSJfcywgbV9jdWVTaXplKTsKICAgICBvYmplY3Quc2V0U3Ry
aW5nKCJhbGlnbiJfcywgYWxpZ24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcAppbmRleCA3M2U5ZDBmMTdhZjU2NWI3YTJkMWQ5OTNjOTJjNzM3ZDc5NGY0NGE3
Li4wNzFhNzc0MjZkZjA0YjVjNGY5MDgyNWM1NTJlMjk5ZjY3Yjc1YTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVO
QUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
VmlkZW9UcmFja0NsaWVudC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKQEAgLTQ2LDQyICs0NywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0
aXZlS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGFsdGVybmF0aXZlOwotfQotCi1jb25zdCBB
dG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnMoImNhcHRp
b25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjYXB0
aW9uczsKLX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y2FwdGlvbnMoIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNhcHRpb25zOwotfQotCiBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWdu
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBzaWduKCJzaWduIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBzaWduOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpz
dWJ0aXRsZXNLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzdWJ0aXRsZXM7Ci19Ci0KLWNvbnN0IEF0
b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRhcnkoImNv
bW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJu
IGNvbW1lbnRhcnk7Ci19Ci0KIFZpZGVvVHJhY2s6OlZpZGVvVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICA6
IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFj
a1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFn
ZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTExOCwxMiArODksMTIgQEAg
dm9pZCBWaWRlb1RyYWNrOjpzZXRQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZh
dGUpCiAKIGJvb2wgVmlkZW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpCi0g
ICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUg
PT0gY2FwdGlvbnNLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gbWFpbktleXdvcmQoKQor
ICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUF0b20oKQorICAgICAgICB8fCB2YWx1ZSA9
PSBjb21tZW50YXJ5QXRvbSgpCisgICAgICAgIHx8IHZhbHVlID09IGNhcHRpb25zQXRvbSgpCisg
ICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkKICAgICAgICAgfHwgdmFsdWUgPT0gc2lnbktl
eXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCk7CisgICAgICAg
IHx8IHZhbHVlID09IHN1YnRpdGxlc0F0b20oKTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjpzZXRT
ZWxlY3RlZChjb25zdCBib29sIHNlbGVjdGVkKQpAQCAtMjQxLDIyICsyMTIsMjIgQEAgdm9pZCBW
aWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogewogICAgIHN3aXRjaCAobV9wcml2
YXRlLT5raW5kKCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToK
LSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAg
ICAgIHNldEtpbmQoYWx0ZXJuYXRpdmVBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFj
azo6Y2FwdGlvbnNLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKGNhcHRpb25zQXRvbSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46Ci0gICAg
ICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQo
bWFpbkF0b20oKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRl
OjpTaWduOgogICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgotICAg
ICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIHNl
dEtpbmQoc3VidGl0bGVzQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9U
cmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29t
bWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgogICAgICAg
ICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2suaAppbmRleCBlMWUwZTliMDI1OGQ1MTI3NjI5NzA2ZDBlYzQyMmEzY2JkMDNmNjk5Li4xZTIy
YmJiNDUzNzEyZjhlMmE5MTFiNzM4ODk5ZjQzYjNkYmQ2N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2suaApAQCAtNDksMTIgKzQ5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
YWx0ZXJuYXRpdmVLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRp
b25zS2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBtYWluS2V5d29yZCgp
OwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzaWduS2V5d29yZCgpOwotICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CiAKICAgICBib29sIHNlbGVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rl
ZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cAppbmRleCBmOGRkYmQzODA1YjQ1ODBhOGQ3NjQ0ODkxMjNjZDkyMWVjMjYwNWY0Li5jNjk0NDAw
Mzg2ZGNiOWYzNzkzZGI3ODc4Y2ZiNDFmY2U0Mzk3MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpZiBFTkFCTEUo
VklERU8pCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklTT1ZUVEN1
ZS5oIgpAQCAtOTIsNyArOTMsNyBAQCBib29sIFdlYlZUVFBhcnNlcjo6cGFyc2VGbG9hdFBlcmNl
bnRhZ2VWYWx1ZVBhaXIoVlRUU2Nhbm5lciYgdmFsdWVTY2FubmVyLCBjaGFyCiAKIFdlYlZUVFBh
cnNlcjo6V2ViVlRUUGFyc2VyKFdlYlZUVFBhcnNlckNsaWVudCYgY2xpZW50LCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9kZWNvZGVyKFRl
eHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgUEFMOjpVVEY4RW5jb2Rp
bmcoKSkpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHRleHRQ
bGFpbkNvbnRlbnRUeXBlQXRvbSgpLCBQQUw6OlVURjhFbmNvZGluZygpKSkKICAgICAsIG1fY2xp
ZW50KGNsaWVudCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYWUwMjliZmJiZTkzMzgyOGJkYjBjOWVh
YjU5OTJlMDA0OTQ5ODU2OS4uMjQ0MGUzYWI3MWE2OWIyYzBjODIyOTI3MTUzZDk4MjczZDJjNTRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUu
aCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgpAQCAtNzgyLDcgKzc4Myw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3Bl
Y3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoRG9jCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBzdHlsZUVsZW1lbnQgPSBIVE1MU3R5
bGVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIHN0eWxlRWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnR5cGVBdHRyLCBBdG9tU3RyaW5n
KCJ0ZXh0L2NzcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3R5
bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
dHlwZUF0dHIsIGNzc0NvbnRlbnRUeXBlQXRvbSgpKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHRh
cmdldE5vZGU7CiAgICAgLy8gSEVBRCBpcyBhYnNlbnQgaW4gSW1hZ2VEb2N1bWVudHMsIGZvciBl
eGFtcGxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggMmMw
MTJmZGU1ZDc3OGIwNjdiNWE1YTc4ODZkOWZjZmQzY2YxZTkzMC4uOWZiMDA1MjdjOTM2NTQxOTlj
ODc5NzlhMjI5ODNmMWFjZjFhMGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRm9ybVN1Ym1pc3Npb24uaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEu
aCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKQEAgLTEwMyw3ICsxMDQsNyBAQCBTdHJp
bmcgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlRW5jb2RpbmdUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
Im11bHRpcGFydC9mb3JtLWRhdGEiKSkKICAgICAgICAgcmV0dXJuICJtdWx0aXBhcnQvZm9ybS1k
YXRhIl9zOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4
dC9wbGFpbiIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVy
biB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCJfczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IGYwNDNjZDU5NzA1NDE5Nzc2MzhiNmRmNDIyZmEw
ZmQzOTdlYjdlMWEuLjJkMWFkZjNmN2UwOWYwMzMwMmI2MWRmZWZkNmI3OTk2YTAyYTllMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAKICNpbmNsdWRl
ICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTM3Nyw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yIHsgdXNlckdlc3R1
cmVUb0ZvcndhcmQoKSB9OwogCi0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVwbGFjZW1lbnRS
ZXNwb25zZSB7IG1fb3JpZ2luRG9jdW1lbnQudXJsKCksICJ0ZXh0L3BsYWluIl9zLCAwLCAiVVRG
LTgiX3MgfTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXBsYWNlbWVudFJlc3BvbnNlIHsg
bV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgdGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIDAsICJV
VEYtOCJfcyB9OwogICAgICAgICBTdWJzdGl0dXRlRGF0YSByZXBsYWNlbWVudERhdGEgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX29yaWdpbkRvY3VtZW50LnVybCgpLCByZXBsYWNlbWVudFJl
c3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4g
fTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgbV9vcmlnaW5E
b2N1bWVudC51cmwoKSwgZW1wdHlTdHJpbmcoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6
OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggY2RlN2FlNGNjMTBlZWY1YTZi
Mzg0ODI3MTA1N2IzNzA4ZjViNTczNS4uZjU5ZWNmYzZjMDk2ZDQ0MDIwZWNkMzI2MmRjYTJkMjU0
MjBmYWUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJMRShNSFRNTCkKICNp
bmNsdWRlICJNSFRNTFBhcnNlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJNSFRNTEFyY2hpdmUuaCIKICNpbmNsdWRlICJNSU1FSGVhZGVyLmgiCiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMTE5LDcgKzEyMCw3IEBAIFJlZlB0cjxNSFRN
TEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIq
IGhlYWRlcikKIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVS
ZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSogYXJjaGl2ZSkKIHsKICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7Ci0gICAgaWYgKCFNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBt
aW1lVHlwZSA9PSAidGV4dC9jc3MiKSB7CisgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBtaW1lVHlwZSA9PSBjc3ND
b250ZW50VHlwZUF0b20oKSkgewogICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQocmVzb3VyY2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDE0Y2NkMmEzYjlmMzE3ZTVlMjRi
NmVkN2Q2ZTE1YzVlY2E2OWVkMjkuLmY1MmE5MmQwM2U1MzI4YzZkOTdjNTFjMGM1MTM3OGJmNjJh
ZGM4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJz
ZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKQEAgLTQwLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDYWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZN
b3ZlKHJlcXVlc3QpLCBUeXBlOjpDU1NTdHlsZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikK
LSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9z
LCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpLCByZXF1ZXN0LmNoYXJzZXQoKSkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcAppbmRleCBjMTQ0MzAyZjAzYmQ5NTU2OWM2YzIwNDc0M2FlZGI4YmFlYWFlMzI4Li5i
YjhhZTA2M2QwN2Y1ZTg1MWJkMmVlOTc1ZDFkMmU2NmRhY2NhNTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MSHRt
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAx
MjUzYjU4MDA1YjUyZmJhMjQxMDgyODYxMjdjNGQxMzJmMGQwNDVjLi45NDAzZTY1MmM4YjI4Yzc2
MWQ0ODYwMjJkNzNkMjRmYzQ5NGMyZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRp
b24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2Nh
bGl6ZWRTdHJpbmdzLmgiCkBAIC03MzAsNyArNzMxLDcgQEAgc3RhdGljIFN0cmluZyBhZGRBdWRp
b1RyYWNrS2luZERpc3BsYXlOYW1lSWZOZWVkZWQoY29uc3QgQXVkaW9UcmFjayYgdHJhY2ssIGNv
bnMKICAgICBpZiAoKHRyYWNrLmtpbmQoKSA9PSBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdv
cmQoKSB8fCB0cmFjay5raW5kKCkgPT0gQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpICYm
ICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKSkp
CiAgICAgICAgIHJldHVybiBhZGRBdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCh0ZXh0
KTsKIAotICAgIGlmICh0cmFjay5raW5kKCkgPT0gQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdv
cmQoKSAmJiAhdGV4dC5jb250YWlucyhhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFt
ZSgpKSkKKyAgICBpZiAodHJhY2sua2luZCgpID09IGNvbW1lbnRhcnlBdG9tKCkgJiYgIXRleHQu
Y29udGFpbnMoYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKSkpCiAgICAgICAg
IHJldHVybiBhZGRBdWRpb1RyYWNrS2luZENvbW1lbnRhcnlTdWZmaXgodGV4dCk7CiAKICAgICBy
ZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDkzNThiODQ2NGJiNTkzOTEwNWE2ODk4
NDc2ZmY2OTFhZWYzYzM3ODAuLmJjY2RlNTgxNTEwY2EyZmIxZjZjN2ZkMGQ4ZDY0NDYwODU3Yzdl
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb25z
dGFudFByb3BlcnR5TWFwLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNs
dWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKQEAgLTIwNjYsNyArMjA2Nyw3IEBAIGNvbnN0
IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHlsZVNoZWV0ID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpKS0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDdm
OWUxYjdhMjcwZDJiNWRiNjFmZTk4ZDdiMTA1MDBhN2U2Y2VlMTYuLjUwODk0ZTBkMjkwY2QzY2U1
ZjIxOGJjNmYwODBiZGY4ODU4Yjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNp
bmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yNjAsNyAr
MjYxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5v
bmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRleHRFbmNv
ZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0
ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUo
Y3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgY3NzQ29udGVudFR5cGVBdG9t
KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0
cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcAppbmRleCA0MzcxMjgwNDE5YzJlYWFiODk4ODJmMTRhMzRjYTkyNTc5MjVmYzk4
Li43ZGIzYjliYjYxZmJmZjZiOTMxY2JiNTk3ZTU4ZWFhNWJlYzRlMTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYyLDcgKzM2Myw3IEBAIFN0cmlu
ZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgaW50IHBhCiAgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3Bl
cnRpZXMgd2UgY2FyZSBhYm91dC4KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJn
aW4tbGVmdCIpKSB7CiAgICAgICAgIGlmIChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQot
ICAgICAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9t
KCk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnZh
bHVlKCkpOwogICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdo
dCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBkZmEzZTgyYTYy
ODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyLi5iZTIzODM0ZDdiZTQ1OTJmZmRjMzI2MmVj
M2FlYzdmZjg2NjFjYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NX
YXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NX
YXJtaW5nLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAt
NTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFByb2Nlc3NXYXJtaW5nOjpp
bml0aWFsaXplTmFtZXMoKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBpbml0aWFs
aXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBRdWFs
aWZpZWROYW1lOjppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MThlNDJjOTlhMzIzMGUxMGFiZWUzNWJmNDUzNDI3NjBlZWY0YWE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCkBAIC0wLDAg
KzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlQXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9BdG9tRGF0
YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlv
bnNBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gY29tbWVudGFyeUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbWFpbEF0b21EYXRhOworTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOwor
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5QXRvbURh
dGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1haW5B
dG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bm9uZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBvZmZBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gb25BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gcGxhaW50ZXh0T25seUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzZWFyY2hBdG9tRGF0YTsKK01haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlc0F0
b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0
ZWxBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdGV4dEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cnVlQXRvbURhdGE7CitNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCit2b2lkIGlu
aXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IGluaXRpYWxpemVLZXk7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewor
ICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHNvIHRoaXMgZnVu
Y3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZmlyc3QuCisgICAgICAg
IEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgICAgICBhbHRlcm5hdGl2ZUF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGF1dG9BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soImF1dG8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
ICAgIGNhcHRpb25zQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJjYXB0aW9u
cyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY29tbWVudGFy
eUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiY29tbWVudGFyeSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY3NzQ29udGVudFR5cGVBdG9t
RGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvY3NzIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBlYWdlckF0b21EYXRhLmNvbnN0cnVjdFdp
dGhvdXRBY2Nlc3NDaGVjaygiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgICAgIGVtYWlsQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJl
bWFpbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgZmFsc2VB
dG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBsYXp5QXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCJsYXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgICAgICBtYWluQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJtYWlu
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBub25lQXRvbURh
dGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICBvZmZBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgb25BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBwbGFpbnRleHRPbmx5QXRvbURhdGEu
Y29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgcmVzZXRBdG9tRGF0YS5jb25zdHJ1Y3RX
aXRob3V0QWNjZXNzQ2hlY2soInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgICAgICBzZWFyY2hBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2so
InNlYXJjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3Vi
bWl0QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJtaXQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN1YnRpdGxlc0F0b21EYXRhLmNv
bnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICB0ZWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgdGV4dEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdGV4dFBsYWluQ29udGVudFR5
cGVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvcGxhaW4iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRydWVBdG9tRGF0YS5jb25z
dHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIHVybEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVj
aygidXJsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9u
QXRvbVN0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjQ2NDA3ODg2OTE5NWFkNjY3OTEyMTMyYWMxOTI5
NmFjNjJiZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29t
bW9uQXRvbVN0cmluZ3MuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZXh0ZXJuIE1haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRpdmVBdG9tRGF0
YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IGF1dG9BdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGNhcHRpb25zQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7CitleHRlcm4g
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50
VHlwZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gZWFnZXJBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOworZXh0
ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbGF6eUF0
b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gbWFpbkF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gbm9uZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb2ZmQXRvbURhdGE7CitleHRlcm4gTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRhOworZXh0
ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcGxhaW50
ZXh0T25seUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gcmVzZXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21EYXRhOworZXh0ZXJuIE1haW5U
aHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURhdGE7
CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
dWJ0aXRsZXNBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHRlbEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dFBsYWluQ29udGVudFR5
cGVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHRydWVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCitpbmxpbmUgY29uc3QgQXRvbVN0
cmluZyYgYWx0ZXJuYXRpdmVBdG9tKCkgeyByZXR1cm4gYWx0ZXJuYXRpdmVBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9BdG9tKCkgeyByZXR1cm4gYXV0b0F0
b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY2FwdGlvbnNBdG9tKCkg
eyByZXR1cm4gY2FwdGlvbnNBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIGNvbW1lbnRhcnlBdG9tKCkgeyByZXR1cm4gY29tbWVudGFyeUF0b21EYXRhLmdldCgpOyB9
CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY3NzQ29udGVudFR5cGVBdG9tKCkgeyByZXR1cm4g
Y3NzQ29udGVudFR5cGVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcm
IGVhZ2VyQXRvbSgpIHsgcmV0dXJuIGVhZ2VyQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBlbWFpbEF0b20oKSB7IHJldHVybiBlbWFpbEF0b21EYXRhLmdldCgpOyB9
CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgZmFsc2VBdG9tKCkgeyByZXR1cm4gZmFsc2VBdG9t
RGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGxhenlBdG9tKCkgeyByZXR1
cm4gbGF6eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbWFpbkF0
b20oKSB7IHJldHVybiBtYWluQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3Ry
aW5nJiBub25lQXRvbSgpIHsgcmV0dXJuIG5vbmVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNv
bnN0IEF0b21TdHJpbmcmIG9mZkF0b20oKSB7IHJldHVybiBvZmZBdG9tRGF0YS5nZXQoKTsgfQor
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIG9uQXRvbSgpIHsgcmV0dXJuIG9uQXRvbURhdGEuZ2V0
KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5QXRvbSgpIHsgcmV0
dXJuIHBsYWludGV4dE9ubHlBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHJlc2V0QXRvbSgpIHsgcmV0dXJuIHJlc2V0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBzZWFyY2hBdG9tKCkgeyByZXR1cm4gc2VhcmNoQXRvbURhdGEuZ2V0
KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXRBdG9tKCkgeyByZXR1cm4gc3Vi
bWl0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNB
dG9tKCkgeyByZXR1cm4gc3VidGl0bGVzQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBB
dG9tU3RyaW5nJiB0ZWxBdG9tKCkgeyByZXR1cm4gdGVsQXRvbURhdGEuZ2V0KCk7IH0KK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0QXRvbSgpIHsgcmV0dXJuIHRleHRBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgp
IHsgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHVybEF0b20oKSB7IHJldHVybiB1cmxBdG9tRGF0
YS5nZXQoKTsgfQorCitXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVDb21tb25BdG9tU3Ry
aW5ncygpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5
NTguLjQ1Y2NiNmIzOTY4ODJlMGVlYTI2YzExYmRmYjc2ZTFmYTJkYzVlNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDQsNyArNDUs
NyBAQCBQYXN0ZWJvYXJkQnVmZmVyOjp+UGFzdGVib2FyZEJ1ZmZlcigpID0gZGVmYXVsdDsKIAog
Ym9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0eXBlID09
ICJ0ZXh0L2h0bWwiIHx8IHR5cGUgPT0gInRleHQvdXJpLWxpc3QiOworICAgIHJldHVybiB0eXBl
ID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHx8IHR5cGUgPT0gInRleHQvaHRtbCIgfHwg
dHlwZSA9PSAidGV4dC91cmktbGlzdCI7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuRXhwb3Nl
VVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4
IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjVlYzJkOTA3MWIyZGQy
ZGVkZDYxYjQ4ZDQ4OWQ3MGZkYTdlY2UwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVNYXJr
dXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAg
bV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0KTsKKyAgICBtX2N1
c3RvbURhdGEud3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHRleHQpOwog
fQogCiB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVy
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAK
aW5kZXggYzcxMjAxNjEwOTU4N2FkNWRjNGM5ZTFjOWEzNjFkYmU4ZjY5MzMyYS4uOTRmNDFmNzRm
M2U2N2ZhM2YwZGNlOWE2YTdlOTBlYWFlMmE0MDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMjksNyArMTMwLDcgQEAgYm9vbCBBbmlt
YXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIG90aGVyLCBib29sIG1hdGNo
UHJvcGVydGllcykgY28KIAogYXV0byBBbmltYXRpb246OmluaXRpYWxOYW1lKCkgLT4gY29uc3Qg
TmFtZSYKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmFtZT4gaW5pdGlhbFZhbHVlIHsg
TmFtZSB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJub25lIiksIHRydWUgfSB9OworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBpbml0aWFsVmFsdWUgeyBOYW1lIHsgbm9uZUF0b20o
KSwgdHJ1ZSB9IH07CiAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGMwOGUxZmYx
MWU3YjcxNWI3YjlmMDhmZmJkYTc1M2Q5MmY5Mjk4OTkuLjhhMDZhYzZiZDI4NTk3MTk1OGUyZGY0
MjEzMzY1NDhhYWM0MGI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURF
TykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5
cGUuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJG
b3VyQ0MuaCIKQEAgLTMzMSwxMiArMzMyLDYgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGFw
cGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogICAgIHJldHVybiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
OwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKLXsKLSAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQbGFpbigi
dGV4dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1
cm4gdGV4dFBsYWluOwotfQotCiBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1l
ZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpOwpAQCAtNDg1LDcgKzQ4MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAKICAg
ICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcgb3IgaXMgbm90IG1lYW5pbmdmdWwsIHRy
eSB0byBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4KICAgICBBdG9tU3RyaW5nIGNvbnRhaW5l
clR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKLSAgICBpZiAoY29udGFpbmVy
VHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
KCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgeworICAgIGlmIChjb250YWluZXJU
eXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0o
KSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAg
ICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICAgICAgbV9jb250ZW50VHlw
ZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkpKTsKICAg
ICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggZWIyOWYyNThmZDE4M2U0MDIwNTk1ZWY2YWQ4NzExNDcwYzQ3MTk0
Zi4uNTUzMWY3NmY1NDhlZjA1ZmZlYTk2ZWQzMDFjYWQwM2NkNWViOTJjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIKQEAgLTY5
Miw2ICs2OTMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICAvLyBJbml0
aWFsaXplIEF0b21TdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFdURjo6QXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJIHRocmVh
ZCBzbyB0aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQgaXQncyB0
aHJlYWQtc3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA2Njcw
OGVjMDAxNGUwZTAyNzI5ODU4MGM4N2QwNzljODZiN2QzODViLi4yMmRhYmViNDJhMDQ4YmY2ZDRl
YzhkOTM1NTJlNTRjYWJkMzUwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJOYW1lcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVhYmxlLmNwcAppbmRleCBjODRkNDkwYzMyZDhjY2M3Yjc0ZjQ0N2JmYjA5NzY1MDI3YmE3
N2Q4Li5jNDQ0MTJhZDk0YTU5OWFjNjAzMWYxYmJmY2MzODZhMjBlNjM0YTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NBbmlt
YXRpb24uaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkNT
U1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUg
IkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudFRpbWVsaW5lLmgiCkBAIC0yNTcsNyArMjU4LDcgQEAgYm9vbCBTdHlsZWFibGU6
OmFuaW1hdGlvbkxpc3RDb250YWluc05ld2x5VmFsaWRBbmltYXRpb24oY29uc3QgQW5pbWF0aW9u
TGlzdCYgYW4KIAogICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9ucykgewogICAg
ICAgICBhdXRvJiBuYW1lID0gYW5pbWF0aW9uLT5uYW1lKCkuc3RyaW5nOwotICAgICAgICBpZiAo
bmFtZSAhPSAibm9uZSIgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtleWZyYW1lRWZmZWN0U3RhY2su
Y29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAmJiBrZXlmcmFtZXNSdWxlRXhp
c3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQoKSwgbmFtZSkpCisgICAgICAg
IGlmIChuYW1lICE9IG5vbmVBdG9tKCkgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtleWZyYW1lRWZm
ZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAmJiBrZXlmcmFt
ZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQoKSwgbmFtZSkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMwMiw3ICszMDMsNyBAQCB2
b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3Vy
cmVudFN0eWxlLCBjb25zdCBSZW5kZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBhdXRvJiBhbmltYXRpb25OYW1lID0gY3VycmVudEFuaW1hdGlvbi0+bmFtZSgpLnN0
cmluZzsKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1lID09ICJub25lIiB8fCBhbmltYXRp
b25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1lID09IG5vbmVB
dG9tKCkgfHwgYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgICAgIGlmICgha2V5ZnJhbWVzUnVsZUV4aXN0c0ZvckFuaW1hdGlvbihl
bGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25OYW1lKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggNGI2YzUz
MGJlOWRjZDBlZjRlNTIwYThmMTBmMmJjNDZhMTM1ZmRhYi4uYTY1ZWMxYzhlODEzZTQ2MmFmOWNl
NDE0MTFlOTIyODAwY2EwMGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgpAQCAtMTEwLDEwICsxMTEsOSBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdAogICAgIAogU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbCgiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGF1dG9SZXZlcnNlKCJhdXRvLXJldmVyc2UiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm90YXRlID0gZ2V0QXR0
cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKLSAgICBpZiAocm90YXRlID09IGF1dG9WYWwp
CisgICAgYXV0byYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsK
KyAgICBpZiAocm90YXRlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHJldHVybiBSb3RhdGVBdXRv
OwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1JldmVyc2UpCiAgICAgICAgIHJldHVybiBSb3RhdGVB
dXRvUmV2ZXJzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApp
bmRleCA1MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYwZTIwNDYxODRlLi5lNzdhMTU3MzMz
NGQ0MzNiNGRjYWZhNjAxODA3ZjMxM2Q2Y2U2NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0zMTksMTggKzMxOSwyMiBAQCBTdHJpbmcgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZnJvbUF0dHIpOwogfQogCi1ib29sIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAorc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIHN1bUF0b20oKQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gc3VtKCJzdW0iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHN1bTsKK30KKworYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0Fk
ZGl0aXZlKCkgY29uc3QKK3sKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFkZGl0aXZlQXR0cik7Ci0gICAgcmV0
dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6Qnk7
CisgICAgcmV0dXJuIHZhbHVlID09IHN1bUF0b20oKSB8fCBhbmltYXRpb25Nb2RlKCkgPT0gQW5p
bWF0aW9uTW9kZTo6Qnk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVs
YXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKLSAgICByZXR1cm4gdmFsdWUgPT0g
c3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25Nb2RlOjpUbzsKKyAgICByZXR1cm4g
dmFsdWUgPT0gc3VtQXRvbSgpICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25Nb2RlOjpU
bzsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1RhcmdldEF0dHJpYnV0ZUNTU1By
b3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAppbmRleCBmM2FkMTU3MDExNmNlMmEwN2U1MTQxMDExMGI2ZGJhZDIyODc5
NzgzLi43YzE2NjQzZWU5ZDY5N2QxMGQ0ZDYzNzgxZjFjZTM4ZjUyZDZlZTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTIx
LDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggOWFkMWU0YzM4YWU1N2RiZDhlZjNmMmNkNGZiNmU2
OWRkOWQyNDJiYi4uODk5MmVjOTkzNjhkZTNiYWNkNTc4ODZmMzhkMGJmM2U4MWI0Yzk1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKQEAg
LTIwLDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtNDAsNyArNDEsNyBAQCBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgICAgIGNhc2UgRWRnZU1v
ZGVUeXBlOjpXcmFwOgogICAgICAgICAgICAgcmV0dXJuICJ3cmFwIl9zOwogICAgICAgICBjYXNl
IEVkZ2VNb2RlVHlwZTo6Tm9uZToKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAg
ICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC01Myw3ICs1NCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxF
ZGdlTW9kZVR5cGU+IHsKICAgICAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5cGU6OkR1cGxpY2F0
ZTsKICAgICAgICAgaWYgKHZhbHVlID09ICJ3cmFwIikKICAgICAgICAgICAgIHJldHVybiBFZGdl
TW9kZVR5cGU6OldyYXA7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAibm9uZSIpCisgICAgICAgIGlm
ICh2YWx1ZSA9PSBub25lQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6
Tm9uZTsKICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6VW5rbm93bjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCmluZGV4IDA2NzAzNDE1ZTg5OTVkOGViNDU5ODAzMGI3
YjMwZmMxNDliOThkMDAuLmFmOTYzYzI4ZDA2ZDU5ZmM0Nzc3ODIwYzA1ZDM1MzQ2YjM3ZGQxYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJT
VkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKIApAQCAtNzUs
MTEgKzc2LDYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVHlwZT4g
ewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50
VHlwZT4gewotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0cmluZygpCi0gICAgewotICAg
ICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3RyaW5nID0gTUFL
RV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8iKTsKLSAgICAgICAgcmV0dXJuIGF1dG9TdHJpbmc7
Ci0gICAgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZygp
CiAgICAgewogICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRv
U3RhcnRSZXZlcnNlU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8tc3RhcnQt
cmV2ZXJzZSIpOwpAQCAtODgsNyArODQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
TWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdoZXN0RW51bVZhbHVl
KCkgeyByZXR1cm4gU1ZHTWFya2VyT3JpZW50QW5nbGU7IH0KICAgICBzdGF0aWMgU1ZHTWFya2Vy
T3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAg
ICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkpCisgICAgICAgIGlmIChzdHJpbmcgPT0gYXV0
b0F0b20oKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvOwogICAgICAg
ICBpZiAoc3RyaW5nID09IGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKSkKICAgICAgICAgICAgIHJl
dHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlOwpAQCAtOTcsNyArOTMsNyBAQCBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyT3JpZW50VHlwZSB0eXBlKQogICAgIHsKICAgICAg
ICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKLSAgICAgICAgICAgIHJldHVybiBh
dXRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICAgICAgaWYg
KHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0b1N0YXJ0UmV2ZXJzZSkKICAgICAgICAgICAgIHJl
dHVybiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRleCAwOGNmNGIwM2My
NTE1YjYyMDgwMDA1NzI1ZjAyMjkyM2I0ZDZiN2FiLi42YTAzMWIwYmM0YjI0YTVkYjc0ODM4ZTdh
ZjAwNWQ5NTEwNmM0NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCkBAIC02NSw5ICs2Niw4IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50Ojpz
ZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25zdCBBdG9tU3RyaW5nJiBTVkdTdHls
ZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBuID0gZ2V0
QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBk
ZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOworICAgIGF1dG8mIHR5cGVWYWx1ZSA9IGdldEF0dHJpYnV0
ZShTVkdOYW1lczo6dHlwZUF0dHIpOworICAgIHJldHVybiB0eXBlVmFsdWUuaXNOdWxsKCkgPyBj
c3NDb250ZW50VHlwZUF0b20oKSA6IHR5cGVWYWx1ZTsKIH0KIAogdm9pZCBTVkdTdHlsZUVsZW1l
bnQ6OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuaAppbmRleCA2YTIyNDhjN2Y4NWE2MDQ0NGQ2N2RiN2E5MWE3ZDhlYjli
Y2MxZjAwLi41ZGNlZGUzMTMzM2UwMjgzYzJjZjYwMDAyOTk4ZTVjMWJjMzU3MzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0yMCw2ICsyMCw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RleHRDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtNzcsNyArNzgsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gewogICAgICAgICBjYXNlIFNWR1RleHRQYXRo
U3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICAg
ICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOgotICAgICAgICAgICAgcmV0dXJuICJhdXRv
Il9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgICAgIGNhc2UgU1ZHVGV4
dFBhdGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1cm4gImV4YWN0Il9zOwogICAgICAg
ICB9CkBAIC04OCw3ICs4OSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0
aFNwYWNpbmdUeXBlPiB7CiAKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSBmcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAodmFsdWUgPT0g
ImF1dG8iKQorICAgICAgICBpZiAodmFsdWUgPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgIHJl
dHVybiBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOwogICAgICAgICBpZiAodmFsdWUgPT0gImV4YWN0
IikKICAgICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggMTZlYWI2
NTIwZTg4YmNjYzM1Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNS4uNGNjNWRkNzIzYjhiYTkxOGMxZTU2
OTVmMjg2N2NjZmM3ZTllYzZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHN0YXRpYyBTTUlMRXZlbnRT
ZW5kZXImIHNtaWxFbmRFdmVudFNlbmRlcigpCiAgICAgcmV0dXJuIHNlbmRlcjsKIH0KIAorc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGluZGVmaW5pdGVBdG9tKCkKK3sKKyAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgi
aW5kZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gaW5kZWZpbml0ZVZhbHVlOworfQorCiAvLyBUaGlzIGlzIHVzZWQgZm9yIGR1cmF0aW9uIHR5
cGUgdGltZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBuZWdhdGl2ZS4KIHN0YXRpYyBjb25zdCBkb3Vi
bGUgaW52YWxpZENhY2hlZFRpbWUgPSAtMS47CiAgICAgCkBAIC0zMzgsOSArMzQ0LDcgQEAgU01J
TFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3IGRhdGEpCiAg
ICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCiAgICAgYXV0byBwYXJzZSA9
IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAocGFyc2UgPT0gaW5kZWZp
bml0ZVZhbHVlLmdldCgpKQorICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlQXRvbSgpKQogICAg
ICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKIAogICAgIGRvdWJsZSByZXN1bHQg
PSAwOwpAQCAtNjk4LDggKzcwMiw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXRD
b3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU01J
TFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICh2YWx1ZSA9PSBpbmRlZmluaXRl
VmFsdWUpCisgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVBdG9tKCkpCiAgICAgICAgIHJldHVy
biBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CiAgICAgZG91YmxlIHJlc3Vs
dCA9IHZhbHVlLnN0cmluZygpLnRvRG91YmxlKCZvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCBlNzc2NWFjY2U4NDgzMzE1
ZDNiNzQ0MmM4MDA5ZDkzYmQ5MjcyNDBiLi42MGE2OTkwYjJkZDUwOGE3OTc1Y2VjMTM2MWU2YTlk
N2RiMDFmMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5VHJhaXRzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgorI2lu
Y2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYTE2ZGZjNGEyMmRiMDIzNTYyMGE3YjlmN2U5Yzc4ZDE5
N2JiOTA3Ni4uNmRhZDJkNGZlMzg5YWJlZGU5M2M5ZjY0MDdiYjZhOTZhNjRlY2IzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7Cisg
ICAgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiB9CiAKIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFs
dWUuY3BwCmluZGV4IGQyMjk1NGJiYTNmMWNlMGI4YTFkZTk2YmE2MDIxNjkzZjQ4MTMzOTEuLmMz
MDViYzBiNWUyNzg0NzVhYmJjMjQ3NmI4YjIyMmNmNDllYmRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhWYWx1ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJYUGF0aFZhbHVlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2lu
Y2x1ZGUgIlhQYXRoRXhwcmVzc2lvbk5vZGUuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5k
ZXggMTY1OGZjMDAwZDFmNzgwNzUyOTZlODgzMDY1MTk0MWY2MjZjMjBjNi4uN2FmZDg5MzhmYzQ0
Njg3NjBhNzg5NzA4NTU2ZGU2ZWEzMzI5Y2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1v
cnlSZWxlYXNlLmg+CkBAIC0yMjcsNiArMjI4LDcgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFs
aXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BV
UHJvY2VzczoiLCB0aGlzKTsKICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNl
ckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjppbml0
aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFu
ZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAgbWVtb3J5UHJl
c3N1cmVIYW5kbGVyLnNldExvd01lbW9yeUhhbmRsZXIoW3RoaXNdIChDcml0aWNhbCBjcml0aWNh
bCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNTMwY2JjZDVhMDZlMDQyZGI2NjVhNTA4
YTBjNmIwY2Q0ZDE4MWYxOS4uZDgxYWQ4OTEyZTJhY2E2ZDk3ZmMyNDgzOGVmNTQ0NWVkOTkxMTEz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xp
ZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpAQCAtMzE4LDYgKzMx
OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBXVEY6OlRocmVhZDo6c2V0Q3Vy
cmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIG1fc3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBwYXJhbWV0ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOwogICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxl
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRp
YWxpemVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFs
aXplQ29jb2EubW0KaW5kZXggYzI4MGNmZmUzOTgzZmZjOWRmY2M1ZjUxNjRiMzRjNjQ0YjMyYWY2
Zi4uYjRkOTEyMWJjYmU3M2M3ZGQ5NDVjYjEwN2RhMDZhZDBiMjIyMjVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVKSVRPcGVyYXRp
b25zLmg+CiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHd0Zi9HZW5lcmF0ZVByb2ZpbGVzLmg+
CkBAIC01MCw2ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkluaXRpYWxpemF0aW9uQ29kZSh2b2lk
KiA9IG51bGxwdHIpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKFtOU1RocmVhZCBp
c01haW5UaHJlYWRdLCAiSW5pdGlhbGl6ZVdlYktpdDIgc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQiKTsKIAogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjpp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEluaXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAppbmRleCBlNWMwOTZmMjhkMjhhYmZm
NDNjOTM3MTRmNjVkZTdiZjMyYTMyY2RhLi4wM2ZjYzExMTlmYWIyYWIxY2IwOTdkYjI4MGNlMTgx
OThjNzVhZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLaXQySW5pdGlh
bGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFs
aXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUpJVE9wZXJhdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvR2VuZXJhdGVQcm9maWxlcy5oPgpAQCAtNDUsNiArNDYsNyBAQCB2b2lkIElu
aXRpYWxpemVXZWJLaXQyKCkKICAgICBKU0M6OmluaXRpYWxpemUoKTsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6
OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgV1RGOjpSZWZDb3VudGVkQmFz
ZTo6ZW5hYmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXgg
N2Y2OGZkMzIzNjdlOTViOTdjNTM1M2ZmMjhiY2NjMWQ5ZjE1ODhkNS4uNzdiOWE1ZWEzYmVlYTU1
ZGQxYTY3MjA4YTE5MDA4MjRhOTA5Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5z
aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuaD4K
QEAgLTU0Niw2ICs1NDcsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29u
dGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgV1RGOgogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNv
cmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OmluaXQoKTsKICAgICAKICAgICBhdXRvIHBhcnNlZFJ1bGVzID0gV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoanNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKaW5kZXggODc1NTQ4YmM0ZmE1YzYyY2RiMjAzYWNhOWUx
YzVjYjdiZTUyNDViYS4uZjZhNzc2ZmI1MGI2YWMwYWEzMDczN2U2OTdiOWIxNmUwODQ5NDhiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNv
cmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250RGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZvbnRTZWxlY3Rvci5oPgpAQCAtNDcsNiArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHN0YXRpYyBGb250Q2FzY2FkZSBtYWtlRm9udChjb25zdCBXZWJGb250RGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjpp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIFN0cmluZyBmb250RmFtaWx5U3Ry
aW5nKGRlc2NyaXB0aW9uLmZhbWlseSwgZGVzY3JpcHRpb24uZmFtaWx5TGVuZ3RoKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE2YjU2Yjc4
ODYzZDM4MzE2ZDQyOTUwOTg2M2RiM2E1ZTllYWE4MWUuLjNkMjUwY2ZhMzNkODZkYjVlMWJlZjg5
ZTU0ZjM1NTgyNGQxMTQ0ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEg
Y29tbW9uIGhlYWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlQmFja2VuZCk6
CisKIDIwMjItMDQtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgPGJvZHk+IHdpdGggb3ZlcmZsb3c6aGlkZGVuIENTUyBpcyBzY3JvbGxhYmxlIG9u
IGlPUyBzdGFuZGFsb25lIHdlYiBhcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDdiNjg2OTdlNjRmZWRm
ZTg2OWM3MTg5OGJkZjNlM2U0YmI2MjlkNDkuLjdjZjZiNzI1NTFmYTQzNzRhN2ExMDM2MzliZDJl
ZWFjZTdkZmVlNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbWJpbmVkVVJMRmlsdGVycy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25BY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQ29t
cGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgpAQCAt
MjEzLDYgKzIxNCw3IEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHJlcXVlc3RJblRvcEFuZEZy
YW1lVVJMcyhBU0NJSUxpdGVyYWwgdXJsLCBBU0NJSUxpdGVyYWwKIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgbWFrZUJhY2tlbmQoU3RyaW5nJiYganNvbikKIHsK
ICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0
b21TdHJpbmdzKCk7CiAgICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoanNvbikpOwogICAgIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKICAgICBiYWNrZW5kLmFkZENvbnRl
bnRFeHRlbnNpb24oInRlc3RGaWx0ZXIiX3MsIFdURk1vdmUoZXh0ZW5zaW9uKSwgeyB9KTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVyLmNwcAppbmRleCBiOWRiNTkwZTc0MmM5ZmRm
NjgzMTZlNjQ3OWI2YTdkOTVmZjY3MjIyLi40NmMzM2Q5ZTM5NjRlNTVjYjZkY2QyYWU5ZmJiNTU4
NzFlNmZmNmJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0c0NvbnRyb2xsZXIuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdHNDb250cm9s
bGVyLmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTc3LDYgKzc4LDcgQEAgVGVzdHNDb250cm9s
bGVyOjpUZXN0c0NvbnRyb2xsZXIoKQogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
ICAgICBXVEY6OnNldFByb2Nlc3NQcml2aWxlZ2VzKGFsbFByaXZpbGVnZXMoKSk7CiAgICAgQXRv
bVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogfQogCiBib29sIFRlc3RzQ29udHJvbGxlcjo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJn
dikK
</data>
<flag name="commit-queue"
          id="486890"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458103</attachid>
            <date>2022-04-21 16:57:21 -0700</date>
            <delta_ts>2022-04-22 17:44:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220421165720.patch</filename>
            <type>text/plain</type>
            <size>127742</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU0OTc5ZjY2NWJkYmYxZmM1NDgyMDVm
OTE5NDFkZjI5NWM4ZmQ4NzkuLmQyOWFiNWM4YjdmMzM4YzA5MTBjOTZjYjUyNDcxNzczNTIwYzYy
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5oOgor
ICAgICAgICAoV1RGOjp4bWxuc0F0b20pOgorICAgICAgICAoV1RGOjp0cnVlQXRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmZhbHNlQXRvbSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMjEgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyOTI4NjMpOiBzdGQ6OnJlbW92ZV9jdnJlZl90IG5vdCBkZWZpbmVkIGluIEdDQzk8CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYWE4MGQ0NjI1MzM1ZDRjMzZjM2MwMmM0ODA0OTAxZTU5YjJjMTAzZC4uMWUxNGI0
ZGNkOWFmZGM2ZWRhNDQ1NTViZjc4ODI0Nzg5NjIyNDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyNiBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhlYWRlciB0byBwcm9t
b3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldENvbnRlbnRIaW50KToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25FZmZlY3Q6OmdldFRpbWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyk6CisgICAgICAgICogYW5pbWF0aW9uL0Vm
ZmVjdFRpbWluZy5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmlzVmFs
aWRDU1NTZWxlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAg
KiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmRpc3BsYXkg
Y29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUZlYXR1cmVOYW1lczo6aW5pdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RGF0YUZyb21JdGVtTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRlc2lnbk1vZGUgY29uc3QpOgor
ICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZENTU0NvbnRlbnRUeXBlKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvRm9udFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemF0aW9uRm9yQ1NTKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1v
dmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6cHJvcGVydHlWYWx1
ZUZvck5vZGUpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9y
RWxlbWVudCk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfZW50ZXJFbGVtZW50KToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1U
b0ZyYWdtZW50KToKKyAgICAgICAgKiBodG1sL0F1dG9jYXBpdGFsaXplLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmluZ0ZvckF1dG9jYXBpdGFsaXplVHlwZSk6CisgICAgICAgICogaHRtbC9B
dXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21I
VE1MRm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c2F2
ZUZvcm1Db250cm9sU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJs
ZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9FbnRlcktleUhpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlVmFsdWVG
b3JFbnRlcktleUhpbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5
RnVuY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1ZhbGlk
RGlyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRBdXRvY29ycmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGFpbnRleHRPbmx5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICog
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50OjphdXRvY29tcGxldGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OmxvYWRpbmdGb3JC
aW5kaW5ncyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncyBjb25zdCk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnByZWxvYWQgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0aW9uU3Ry
aW5nKToKKyAgICAgICAgKiBodG1sL0lucHV0TW9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dE1vZGVOYW1lczo6bm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1vZGVOYW1lczo6
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1vZGVOYW1lczo6dGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRN
b2RlTmFtZXM6OmVtYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjpzZWFy
Y2gpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OmVtYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6c2VhcmNoKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzdWJtaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGVOYW1lczo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dXJs
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojp1cGRhdGVJbm5l
clRleHRFbGVtZW50RWRpdGFiaWxpdHlJbXBsKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aXNWYWxpZEtpbmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjptYWluS2V5d29yZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCk6IERl
bGV0ZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kS2V5d29yZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y2FwdGlvbnNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6cG9zaXRpb25BbGlnbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWVFRDdWU6OnNldFBvc2l0aW9uQWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjp0b0pTT04gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0tleXdvcmQpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrOjppc1ZhbGlkS2luZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRv
Y3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlRW5jb2RpbmdUeXBlKToK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVz
b3VyY2VUb0FyY2hpdmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hlZENT
U1N0eWxlU2hlZXQpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZEF1ZGlvVHJhY2tLaW5kRGlzcGxheU5hbWVJZk5lZWRlZCk6
CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFNvdXJjZTo6RXZlbnRTb3VyY2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2Vy
aWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkpOgorICAgICAgICAq
IHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1p
bmc6OmluaXRpYWxpemVOYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmlu
Z3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3Ry
aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjphbHRlcm5hdGl2ZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6YXV0
b0F0b20pOgorICAgICAgICAoV2ViQ29yZTo6Y2FwdGlvbnNBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbW1lbnRhcnlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc0NvbnRlbnRUeXBlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjplYWdlckF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZW1h
aWxBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmZhbHNlQXRvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpsYXp5QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjptYWluQXRvbSk6CisgICAgICAgIChXZWJD
b3JlOjpub25lQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpvZmZBdG9tKToKKyAgICAgICAgKFdl
YkNvcmU6Om9uQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpwbGFpbnRleHRPbmx5QXRvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXNldEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJtaXRBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnN1
YnRpdGxlc0F0b20pOgorICAgICAgICAoV2ViQ29yZTo6dGVsQXRvbSk6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UGxhaW5Db250ZW50VHlwZUF0
b20pOgorICAgICAgICAoV2ViQ29yZTo6dHJ1ZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6dXJs
QXRvbSk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0aWFs
TmFtZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW06CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VR
dWlja0xvb2tGb3JNSU1FVHlwZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6YW5pbWF0aW9uTGlzdENvbnRhaW5zTmV3bHlWYWxp
ZEFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OnVwZGF0ZUNT
U0FuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRl
TW9kZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3VtQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25F
bGVtZW50Ojppc0FkZGl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlv
bkVsZW1lbnQ6OmlzQWNjdW11bGF0ZWQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5
cGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxFZGdl
TW9kZVR5cGU+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyVHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+
Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR01h
cmtlck9yaWVudFR5cGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0
eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6YXV0b1N0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHls
ZUVsZW1lbnQ6OnR5cGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhY2lu
Z1R5cGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxT
VkdUZXh0UGF0aFNwYWNpbmdUeXBlPjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRlZmluaXRlQXRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCBjb25zdCk6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1fbm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiB4bWwvWFBhdGhWYWx1
ZS5jcHA6CisKIDIwMjItMDQtMjEgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4K
IAogICAgICAgICBPbmx5IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGV7Q2hpbGRyZW4sTm9kZX0gb25j
ZSB3aGVuIHByb2Nlc3Npbmcgbm90aWZpY2F0aW9ucyBpbiBBWE9iamVjdENhY2hlOjp1cGRhdGVJ
c29sYXRlZFRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGI3MDAwYTI2YThiYzVhMjc4YTcwYWQyZDg1MGYyNThk
YTZmNmVjMy4uZjQwMzUyZTIyODgyY2Y1M2QyYzRmNzE5OTg2M2E5ZGIwZWIyZjY2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9uIGhl
YWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpydW5Jbml0aWFsaXph
dGlvbkNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVM
aXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QpOgorCiAyMDIyLTA0LTIxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgaXMgYnJva2VuIG9uIHNo
aXBwaW5nIG1hY09TIGR1ZSB0byBUQkEgYW5ub3RhdGlvbnMgcmVwbGFjZW1lbnQgaW4gQVBJIGhl
YWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhMjA3OWYzYWI1ZjZhOGU4YTg1
YmI1MTY5OGJmMWNlNDI3ZTBkOTM0Li5lYWU2NzE0M2NmZTYwYWYxNDExYTI3NTkzMjczMDZiMTNh
MjQxNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjItMDQtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1vbiBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRH
cmFwaGljcy5jcHA6CisgICAgICAgIChtYWtlRm9udCk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZzo6dHJ1bmNhdGUo
KSBhbmQgdXNlIFN0cmluZzo6bGVmdCgpIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbVN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
Y3BwCmluZGV4IDkzMGZjYjI5OTc2ODQ4ZDMxOGZjYmUxMjgzNGE5ZjRiM2VjNWE4MDMuLjU0ZTVi
MTU2YTIxYmViMjA5NTY0ODU1NGNhN2M0ZmEwN2NhM2ExY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcApAQCAtMTM3LDggKzEzNyw2IEBAIFdURl9FWFBPUlRfUFJJVkFURSBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZW1wdHlBdG9tRGF0YTsKIFdURl9FWFBPUlRf
UFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN0
YXJBdG9tRGF0YTsKIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1h
aW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sbnNBdG9tRGF0
YTsKLVdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsKLVdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFk
TGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIHZv
aWQgQXRvbVN0cmluZzo6aW5pdCgpCiB7CkBAIC0xNTksOCArMTU3LDYgQEAgdm9pZCBBdG9tU3Ry
aW5nOjppbml0KCkKICAgICAgICAgc3RhckF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3ND
aGVjaygiKiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1s
QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJ4bWwiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHhtbG5zQXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCJ4bWxucyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICAgICAgdHJ1ZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidHJ1
ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgZmFsc2VBdG9t
RGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CmluZGV4IDc2MzExNWE2NjY3Yjg4ODNiZTVjYmNlM2JlYmY0NTQ2MDMxMzU5NWIuLjBhZGY1MjIz
YmI2MDI5YzNkZTk4OWM2ODMxNzQwMTY2ZjA2YzcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCkBAIC0yOTMsMTYgKzI5MywxMiBAQCBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRhOwogZXh0ZXJuIFdU
Rl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IHN0YXJBdG9tRGF0YTsKIGV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB4bWxBdG9tRGF0YTsKIGV4dGVy
biBXVEZfRVhQT1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiB4bWxuc0F0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRydWVBdG9tRGF0YTsK
LWV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOwogCiBpbmxpbmUgY29uc3QgQXRvbVN0cmlu
ZyYgbnVsbEF0b20oKSB7IHJldHVybiBudWxsQXRvbURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBlbXB0eUF0b20oKSB7IHJldHVybiBlbXB0eUF0b21EYXRhLmdldCgpOyB9
CiBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgc3RhckF0b20oKSB7IHJldHVybiBzdGFyQXRvbURh
dGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxBdG9tKCkgeyByZXR1cm4g
eG1sQXRvbURhdGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxuc0F0b20o
KSB7IHJldHVybiB4bWxuc0F0b21EYXRhLmdldCgpOyB9Ci1pbmxpbmUgY29uc3QgQXRvbVN0cmlu
ZyYgdHJ1ZUF0b20oKSB7IHJldHVybiB0cnVlQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBmYWxzZUF0b20oKSB7IHJldHVybiBmYWxzZUF0b21EYXRhLmdldCgpOyB9
CiAKIGlubGluZSBBdG9tU3RyaW5nIEF0b21TdHJpbmc6OmZyb21VVEY4KGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7CkBAIC0zNjIsOSArMzU4LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PEF0b21TdHJpbmc+IHsKIHVz
aW5nIFdURjo6QXRvbVN0cmluZzsKIHVzaW5nIFdURjo6bnVsbEF0b207CiB1c2luZyBXVEY6OmVt
cHR5QXRvbTsKLXVzaW5nIFdURjo6ZmFsc2VBdG9tOwogdXNpbmcgV1RGOjpzdGFyQXRvbTsKLXVz
aW5nIFdURjo6dHJ1ZUF0b207CiB1c2luZyBXVEY6OnhtbEF0b207CiB1c2luZyBXVEY6OnhtbG5z
QXRvbTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZjhiYTk5NTc5ZTY1NzM3MDEwY2Q0Nzc0YjNl
NDljMzRkYjkxM2NkMS4uNWE4OWY5ODc0N2IyZTAwYmM5MDBhY2M5N2U0NzIwNGQ5MTQ2MDU1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQwLDYgKzEyNDAsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vQ1BVTW9uaXRvci5oCiAgICAgcGxh
dGZvcm0vQ29sb3JDaG9vc2VyLmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXJDbGllbnQuaAor
ICAgIHBsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmgKICAgICBwbGF0Zm9ybS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmgKICAgICBwbGF0
Zm9ybS9Db250ZXh0TWVudS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAppbmRleCA0OWYzYjMwNzU3MjExNTc3Nzc4NTljMGJh
YjE2MDFkMGNmOGU5NWU5Li40NjljYzNhZGI1ZmJmN2IzODE0OTJkM2VjZDQyMTkyNmNkY2ZkZmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNsaXBib2FyZEltYWdl
UmVhZGVyLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjM0LDcgKzIzNSw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpn
ZXRUeXBlKENsaXBib2FyZEl0ZW0mIGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVy
cmVkUHJvCiAgICAgICAgIHJlc3VsdEFzU3RyaW5nID0gYWN0aXZlUGFzdGVib2FyZCgpLnJlYWRV
UkwoaXRlbUluZGV4LCB0aXRsZSkuc3RyaW5nKCk7CiAgICAgfQogCi0gICAgaWYgKHR5cGUgPT0g
InRleHQvcGxhaW4iX3MpIHsKKyAgICBpZiAodHlwZSA9PSB0ZXh0UGxhaW5Db250ZW50VHlwZUF0
b20oKSkgewogICAgICAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHBsYWluVGV4dFJlYWRlcjsKICAg
ICAgICAgYWN0aXZlUGFzdGVib2FyZCgpLnJlYWQocGxhaW5UZXh0UmVhZGVyLCBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5OjpJZ25vcmVVUkwsIGl0ZW1JbmRleCk7CiAgICAgICAgIHJlc3VsdEFz
U3RyaW5nID0gV1RGTW92ZShwbGFpblRleHRSZWFkZXIudGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRl
eCBjOWI3ZmMxZDUyZmE2ZmEyNDYzZDUwZjU2Yjg5NGViNWU2ZmI1MDQxLi44M2JmOWU1MDE2M2Y0
ZTljY2ExYjM0YWEzMGE0NWEyNGE4NmI0YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0xMzYsNyArMTM3LDYgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgTWVkaWFTdHJlYW1UcmFjazo6Y29udGVudEhpbnQoKSBjb25zdAogICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3BlZWNoSGludCgic3BlZWNo
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbXVzaWNIaW50KCJtdXNpYyIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRldGFpbEhpbnQoImRldGFpbCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRIaW50KCJ0ZXh0IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW90aW9uSGludCgibW90aW9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgc3dpdGNoIChtX3ByaXZhdGUtPmNvbnRlbnRIaW50
KCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRy
YWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6SGludFZhbHVlOjpEZXRhaWw6CiAgICAgICAgIHJldHVybiBkZXRhaWxIaW50OwogICAgIGNh
c2UgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OkhpbnRWYWx1ZTo6VGV4dDoKLSAgICAgICAgcmV0
dXJuIHRleHRIaW50OworICAgICAgICByZXR1cm4gdGV4dEF0b20oKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAgICAgfQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0Q29udGVudEhpbnQoY29uc3QgU3RyaW5nJiBoaW50VmFs
dWUpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFs
dWU6OkRldGFpbDsKICAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJtb3Rpb24iKQogICAg
ICAgICAgICAgdmFsdWUgPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpNb3Rp
b247Ci0gICAgICAgIGVsc2UgaWYgKGhpbnRWYWx1ZSA9PSAidGV4dCIpCisgICAgICAgIGVsc2Ug
aWYgKGhpbnRWYWx1ZSA9PSB0ZXh0QXRvbSgpKQogICAgICAgICAgICAgdmFsdWUgPSBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0OwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhmYzAxMTMzYmNj
ZmUxZjJjZDk3MGU4OWUuLjVkMjMxNmZhYzczOTMxMGM1ODBkYjZiZTVkYmVmNDFhOTkxYWZjMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xODY3LDYgKzE4NjcsNyBAQCBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKK3Bs
YXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcAogcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCiBw
bGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5OGQ4ZWVhMmFmZDg1ZDE1ODYwNjZmYjNjNzA5MmI3NjNiNWU3MjkxLi4wZjhlZTA3YzFkZDQz
ZjFkZDNkM2JlZTBkZDUzMmVlNDA0YjUyMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzMyLDYgKzI3MzIsNyBAQAogCQk4
MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUEyRjJDMUUyMDRBNkQwMDM5
MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVEMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JS
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi87IH07CiAJCTgz
OUJFNkQ1MjRGNTg3NjIwMDRERjUwRiAvKiBJSVJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUJFNkQyMjRGNTg3NTUwMDRERjUwRiAvKiBJ
SVJGaWx0ZXIuaCAqLzsgfTsKKwkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0
b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0EyQUJEQjI0RDg2
REUwMDBFMkQ3M0QgLyogRGVsYXlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0EyQUJEODI0RDg2REM2MDBFMkQ3M0QgLyogRGVsYXlPcHRp
b25zLmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNBQ0Qw
MTMyNTIyOUUxMDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0FDRDAxMDI1MjI5RTA0MDAwRDEyNEUgLyog
V29ya2xldE9wdGlvbnMuaCAqLzsgfTsKQEAgLTEyMzA0LDYgKzEyMzA1LDggQEAKIAkJODM5QUFG
RUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzOUJFNkQyMjRGNTg3NTUwMDRERjUwRiAvKiBJSVJGaWx0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUlSRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzOUJFNkQ0MjRGNTg3NTUwMDRERjUwRiAvKiBJSVJGaWx0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUlSRmlsdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM5QzY5Q0QyODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0
b21TdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1v
bkF0b21TdHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM5QzY5Q0Uy
ODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1vbkF0b21TdHJpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQTJBQkQ4MjREODZEQzYwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVsYXlPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzQTJBQkRBMjREODZEQzcwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERlbGF5
T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZE
N0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzAxNjksNiArMzAxNzIsOCBAQAogCQkJCUMzMzBBMjIxMTNFQzE5
NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLywKIAkJCQlDMzdDREVCQzE0OUVGMjAzMDA0
MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggKi8sCiAJCQkJQkNDOENGQ0EwOTg2Q0QyNDAw
MTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiAqLywKKwkJCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlC
QUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovLAorCQkJCTgzOUM2OUNFMjgxMEQxMUMwMEU2
OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5oICovLAogCQkJCUExNDA5MEZDMUFBNTFFNDgwMDkx
MTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCAqLywKIAkJCQk0MUQwMTVDOTBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovLAogCQkJCTQxRDAxNUM4MEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovLApAQCAtMzQwNjcsNiArMzQwNzIsNyBAQAog
CQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5
MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM5QzY5RDAyODEwRDExRDAw
RTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRG
QzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYwRjMyQjFERkJCMTA3MDA0MTZENkMgLyogQ29t
bW9uVk0uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uRWZmZWN0LmNwcAppbmRleCA0MzFmZGVhMTU3MjYyNzJhMmI2OGY5NzRiMjZlMGFlNmE1NWZj
MGFhLi4wN2UxOTgzNmQ3MGQxZGIxNTNlODg2ZjE4MjdmNmI5YmYwZTFjM2Y5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdC5oIgogCiAjaW5jbHVkZSAiQ1NTQW5pbWF0aW9u
LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJGaWxsTW9kZS5o
IgogI2luY2x1ZGUgIkpTQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCIKICNpbmNsdWRlICJXZWJBbmlt
YXRpb24uaCIKQEAgLTY5LDcgKzcwLDcgQEAgRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6
Z2V0VGltaW5nKCkgY29uc3QKICAgICB0aW1pbmcuaXRlcmF0aW9uU3RhcnQgPSBtX2l0ZXJhdGlv
blN0YXJ0OwogICAgIHRpbWluZy5pdGVyYXRpb25zID0gbV9pdGVyYXRpb25zOwogICAgIGlmICht
X2l0ZXJhdGlvbkR1cmF0aW9uID09IDBfcykKLSAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gImF1
dG8iX3M7CisgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IGF1dG9BdG9tKCk7CiAgICAgZWxzZQog
ICAgICAgICB0aW1pbmcuZHVyYXRpb24gPSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSht
X2l0ZXJhdGlvbkR1cmF0aW9uKTsKICAgICB0aW1pbmcuZGlyZWN0aW9uID0gbV9kaXJlY3Rpb247
CkBAIC0zOTksNyArNDAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQW5pbWF0aW9uRWZmZWN0Ojp1
cGRhdGVUaW1pbmcoc3RkOjpvcHRpb25hbDxPcHRpb25hbEVmZmVjdFRpbWkKICAgICAgICAgICAg
IGlmIChkdXJhdGlvbkFzRG91YmxlIDwgMCB8fCBzdGQ6OmlzbmFuKGR1cmF0aW9uQXNEb3VibGUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdGQ6OmdldDxTdHJpbmc+KHRpbWluZy0+ZHVy
YXRpb24udmFsdWUoKSkgIT0gImF1dG8iKQorICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmlu
Zz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSBhdXRvQXRvbSgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcuaAppbmRleCAyMTA3M2ZhNDczMDNmNjRm
ZDJiYTI2MTlhZTkxODdmNTgxNTk1MDZlLi5lOGMwZjFiZDhkOTU5MjE0NmMxMTNlNjQzNDU5YWMx
MGRkYmZkOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0VGlt
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmlu
Z3MuaCIKICNpbmNsdWRlICJGaWxsTW9kZS5oIgogI2luY2x1ZGUgIlBsYXliYWNrRGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTMzLDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IEVmZmVjdFRpbWluZyB7Ci0gICAgc3RkOjp2YXJpYW50PGRvdWJsZSwg
U3RyaW5nPiBkdXJhdGlvbiB7ICJhdXRvIl9zIH07CisgICAgc3RkOjp2YXJpYW50PGRvdWJsZSwg
U3RyaW5nPiBkdXJhdGlvbiB7IGF1dG9BdG9tKCkgfTsKICAgICBkb3VibGUgZGVsYXkgeyAwIH07
CiAgICAgZG91YmxlIGVuZERlbGF5IHsgMCB9OwogICAgIGRvdWJsZSBpdGVyYXRpb25TdGFydCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggMDhmYTQ2N2M4YTJlMzVlODAxOTM3Nzkw
Y2YyZDkwZmJiOGJlY2YwZi4uNDhjMjczMmIxMzBhYmY0YTQwYTkwZGI2NmIyNjRlOGVhYjQzYmRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvbkVycm9yLmgiCiAj
aW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuaCIKQEAgLTIwNCw2ICsyMDUsNyBAQCBib29sIGlzVmFsaWRDU1NTZWxlY3Rv
cihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5n
cygpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBDU1NQYXJzZXJDb250ZXh0IGNv
bnRleHQoSFRNTFF1aXJrc01vZGUpOwogICAgIENTU1BhcnNlciBwYXJzZXIoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBiNGYzZDg3OGQ3NWFhZTdjMTNjNmM1YjM3
ZjExY2EzNzk5ZjYxZDMwLi4zNDY3Nzk2ZmIzYTFmYzg3N2NlOGEwMjBkOTU0ZTQ0NWE4OGVjN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVl
dC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAg
IENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2Rl
LCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNo
ZWV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAKICAgICBib29sIGlzQ1NTU3R5bGVT
aGVldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBTdHJpbmcgdHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJ0ZXh0L2NzcyJfczsgfQorICAgIFN0cmluZyB0eXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gY3NzQ29udGVudFR5cGVBdG9tKCk7IH0KIAogICAgIFJlZjxTdHls
ZVNoZWV0Q29udGVudHM+IG1fY29udGVudHM7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVl
dCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCA0ZDUxMWI1ZTY4NTQxMzA1
ZDQwYzFjMzNiNzkwOWE2NTA2NTU2ZjYyLi5kOTViMDk4NzNkZGU4YTdiN2IxY2E3YmI0ZjVmMzZk
MDAwMDIzNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBT
dHJpbmcgRm9udEZhY2U6OmRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBjb25zdCBh
dXRvJiBsb2FkaW5nQmVoYXZpb3JXcmFwcGVkID0gbV9iYWNraW5nLT5sb2FkaW5nQmVoYXZpb3Io
KTsKICAgICBpZiAoIWxvYWRpbmdCZWhhdmlvcldyYXBwZWQpCi0gICAgICAgIHJldHVybiAiYXV0
byJfczsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobG9hZGluZ0JlaGF2aW9yV3JhcHBlZC52YWx1ZSgpKS0+
Y3NzVGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApp
bmRleCAyZjViOGIwNDczOTVhMmNiZDc1NWFjMWNmNTM0YmZkY2VmNTcxMDU3Li42ZDUwOTE5ZDk1
MTZhYjc1NzRkYTA1ZjIxYjBlMDRkNjY5NzAwZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YUZlYXR1cmVOYW1lcy5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5h
bWVzIHsKIApAQCAtMzMsNiArMzUsNyBAQCB2b2lkIGluaXQoKQogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQXRvbVN0cmluZzo6
aW5pdCgpOworICAgICAgICBpbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNkZWZpbmUg
SU5JVElBTElaRV9HTE9CQUwobmFtZSwgc3RyaW5nKSBuYW1lLmNvbnN0cnVjdChzdHJpbmcsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgQ1NTX01FRElBUVVFUllf
TkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKElOSVRJQUxJWkVfR0xPQkFMKQogI3VuZGVmIElO
SVRJQUxJWkVfR0xPQkFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDBlZDJi
ZWQ5NjIzMjA0ZjlhMGJlYjlmY2IxNWExMGRkN2U1ZDhmMzkuLjY2NmJjYzc5NjU4YzlkZWRmMTli
Mjk1Nzk1NDNjOGJjYjYzNjkwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZEltYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJEYXRhVHJhbnNmZXJJdGVtLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbUxpc3Qu
aCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgc3Rh
dGljIFN0cmluZyBub3JtYWxpemVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIFN0cmlu
ZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHR5cGUp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInRl
eHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKLSAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIl9zOworICAgICAgICByZXR1cm4gdGV4dFBsYWluQ29udGVudFR5
cGVBdG9tKCk7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlw
ZS5zdGFydHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJp
LWxpc3QiX3M7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIp
KQpAQCAtMjY1LDcgKzI2Niw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1M
aXN0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBhdXRv
IHVybCA9IFVSTCh7IH0sIGRhdGEpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIHNhbml0aXplZERhdGEgPSB1cmwuc3RyaW5nKCk7Ci0gICAgfSBlbHNlIGlmICh0eXBl
ID09ICJ0ZXh0L3BsYWluIikKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gdGV4dFBsYWluQ29udGVu
dFR5cGVBdG9tKCkpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBkYXRhOyAvLyBOb3RoaW5nIHRv
IHNhbml0aXplLgogCiAgICAgaWYgKHNhbml0aXplZERhdGEgIT0gZGF0YSkKQEAgLTQyOCw3ICs0
MjksNyBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVu
dChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKICAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7Ci0gICAg
cGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CisgICAg
cGFzdGVib2FyZC0+d3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHBsYWlu
VGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRl
eHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CkBAIC00
NjcsNyArNDY4LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmNvbW1pdFRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBuYXRpdmVQYXN0ZWJvYXJkKQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZm
ZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgcmV0dXJuIG5vbmVBdG9t
KCk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiMTNhZDQ5M2YwYzZiYTQyZTg5NTE3ZTQyMWQ0
OWJhNDUyMTczMTk4Li42MjFmMGZhMTAyMzcxM2EwNDFmZmZhMmYxNWRlZWJlOTIxZjMxNzI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21tZW50LmgiCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2lu
Y2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVu
dC5oIgpAQCAtNjAwOSw3ICs2MDEwLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShJ
bmhlcml0ZWRCb29sIHZhbHVlKQogCiBTdHJpbmcgRG9jdW1lbnQ6OmRlc2lnbk1vZGUoKSBjb25z
dAogewotICAgIHJldHVybiBpbkRlc2lnbk1vZGUoKSA/ICJvbiJfcyA6ICJvZmYiX3M7CisgICAg
cmV0dXJuIGluRGVzaWduTW9kZSgpID8gb25BdG9tKCkgOiBvZmZBdG9tKCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggZDJhYThkMWY3ZTM5OWUz
M2RmYTVjMTExMDY0MWQyZjQwMWU2YzNhMC4uMDVjODJmYmFhOTE4YmUwYTFlNjM3ODViMmFhZGYz
OGI3ZTU0ZDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRWxlbWVudElu
bGluZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNTEsOCArMTUyLDcgQEAgaW5saW5l
IGJvb2wgaXNWYWxpZENTU0NvbnRlbnRUeXBlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpCiAgICAgLy8gRklYTUU6IFNob3VsZCBNSU1FIHR5cGVzIHJlYWxseSBiZSBj
YXNlIHNlbnNpdGl2ZSBpbiBYTUwgZG9jdW1lbnRzPyBEb2Vzbid0IHNlZW0gbGlrZSB0aGV5IHNo
b3VsZCwKICAgICAvLyBldmVuIHRob3VnaCBvdGhlciB0aGluZ3MgYXJlIGNhc2Ugc2Vuc2l0aXZl
IGluIHRoYXQgY29udGV4dC4gTUlNRSB0eXBlcyBzaG91bGQgbmV2ZXIgYmUgY2FzZSBzZW5zaXRp
dmUuCiAgICAgLy8gV2Ugc2hvdWxkIHZlcmlmeSB0aGlzIGFuZCB0aGVuIHJlbW92ZSB0aGUgaXNI
VE1MRWxlbWVudCBjaGVjayBoZXJlLgotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3NzQ29udGVudFR5cGUoInRleHQvY3NzIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1l
bnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0ZXh0L2NzcyIpIDog
dHlwZSA9PSBjc3NDb250ZW50VHlwZTsKKyAgICByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50
KCkgPyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9jc3MiKSA6IHR5
cGUgPT0gY3NzQ29udGVudFR5cGVBdG9tKCk7CiB9CiAKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93
bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGMyZjNi
NzMwN2QwZDA5MGEzM2NjNzE2NmRhNjIzNDlmNTJiNTBjZWUuLjkxYmM0ZmViODlkYzU4M2JmMGIz
ZjcwNzA1ZmJkMmE4YmRjMjlkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC05NCw3ICs5NSw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBT
dHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMtPmdldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4o
InR5cGUiX3MpOwogCi0gICAgICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09
ICJ0ZXh0L2NzcyI7CisgICAgICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09
IGNzc0NvbnRlbnRUeXBlQXRvbSgpOwogI2lmIEVOQUJMRShYU0xUKQogICAgICAgICBtX2lzWFNM
ID0gdHlwZSA9PSAidGV4dC94bWwiIHx8IHR5cGUgPT0gInRleHQveHNsIiB8fCB0eXBlID09ICJh
cHBsaWNhdGlvbi94bWwiIHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfHwgdHlw
ZSA9PSAiYXBwbGljYXRpb24vcnNzK3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24vYXRvbSt4
bWwiOwogICAgICAgICBpZiAoIW1faXNDU1MgJiYgIW1faXNYU0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAppbmRleCA1NGQ2Y2YwZTU4MDc5NzQxMTVlNmNl
ZWQ3MjY3Yzc4ZmJkZTIyMzRlLi5iMjU2YTMyYTY4ZWUxMGJhYThkZmJkODU0MzAyMjE1OTEwNjkz
MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGV4
dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRl
ICJFbGVtZW50UmFyZURhdGEuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9udFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCmlu
ZGV4IDI4ODQ4MGI2NTc3ZThlZDFhMDNmNzU4YjBiNDg0N2I4MTc1ZmZlODIuLjI3MDcyNDBiY2Fj
NThjNWIyMDczNjkzYzQ1MGU0MTI4M2Y5MWU5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRm9udFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
U2hhZG93LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZvbnRTaGFkb3cuaCIKIAog
I2luY2x1ZGUgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJp
bmdzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNCwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5n
IHNlcmlhbGl6YXRpb25Gb3JDU1MoY29uc3QgRm9udFNoYWRvdyYgc2hhZG93KQogewogICAgIGlm
IChzaGFkb3cub2Zmc2V0LmlzWmVybygpICYmICFzaGFkb3cuYmx1clJhZGl1cykKLSAgICAgICAg
cmV0dXJuICJub25lIl9zOworICAgICAgICByZXR1cm4gbm9uZUF0b20oKTsKIAogICAgIGlmICgh
c2hhZG93LmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgICAg
ICByZXR1cm4gbm9uZUF0b20oKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBi
dWlsZGVyLmFwcGVuZChzaGFkb3cub2Zmc2V0LndpZHRoKCksICJweCAiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWVi
M2JkMDg3MzQzMmI0ZDBjOGQ5ZjkxMGQyODdkYjFiNTk4ZGZjMy4uYTljNGM2Mzk0NzA4ZTM1YzUy
ZjJhYWQ4YjVjMmM5MDAwZTM3YTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5j
bHVkZSAiRGF0YVRyYW5zZmVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTcxOCw3ICs3
MTksNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHls
ZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICAgICAgaWYgKGlzQmxvY2so
ZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIl9zLCBmYWxzZSk7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxl
KCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCAibm9uZSJfcywgZmFsc2Up
OworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5RmxvYXQsIG5vbmVBdG9tKCksIGZhbHNlKTsKICAgICAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpp
bmRleCBiNWUwYWNhNmUyMWJiMjZiYmRjM2M1OGViZDM1MDk2NWQwODQ2ZGY3Li45NGE0NjBmNTM0
OTQ4NGNhYjA4YmRlOTg4YTI3ZmIxNzQwMDBhOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJD
U1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW1wb3J0ICJDb2xvckNvbnZlcnNpb24uaCIKICNpbXBv
cnQgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgorI2ltcG9ydCAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZS5oIgogI2ltcG9ydCAiRWRpdGlu
Zy5oIgogI2ltcG9ydCAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA1M2NjNmFiMDE2YmU4MmU3
MGViNTU1NWE3OTYzZWE1MDliYmJmMzA0Li40MmI2YzIyZTU5ZTI4OGNhYjAyNjg4OTZkZmFkZGI2
MDEwMWY0OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW1w
b3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCAiQ29tbW9u
QXRvbVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW1wb3J0
ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTU5Nyw3ICs1OTgs
NyBAQCBTdHJpbmcgSFRNTENvbnZlcnRlckNhY2hlczo6cHJvcGVydHlWYWx1ZUZvck5vZGUoTm9k
ZSYgbm9kZSwgQ1NTUHJvcGVydHlJRCBwcm9wZQogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewog
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdO
YW1lKGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShub2ZyYW1lc1RhZykp
Ci0gICAgICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgICAgICByZXR1cm4gbm9uZUF0
b20oKTsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
Ym9keVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGNlbnRlclRhZykKICAgICAgICAgICAgICB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoZGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXJUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXZUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkbFRh
ZykKICAgICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZHRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShmaWVsZHNldFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShmcmFtZVRhZykKQEAgLTEwMTcsNyArMTAxOCw3IEBAIE5TRGlj
dGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogICAgIFN0cmluZyBmb250S2VybmluZyA9IF9jYWNoZXMtPnByb3BlcnR5
VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udEtlcm5pbmcpOwogICAgIFN0cmlu
ZyBsZXR0ZXJTcGFjaW5nID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwg
Q1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKTsKICAgICBpZiAoZm9udEtlcm5pbmcubGVuZ3RoKCkg
fHwgbGV0dGVyU3BhY2luZy5sZW5ndGgoKSkgewotICAgICAgICBpZiAoZm9udEtlcm5pbmcgPT0g
Im5vbmUiKQorICAgICAgICBpZiAoZm9udEtlcm5pbmcgPT0gbm9uZUF0b20oKSkKICAgICAgICAg
ICAgIFthdHRycyBzZXRPYmplY3Q6QDAuMCBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgZG91YmxlIGtlcm5WYWwgPSBsZXR0ZXJTcGFjaW5n
Lmxlbmd0aCgpID8gbGV0dGVyU3BhY2luZy50b0RvdWJsZSgpIDogMC4wOwpAQCAtMTExMCw3ICsx
MTExLDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICAgICAgU3RyaW5nIGh5cGhlbmF0aW9u
ID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUJsb2NrRWxlbWVudCwgQ1NTUHJv
cGVydHlXZWJraXRIeXBoZW5zKTsKICAgICAgICAgaWYgKGh5cGhlbmF0aW9uLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBpZiAoaHlwaGVuYXRpb24gPT0gImF1dG8iKQorICAgICAgICAgICAgaWYg
KGh5cGhlbmF0aW9uID09IGF1dG9BdG9tKCkpCiAgICAgICAgICAgICAgICAgW3BhcmFncmFwaFN0
eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjEuMF07CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjAuMF07CkBAIC0x
NjEwLDcgKzE2MTEsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgQk9PTCBlbWJlZGRlZCkKIAogICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
aGVhZFRhZykgJiYgIWVtYmVkZGVkKQogICAgICAgICBfcHJvY2Vzc0hlYWRFbGVtZW50KGVsZW1l
bnQpOwotICAgIGVsc2UgaWYgKCFkaXNwbGF5VmFsdWUubGVuZ3RoKCkgfHwgIShkaXNwbGF5VmFs
dWUgPT0gIm5vbmUiIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uIiB8fCBkaXNwbGF5
VmFsdWUgPT0gInRhYmxlLWNvbHVtbi1ncm91cCIpKSB7CisgICAgZWxzZSBpZiAoIWRpc3BsYXlW
YWx1ZS5sZW5ndGgoKSB8fCAhKGRpc3BsYXlWYWx1ZSA9PSBub25lQXRvbSgpIHx8IGRpc3BsYXlW
YWx1ZSA9PSAidGFibGUtY29sdW1uIiB8fCBkaXNwbGF5VmFsdWUgPT0gInRhYmxlLWNvbHVtbi1n
cm91cCIpKSB7CiAgICAgICAgIGlmIChfY2FjaGVzLT5pc0Jsb2NrRWxlbWVudChlbGVtZW50KSAm
JiAhZWxlbWVudC5oYXNUYWdOYW1lKGJyVGFnKSAmJiAhKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUt
Y2VsbCIgJiYgW190ZXh0VGFibGVzIGNvdW50XSA9PSAwKQogICAgICAgICAgICAgJiYgIShbX3Rl
eHRMaXN0cyBjb3VudF0gPiAwICYmIGRpc3BsYXlWYWx1ZSA9PSAiYmxvY2siICYmICFlbGVtZW50
Lmhhc1RhZ05hbWUobGlUYWcpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUodWxUYWcpICYmICFlbGVt
ZW50Lmhhc1RhZ05hbWUob2xUYWcpKSkKICAgICAgICAgICAgIF9uZXdQYXJhZ3JhcGhGb3JFbGVt
ZW50KGVsZW1lbnQsIGVsZW1lbnQudGFnTmFtZSgpLCBOTywgWUVTKTsKQEAgLTE4NjUsNyArMTg2
Niw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShp
bnB1dFRhZykpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKSB7
CiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQu
dHlwZSgpID09ICJ0ZXh0IikgeworICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC50eXBlKCkg
PT0gdGV4dEF0b20oKSkgewogICAgICAgICAgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IGlucHV0
RWxlbWVudC52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBbdmFsdWUgbGVu
Z3RoXSA+IDApCiAgICAgICAgICAgICAgICAgICAgIF9hZGRWYWx1ZSh2YWx1ZSwgZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggM2FlZTljZjlkZDdkZTZlM2RjODE1MTA0
ODVlN2MxN2Y0ZTBlZWUyNC4uODBhODg0MzUwMmViNTdmMDNlZGIyZWIzMWRjMjc3MWMwZjlkMzhh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oIgogI2luY2x1ZGUgIkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5n
cy5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xMjg1LDcgKzEy
ODYsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zv
cm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAgICAvLyBXZSBhY2hpZXZlIHRo
YXQgZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRl
eHQgZm9yIHRoZSBmcmFnbWVudC4KICAgICAgICAgYXV0byBmYWtlQm9keSA9IEhUTUxCb2R5RWxl
bWVudDo6Y3JlYXRlKG91dHB1dERvYyk7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoV1RG
TW92ZShzb3VyY2VTdHJpbmcpLCBmYWtlQm9keS5wdHIoKSk7Ci0gICAgfSBlbHNlIGlmIChzb3Vy
Y2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCisgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlw
ZSA9PSB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKSkKICAgICAgICAgZnJhZ21lbnQtPnBhcnNl
ckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIFdURk1vdmUoc291cmNlU3RyaW5n
KSkpOwogICAgIGVsc2UgewogICAgICAgICBib29sIHN1Y2Nlc3NmdWxQYXJzZSA9IGZyYWdtZW50
LT5wYXJzZVhNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1
dG9jYXBpdGFsaXplLmNwcAppbmRleCBkNjdkYzc5Mjk0ODYyMTQzOTQxNWNlZmU4NjM2OTA3OGY2
NDc1ZWJkLi40MGUyYTkwZWVjMDkxNTIzMGZmMGI1MmQzNTNkYjIzNzY0MjQ1ODZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTYsMTAgKzU3LDggQEAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0b2NhcGl0YWxp
emVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSB0eXBlKQogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpEZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbEF0
b20oKTsKLSAgICBjYXNlIEF1dG9jYXBpdGFsaXplVHlwZTo6Tm9uZTogewotICAgICAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlTm9uZSgi
bm9uZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0dXJu
IHZhbHVlTm9uZTsKLSAgICB9CisgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6Ok5vbmU6Cisg
ICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpT
ZW50ZW5jZXM6IHsKICAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB2YWx1ZVNlbnRlbmNlcygic2VudGVuY2VzIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gdmFsdWVTZW50ZW5jZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQXV0b2ZpbGwuY3BwCmluZGV4IGRlNTE4NWUxN2IzN2U4NGRiMzcxNDg4YjQ2OGJmZGMz
MjU4N2Q0MjguLjlkZTcwYjdjNmFkYWMzZGVjZWUwNmQyNWNjNDJiNmM0OTEyMGY0MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQXV0b2ZpbGwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGwuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCkBAIC0xMzYsOSArMTM3
LDYgQEAgc3RhdGljIHVuc2lnbmVkIG1heFRva2Vuc0ZvckF1dG9maWxsRmllbGRDYXRlZ29yeShB
dXRvZmlsbENhdGVnb3J5IGNhdGVnb3J5KQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNwcm9jZXNzaW5nLW1vZGVsLTMKIEF1dG9maWxsRGF0YSBB
dXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbigib24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBvZmYoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLQogICAgIC8vIExhYmVsOiBEZWZhdWx0CiAgICAgLy8gMjYuIExldCB0aGUgZWxlbWVudCdz
IElETC1leHBvc2VkIGF1dG9maWxsIHZhbHVlIGJlIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBpdHMg
YXV0b2ZpbGwgaGludCBzZXQgYW5kIGF1dG9maWxsIHNjb3BlIGJlIGVtcHR5LgogICAgIC8vIDI3
LiBJZiB0aGUgZWxlbWVudCdzIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgaXMgd2VhcmluZyB0aGUg
YXV0b2ZpbGwgYW5jaG9yIG1hbnRsZSwgdGhlbiBsZXQgdGhlIGVsZW1lbnQncyBhdXRvZmlsbCBm
aWVsZCBuYW1lIGJlIHRoZSBlbXB0eSBzdHJpbmcgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAt
MTQ5LDkgKzE0Nyw5IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgICAgICAgICByZXR1
cm4geyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpIH07CiAgICAgICAgIAogICAgICAgICBh
dXRvIGZvcm0gPSBlbGVtZW50LmZvcm0oKTsKLSAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0
b2NvbXBsZXRlKCkgPT0gb2ZmKQotICAgICAgICAgICAgcmV0dXJuIHsgb2ZmLCBlbXB0eVN0cmlu
ZygpIH07Ci0gICAgICAgIHJldHVybiB7IG9uLCBlbXB0eVN0cmluZygpIH07CisgICAgICAgIGlm
IChmb3JtICYmIGZvcm0tPmF1dG9jb21wbGV0ZSgpID09IG9mZkF0b20oKSkKKyAgICAgICAgICAg
IHJldHVybiB7IG9mZkF0b20oKSwgZW1wdHlTdHJpbmcoKSB9OworICAgICAgICByZXR1cm4geyBv
bkF0b20oKSwgZW1wdHlTdHJpbmcoKSB9OwogICAgIH07CiAKIApAQCAtMTk5LDEzICsxOTcsMTMg
QEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICAvLyBhdXRvZmlsbCBoaW50IHNldCBiZSBl
bXB0eSwgYW5kIGxldCBpdHMgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIHN0cmlu
ZyAib2ZmIi4KICAgICAvLyBUaGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdv
cnkgPT0gQXV0b2ZpbGxDYXRlZ29yeTo6T2ZmKQotICAgICAgICByZXR1cm4geyBvZmYsIG9mZi5n
ZXQoKS5zdHJpbmcoKSB9OworICAgICAgICByZXR1cm4geyBvZmZBdG9tKCksIG9mZkF0b20oKS5z
dHJpbmcoKSB9OwogCiAgICAgLy8gOC4gSWYgY2F0ZWdvcnkgaXMgQXV0b21hdGljLCBsZXQgdGhl
IGVsZW1lbnQncyBhdXRvZmlsbCBmaWVsZCBuYW1lIGJlIHRoZSBzdHJpbmcgIm9uIiwKICAgICAv
LyBsZXQgaXRzIGF1dG9maWxsIGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhw
b3NlZCBhdXRvZmlsbCB2YWx1ZSBiZSB0aGUgc3RyaW5nCiAgICAgLy8gIm9uIi4gVGhlbiwgYWJv
cnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGNhdGVnb3J5ID09IEF1dG9maWxsQ2F0ZWdvcnk6OkF1
dG9tYXRpYykKLSAgICAgICAgcmV0dXJuIHsgb24sIG9uLmdldCgpLnN0cmluZygpIH07CisgICAg
ICAgIHJldHVybiB7IG9uQXRvbSgpLCBvbkF0b20oKS5zdHJpbmcoKSB9OwogCiAgICAgLy8gOS4g
TGV0IHNjb3BlIHRva2VucyBiZSBhbiBlbXB0eSBsaXN0LgogICAgIC8vIDEwLiBMZXQgaGludCB0
b2tlbnMgYmUgYW4gZW1wdHkgc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNr
YWJsZUlucHV0VHlwZS5jcHAKaW5kZXggOGE1NGNhMDUzNTRhOTMwMjc1OWFiNzViYTNhMTc1NWY3
YjlmNDU1ZC4uMmIyM2UxZmQ1YzdhOGYzZDgzNjc2Y2NlY2EwNGQwODM3ZTk0YTE5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzZUNoZWNrYWJsZUlu
cHV0VHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJE
T01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgpAQCAtNDYsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBGb3JtQ29udHJvbFN0YXRlIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNhdmVGb3Jt
Q29udHJvbFN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1
cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfcyA6ICJvZmYiX3MgfTsKKyAgICByZXR1
cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpIH07CiB9CiAK
IHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29u
c3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0g
ICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlWzBdID09ICJvbiIpOworICAgIGVsZW1lbnQo
KS0+c2V0Q2hlY2tlZChzdGF0ZVswXSA9PSBvbkF0b20oKSk7CiB9CiAKIGJvb2wgQmFzZUNoZWNr
YWJsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhKSBjb25z
dApAQCAtOTksOCArMTAwLDcgQEAgYm9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCiAKIFN0cmluZyBCYXNlQ2hlY2thYmxlSW5w
dXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gb24uZ2V0KCk7CisgICAgcmV0dXJuIG9uQXRv
bSgpOwogfQogCiBib29sIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnN0b3Jlc1ZhbHVlU2VwYXJh
dGVGcm9tQXR0cmlidXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJL
ZXlIaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAppbmRleCA5
NzAzODE0Yzg0ZjQ2OWNkNGZiMTM2NWUxMTNkNjczMmEwZWU2OTlhLi5iNzc1Njk0YTMyMTExNDU5
ZTIwZGQ1NDRjN2Q1NzAwNmFmMjYyZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0VudGVyS2V5SGludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhpbnQu
Y3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW50
ZXJLZXlIaW50LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEVudGVyS2V5SGludCBlbnRlcktleUhpbnRGb3JBdHRyaWJ1dGVWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNjMsNyArNjUsNyBAQCBTdHJpbmcgYXR0cmlidXRl
VmFsdWVGb3JFbnRlcktleUhpbnQoRW50ZXJLZXlIaW50IGhpbnQpCiAgICAgY2FzZSBFbnRlcktl
eUhpbnQ6OlByZXZpb3VzOgogICAgICAgICByZXR1cm4gInByZXZpb3VzIl9zOwogICAgIGNhc2Ug
RW50ZXJLZXlIaW50OjpTZWFyY2g6Ci0gICAgICAgIHJldHVybiAic2VhcmNoIl9zOworICAgICAg
ICByZXR1cm4gc2VhcmNoQXRvbSgpOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpTZW5kOgogICAg
ICAgICByZXR1cm4gInNlbmQiX3M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlv
RWxlbWVudC5jcHAKaW5kZXggYThjMDAzMjI5ZTQzMThiODc3NWU3MjY1OGIxMmFlYTA2MzMwMDMz
Mi4uOGViNmMzZWY4ZjMxMzRkODZiMzY4OTFjNWU0MDAxYmI2NDJkNWQzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJIVE1MQXVkaW9FbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKQEAgLTU0LDcgKzU1LDcgQEAgUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1M
QXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBzcmMpCiB7CiAgICAg
YXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBkb2N1bWVudCwgZmFsc2UpOwotICAgIGVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsICJh
dXRvIl9zKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHByZWxvYWRBdHRyLCBhdXRvQXRvbSgpKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHNyYyk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IDg3OTQ4Njdj
NmUwNGQ1MDE2MTczYmY5N2Q3MjMwMDdlOWRhZjFkZmQuLjljMzczMTVhY2I1NmJmMDBiYzk1ZTMy
ZDdhMDEzYTcyNTcxMTZiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SFRNTEJ1dHRvbkVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTgyLDE2ICs4MywxMiBAQCBpbnQgSFRNTEJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNvbnN0CiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MQnV0
dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewotICAgICAgICBjYXNlIFNVQk1JVDogewotICAgICAgICAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdWJtaXQoInN1Ym1pdCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBCVVRUT046Ci0gICAgICAgICAgICByZXR1cm4gSFRN
TE5hbWVzOjpidXR0b25UYWctPmxvY2FsTmFtZSgpOwotICAgICAgICBjYXNlIFJFU0VUOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHJlc2V0KCJyZXNldCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICAgICAgICAgIHJldHVybiByZXNldDsKLSAgICAgICAgfQorICAgIGNhc2UgU1VCTUlUOgorICAg
ICAgICByZXR1cm4gc3VibWl0QXRvbSgpOworICAgIGNhc2UgQlVUVE9OOgorICAgICAgICByZXR1
cm4gSFRNTE5hbWVzOjpidXR0b25UYWctPmxvY2FsTmFtZSgpOworICAgIGNhc2UgUkVTRVQ6Cisg
ICAgICAgIHJldHVybiByZXNldEF0b20oKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggOWMzOWM1NmQzNDE0Mzhk
MGUwOGI1NTEzZTY3MmI2OWE2MDliMWIxZC4uOTAxMDUwNWRlMTUyOWRkNDk2ZDk0ZjhmMmMzMjc2
MTU3MzIyMTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgog
I2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgpAQCAtNDE1LDEzICs0MTYsMTIg
QEAgc3RhdGljIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB0b1ZhbGlkRGlyVmFsdWUoY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBsdHJWYWx1ZSgibHRyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gcnRsVmFsdWUoInJ0bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGF1dG9WYWx1ZSgiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsdHIiKSkKICAg
ICAgICAgcmV0dXJuIGx0clZhbHVlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgInJ0bCIpKQogICAgICAgICByZXR1cm4gcnRsVmFsdWU7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiYXV0byIpKQotICAgICAgICByZXR1
cm4gYXV0b1ZhbHVlOworICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1cm4gbnVs
bEF0b20oKTsKIH0KIApAQCAtNTc4LDE3ICs1NzgsMTEgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpj
b250ZW50RWRpdGFibGUoKSBjb25zdAogICAgIGNhc2UgQ29udGVudEVkaXRhYmxlVHlwZTo6RmFs
c2U6CiAgICAgICAgIHJldHVybiBmYWxzZUF0b20oKTsKICAgICBjYXNlIENvbnRlbnRFZGl0YWJs
ZVR5cGU6OlBsYWludGV4dE9ubHk6Ci0gICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHkiX3M7
CisgICAgICAgIHJldHVybiBwbGFpbnRleHRPbmx5QXRvbSgpOwogICAgIH0KICAgICByZXR1cm4g
ImluaGVyaXQiX3M7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5
TmFtZSgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBwbGFpbnRleHRPbmx5VmFsdWUoInBsYWludGV4dC1vbmx5IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBwbGFpbnRleHRPbmx5VmFsdWUuZ2V0
KCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUoY29uc3QgU3RyaW5nJiBlbmFibGVkKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShlbmFibGVkLCAidHJ1ZSIpKQpAQCAtNTk2LDcgKzU5MCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBl
bmFibGVkKQogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJs
ZWQsICJmYWxzZSIpKQogICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGNvbnRlbnRlZGl0YWJsZUF0dHIsIGZhbHNlQXRvbSgpKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAicGxhaW50ZXh0LW9ubHkiKSkKLSAgICAg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRy
LCBwbGFpbnRleHRPbmx5TmFtZSgpKTsKKyAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCBwbGFpbnRleHRPbmx5QXRvbSgpKTsKICAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAiaW5oZXJp
dCIpKQogICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0cik7CiAgICAg
ZWxzZQpAQCAtMTA2NCw5ICsxMDU4LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c2hvdWxkQXV0b2Nv
cnJlY3QoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRBdXRvY29ycmVjdChib29sIGF1
dG9jb3JyZWN0KQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gb25OYW1lKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IG9mZk5hbWUoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBz
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2Nv
cnJlY3QgPyBvbk5hbWUuZ2V0KCkgOiBvZmZOYW1lLmdldCgpKTsKKyAgICBzZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBvbkF0
b20oKSA6IG9mZkF0b20oKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCmluZGV4IDE3ZTA4ZmZhOTNkNjFkMGRkODA5NzlkZGY4NGIxYzNjZjUyZDBl
MDUuLjVlMDE2OWE3MzE3MDQ5MTNiZGNlNjA0YjZjZjAzM2Y4OGMwY2E5MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNv
bW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJE
T01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTEwMTIsMTAgKzEwMTMs
NyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NvbXBsZXRlKGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogCiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jb21w
bGV0ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBvbigib24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBv
ZmYoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLQotICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
YXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKSA/IG9mZiA6IG9uOworICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvbXBs
ZXRlQXR0ciksICJvZmYiKSA/IG9mZkF0b20oKSA6IG9uQXRvbSgpOwogfQogCiBSZWZQdHI8RE9N
Rm9ybURhdGE+IEhUTUxGb3JtRWxlbWVudDo6Y29uc3RydWN0RW50cnlMaXN0KFJlZjxET01Gb3Jt
RGF0YT4mJiBkb21Gb3JtRGF0YSwgU3RyaW5nUGFpclZlY3RvciogZm9ybVZhbHVlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMWU4MWY1NDI1YjA3ZTI0
ZDlhOWMxMjA3ZWIzNTU5MjE3MjQ2NWM4NC4uZjI4ZTZkOTYxNTZlYWRiZDEwYWM1YzM5OTBhMDJh
MzFiNWVjZDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTU3LDkgKzE1OCw3IEBAIGNvbnN0IEZlYXR1cmVQb2xp
Y3kmIEhUTUxJRnJhbWVFbGVtZW50OjpmZWF0dXJlUG9saWN5KCkgY29uc3QKIAogY29uc3QgQXRv
bVN0cmluZyYgSFRNTElGcmFtZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0CiB7
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBl
YWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5KCJsYXp5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6bG9hZGluZ0F0dHIpLCAibGF6eSIpID8gbGF6eSA6IGVhZ2VyOworICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6bG9hZGluZ0F0dHIpLCAibGF6eSIpID8gbGF6eUF0b20oKSA6IGVh
Z2VyQXRvbSgpOwogfQogCiB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpzZXRMb2FkaW5nRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAppbmRleCAwMGNkZDYyZmUwNDYzODY0MjRlNTc4MTU4YTNjYzVkZDk5Yzk2
YmJiLi44YzczNTIwYzU0ZDY3YmJhMjM5YTY0ZWU3Zjg3NmNiYWY1NDYwYzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCkBAIC02NzQsNyArNjc1LDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmRl
Y29kaW5nKCkgY29uc3QKICAgICBjYXNlIERlY29kaW5nTW9kZTo6QXV0bzoKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiAiYXV0byJfczsKKyAgICByZXR1cm4gYXV0b0F0b20oKTsK
IH0KIAogRGVjb2RpbmdNb2RlIEhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nTW9kZSgpIGNvbnN0
CkBAIC04OTYsMTAgKzg5Nyw4IEBAIHNpemVfdCBIVE1MSW1hZ2VFbGVtZW50OjpwZW5kaW5nRGVj
b2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKSBjb25zdAogCiBjb25zdCBBdG9tU3RyaW5nJiBI
VE1MSW1hZ2VFbGVtZW50Ojpsb2FkaW5nRm9yQmluZGluZ3MoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZWFnZXIoImVhZ2Vy
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbGF6eSgibGF6eSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBhdXRvJiBhdHRyaWJ1dGVWYWx1ZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpsb2FkaW5nQXR0cik7Ci0g
ICAgcmV0dXJuIGhhc0xhenlMb2FkYWJsZUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZVZhbHVlKSA/
IGxhenkgOiBlYWdlcjsKKyAgICByZXR1cm4gaGFzTGF6eUxvYWRhYmxlQXR0cmlidXRlVmFsdWUo
YXR0cmlidXRlVmFsdWUpID8gbGF6eUF0b20oKSA6IGVhZ2VyQXRvbSgpOwogfQogCiB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OnNldExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ0YzAz
NmUyOWI3M2FhM2ZhYTRhZDdjNTJiN2FhMTAxNjRlMTBlNjMuLmVhYmI2NTdlMTMxNzZiMDJiYzgy
ZDA4M2QwY2VhNmI2OTM1OWQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAi
Q29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIgpAQCAtMzY0OSwxNiArMzY1MCwxNiBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6cHJl
bG9hZCgpIGNvbnN0CiAgICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0dXJlLW1h
aW4vI21lZGlhc3RyZWFtcy1pbi1tZWRpYS1lbGVtZW50cwogICAgIC8vICJwcmVsb2FkIiAtIE9u
IGdldHRpbmc6IG5vbmUuIE9uIHNldHRpbmc6IGlnbm9yZWQuCiAgICAgaWYgKG1fbWVkaWFTdHJl
YW1TcmNPYmplY3QpCi0gICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgcmV0dXJuIG5v
bmVBdG9tKCk7CiAjZW5kaWYKIAogICAgIHN3aXRjaCAobV9wcmVsb2FkKSB7CiAgICAgY2FzZSBN
ZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZToKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAg
ICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpN
ZXRhRGF0YToKICAgICAgICAgcmV0dXJuICJtZXRhZGF0YSJfczsKICAgICBjYXNlIE1lZGlhUGxh
eWVyOjpQcmVsb2FkOjpBdXRvOgotICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgIHJl
dHVybiBhdXRvQXRvbSgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCA2ZmIxMGY2NzEyNWQ4NzNiMzdhZjI1M2ZhMGUwNWY1YzIzYWQ4YmYzLi5hYjhkNmEyOTll
ZjZjY2YwYTFkMjEwMDExMzg2YjFiOWYzYThlNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNpbmNsdWRlICJFZGl0
aW5nLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC00MzQsMTMgKzQzNSwxMiBAQCB1bnNpZ25l
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVNlbGVjdGlvbkVuZCgpIGNvbnN0
CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gYmFja3dhcmQoImJhY2t3YXJkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIFNlbGVjdGlv
bkhhc05vRGlyZWN0aW9uOgotICAgICAgICByZXR1cm4gbm9uZTsKKyAgICAgICAgcmV0dXJuIG5v
bmVBdG9tKCk7CiAgICAgY2FzZSBTZWxlY3Rpb25IYXNGb3J3YXJkRGlyZWN0aW9uOgogICAgICAg
ICByZXR1cm4gZm9yd2FyZDsKICAgICBjYXNlIFNlbGVjdGlvbkhhc0JhY2t3YXJkRGlyZWN0aW9u
OgpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkaXJlY3Rpb25T
dHJpbmcoVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbm9uZTsKKyAgICByZXR1cm4gbm9u
ZUF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnNlbGVjdGlvbkRpcmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0TW9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAK
aW5kZXggMzQ5ZDg1YjU2MmU3YmI5YzVhZGZlZDUyNzExZjUzMDVjNDdkZTQ5ZS4uN2U4MGM3N2Y3
ZWY5NGNmODA4MDA3ZTBjYzQ2Y2YwMjZiZmY0NWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dE1vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2Rl
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklu
cHV0TW9kZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODIsMzIgKzgz
LDI3IEBAIG5hbWVzcGFjZSBJbnB1dE1vZGVOYW1lcyB7CiAKIGNvbnN0IEF0b21TdHJpbmcmIG5v
bmUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gbW9kZSgibm9uZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICByZXR1cm4gbW9kZTsKKyAgICByZXR1cm4gbm9uZUF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0
cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBtb2RlKCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiB0ZXh0QXRvbSgpOwogfQogCiBjb25z
dCBBdG9tU3RyaW5nJiB0ZWwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgidGVsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiB0ZWxBdG9tKCk7CiB9CiAK
IGNvbnN0IEF0b21TdHJpbmcmIHVybCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb2RlKCJ1cmwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIHVybEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgZW1haWwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9kZSgiZW1haWwiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJuIGVt
YWlsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBudW1lcmljKCkKQEAgLTEyNCw4ICsx
MjAsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBkZWNpbWFsKCkKIAogY29uc3QgQXRvbVN0cmluZyYg
c2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IG1vZGUoInNlYXJjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1cm4gc2VhcmNoQXRvbSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnB1dE1vZGVOYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVz
LmNwcAppbmRleCA0NTAzNjllYzgxZGNiZjEwMzM2OTBkN2Y2NDM3MTY1ZjFlZThjNTZmLi42ZmZi
Y2Y1Y2YyMjU2OTMyNzk5ZjFhZWUzYTFjNDNjNTFiNTFlYThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCkBAIC02Myw4ICs2NCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lbG9j
YWwoKQogCiBjb25zdCBBdG9tU3RyaW5nJiBlbWFpbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJlbWFpbCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
ZW1haWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIGZpbGUoKQpAQCAtMTE3LDMyICsx
MTcsMjcgQEAgY29uc3QgQXRvbVN0cmluZyYgcmFuZ2UoKQogCiBjb25zdCBBdG9tU3RyaW5nJiBy
ZXNldCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBuYW1lKCJyZXNldCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4gcmVzZXRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0
b21TdHJpbmcmIHNlYXJjaCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHNlYXJjaEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgc3VibWl0KCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInN1Ym1pdCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4g
c3VibWl0QXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB0ZWxlcGhvbmUoKQogewotICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgi
dGVsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBuYW1l
OworICAgIHJldHVybiB0ZWxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRleHQoKQog
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bmFtZSgidGV4dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1
cm4gbmFtZTsKKyAgICByZXR1cm4gdGV4dEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYg
dGltZSgpCkBAIC0xNTMsOCArMTQ4LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgdGltZSgpCiAKIGNv
bnN0IEF0b21TdHJpbmcmIHVybCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJ1cmwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHVybEF0b20oKTsKIH0K
IAogY29uc3QgQXRvbVN0cmluZyYgd2VlaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA5MzA0ODRiODVh
YjI1YWU1NDdkZjdmMzFmZDdkMjBhNWFhMmJlNmZhLi43ZjQ3MzUwN2ZiZmFkYmVmODNkNTFjOGZm
MTA5Yjk2MmExMjNkYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAg
LTE1MCw4ICsxNTEsNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZAogCiB2b2lkIFRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudDo6dXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5SW1w
bChib29sIGlzRWRpdGFibGUsIGJvb2wgaW5pdGlhbGl6YXRpb24pCiB7Ci0gICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFpblRleHRPbmx5TmFt
ZSgicGxhaW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgY29uc3QgYXV0byYgdmFsdWUgPSBpc0VkaXRhYmxlID8gcGxhaW5UZXh0T25seU5hbWUuZ2V0
KCkgOiBmYWxzZUF0b20oKTsKKyAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzRWRpdGFibGUgPyBw
bGFpbnRleHRPbmx5QXRvbSgpIDogZmFsc2VBdG9tKCk7CiAgICAgaWYgKGluaXRpYWxpemF0aW9u
KSB7CiAgICAgICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXMgeyBBdHRyaWJ1dGUoY29u
dGVudGVkaXRhYmxlQXR0ciwgdmFsdWUpIH07CiAgICAgICAgIHBhcnNlclNldEF0dHJpYnV0ZXMo
YXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRl
eCA2OTk0YjExMzFlMjM0OGU0ZWU5ZDI1YzA5YWNkNGRmNjU4N2MxMDNmLi43YmFlYWEwNjVjNzM0
MDk4ZTJiYTAzZDMzMzA5ZTMxODgzOWVkMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHAKQEAgLTM4LDI4ICszOCwxNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKICNpbmNsdWRlICJB
dWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29u
c3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKLXsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0
aXZlKCJhbHRlcm5hdGl2ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICByZXR1cm4gYWx0ZXJuYXRpdmU7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6
OmRlc2NyaXB0aW9uS2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbigiZGVzY3JpcHRpb24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQog
Ci1jb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCi17Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtYWluKCJtYWlu
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtYWluOwot
fQotCiBjb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQogewog
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWFp
bkRlc2MoIm1haW4tZGVzYyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAg
LTcyLDEyICs2MSw2IEBAIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9u
S2V5d29yZCgpCiAgICAgcmV0dXJuIHRyYW5zbGF0aW9uOwogfQogCi1jb25zdCBBdG9tU3RyaW5n
JiBBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5KCJjb21tZW50YXJ5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjb21tZW50
YXJ5OwotfQotCiBBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgOiBNZWRpYVRy
YWNrQmFzZShjb250ZXh0LCBNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRl
LmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKICAg
ICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCkBAIC0xMjMsMTAgKzEwNiwxMCBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiBib29s
IEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKQotICAgICAgICB8fCB2
YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpCisgICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0
aXZlQXRvbSgpCisgICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlBdG9tKCkKICAgICAgICAg
fHwgdmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gbWFp
bktleXdvcmQoKQorICAgICAgICB8fCB2YWx1ZSA9PSBtYWluQXRvbSgpCiAgICAgICAgIHx8IHZh
bHVlID09IG1haW5EZXNjS2V5d29yZCgpCiAgICAgICAgIHx8IHZhbHVlID09IHRyYW5zbGF0aW9u
S2V5d29yZCgpOwogfQpAQCAtMjA4LDEzICsxOTEsMTMgQEAgdm9pZCBBdWRpb1RyYWNrOjp1cGRh
dGVLaW5kRnJvbVByaXZhdGUoKQogewogICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsK
ICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKLSAgICAgICAgc2V0S2lu
ZChBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoYWx0
ZXJuYXRpdmVBdG9tKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpEZXNjcmlwdGlvbjoKICAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlv
bktleXdvcmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6
Ok1haW46Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAg
ICAgIHNldEtpbmQobWFpbkF0b20oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9U
cmFja1ByaXZhdGU6Ok1haW5EZXNjOgogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5E
ZXNjS2V5d29yZCgpKTsKQEAgLTIyMyw3ICsyMDYsNyBAQCB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0
ZUtpbmRGcm9tUHJpdmF0ZSgpCiAgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6dHJhbnNsYXRp
b25LZXl3b3JkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRl
OjpDb21tZW50YXJ5OgotICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3
b3JkKCkpOworICAgICAgICBzZXRLaW5kKGNvbW1lbnRhcnlBdG9tKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOgogICAgICAgICBzZXRLaW5kKGVt
cHR5U3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAppbmRleCA0
ZTE4NmMxNjYyMDdiMDdhNzhkMGU3NmVjNGQzZGQwOTA5OTYxNzI4Li5iZGI3ZjFiMjJjMDIxOTE2
OWNjMTMyN2Y0NTM1MTUyMWZlN2U3YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suaApAQCAtNDYsMTIgKzQ2LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5B
dWRpb1RyYWNrKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgYWx0ZXJuYXRpdmVL
ZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlc2NyaXB0aW9uS2V5d29y
ZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBtYWluS2V5d29yZCgpOwogICAgIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgdHJhbnNsYXRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoY29uc3Qg
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggMTBmNGQx
ZGFlMGE5OTAyNWI1ZDQwZjIzOGRkNTVlYTZjMzY5ZDcwYi4uOTE1OGFlNGQzMDQxODcwYjViNzM4
NzlmODU4MTliODAyZDljNGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcApAQCAtNTAsMTggKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrKTsKIAotY29uc3QgQXRvbVN0cmluZyYgVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzdWJ0aXRsZXM7Ci19Ci0KLXN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnMoImNhcHRp
b25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjYXB0
aW9uczsKLX0KLQogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdvcmQo
KQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gZGVzY3JpcHRpb25zKCJkZXNjcmlwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CkBAIC0xMDMsNyArOTEsNyBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjbwogICAg
ICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewot
ICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgIGlmIChraW5kID09IGNhcHRp
b25zQXRvbSgpKQogICAgICAgICBtX2tpbmQgPSBLaW5kOjpDYXB0aW9uczsKICAgICBlbHNlIGlm
IChraW5kID09IGNoYXB0ZXJzS2V5d29yZCgpKQogICAgICAgICBtX2tpbmQgPSBLaW5kOjpDaGFw
dGVyczsKQEAgLTE2Nyw5ICsxNTUsOSBAQCBib29sIFRleHRUcmFjazo6ZW5hYmxlZCgpIGNvbnN0
CiAKIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICBpZiAo
dmFsdWUgPT0gc3VidGl0bGVzQXRvbSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
dmFsdWUgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgaWYgKHZhbHVlID09IGNhcHRpb25zQXRv
bSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25z
S2V5d29yZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Nyw3ICsxNzUsNyBAQCBjb25z
dCBBdG9tU3RyaW5nJiBUZXh0VHJhY2s6OmtpbmRLZXl3b3JkKCkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKG1fa2luZCkgewogICAgIGNhc2UgS2luZDo6Q2FwdGlvbnM6Ci0gICAgICAgIHJldHVybiBj
YXB0aW9uc0tleXdvcmQoKTsKKyAgICAgICAgcmV0dXJuIGNhcHRpb25zQXRvbSgpOwogICAgIGNh
c2UgS2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBjaGFwdGVyc0tleXdvcmQoKTsKICAg
ICBjYXNlIEtpbmQ6OkRlc2NyaXB0aW9uczoKQEAgLTE5NywxMCArMTg1LDEwIEBAIGNvbnN0IEF0
b21TdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25zdAogICAgIGNhc2UgS2luZDo6
TWV0YWRhdGE6CiAgICAgICAgIHJldHVybiBtZXRhZGF0YUtleXdvcmQoKTsKICAgICBjYXNlIEtp
bmQ6OlN1YnRpdGxlczoKLSAgICAgICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICAg
ICAgcmV0dXJuIHN1YnRpdGxlc0F0b20oKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICByZXR1cm4gc3VidGl0bGVz
QXRvbSgpOwogfQogCiB2b2lkIFRleHRUcmFjazo6c2V0S2luZChLaW5kIG5ld0tpbmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA5NDBjMDI0NjJlODY5M2NiODg4OWQw
MjdiNmM5YTg2ZWYyZTkwY2Y1Li4yYjYyNzRjMjVmNDVkNjk0MjBjOTQyYjE0MmRhMzEwMTMzMzU2
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUzLDcgKzUzLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBUZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpOwog
ICAgIHN0YXRpYyBUZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwogCi0gICAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgVGV4dFRy
YWNrTGlzdCogdGV4dFRyYWNrTGlzdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCmluZGV4IGFiZjc1Njk2NGMzNzllODc3NGRhY2VhYjgxMjBlMjhmY2QxNGFhN2MuLmUy
NzI1YzhlODQ4MDlhYzY3MDJlMmU2MzMyMjBkZTg0MGNmYjhhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtMTM3LDEyICsxMzgs
NiBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBsaW5lUmlnaHRLZXl3b3JkKCkKICAgICByZXR1cm4g
bGluZVJpZ2h0OwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nJiBhdXRvS2V5d29yZCgpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYXV0b1goTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoImF1dG8iKSk7Ci0gICAgcmV0dXJuIGF1dG9YOwotfQotCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZjxWVFRDdWVCb3g+IFZUVEN1ZUJveDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCkBAIC00NzcsNyArNDcyLDcgQEAgY29u
c3QgU3RyaW5nJiBWVFRDdWU6OnBvc2l0aW9uQWxpZ24oKSBjb25zdAogICAgIGNhc2UgUG9zaXRp
b25BbGlnbm1lbnRMaWduUmlnaHQ6CiAgICAgICAgIHJldHVybiBsaW5lUmlnaHRLZXl3b3JkKCk7
CiAgICAgY2FzZSBQb3NpdGlvbkFsaWdubWVudExpZ25BdXRvOgotICAgICAgICByZXR1cm4gYXV0
b0tleXdvcmQoKTsKKyAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwpAQCAtNDkzLDcgKzQ4OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFZUVEN1ZTo6c2V0UG9zaXRp
b25BbGlnbihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBwb3NpdGlvbkFsaWdubWVudCA9
IFBvc2l0aW9uQWxpZ25tZW50TGlnbkNlbnRlcjsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBsaW5l
UmlnaHRLZXl3b3JkKCkpCiAgICAgICAgIHBvc2l0aW9uQWxpZ25tZW50ID0gUG9zaXRpb25BbGln
bm1lbnRMaWduUmlnaHQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYXV0b0tleXdvcmQoKSkKKyAg
ICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRvQXRvbSgpKQogICAgICAgICBwb3NpdGlvbkFsaWdubWVu
dCA9IFBvc2l0aW9uQWxpZ25tZW50TGlnbkF1dG87CiAgICAgZWxzZQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMTMyOSwxMyArMTMyNCwxMyBAQCB2b2lkIFZUVEN1ZTo6dG9KU09OKEpTT046Ok9i
amVjdCYgb2JqZWN0KSBjb25zdAogICAgIG9iamVjdC5zZXRTdHJpbmcoInZlcnRpY2FsIl9zLCB2
ZXJ0aWNhbCgpKTsKICAgICBvYmplY3Quc2V0Qm9vbGVhbigic25hcFRvTGluZXMiX3MsIHNuYXBU
b0xpbmVzKCkpOwogICAgIGlmIChtX2xpbmVQb3NpdGlvbikKLSAgICAgICAgb2JqZWN0LnNldFN0
cmluZygibGluZSJfcywgImF1dG8iX3MpOworICAgICAgICBvYmplY3Quc2V0U3RyaW5nKCJsaW5l
Il9zLCBhdXRvQXRvbSgpKTsKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC5zZXREb3VibGUoImxp
bmUiX3MsICptX2xpbmVQb3NpdGlvbik7CiAgICAgaWYgKG1fdGV4dFBvc2l0aW9uKQogICAgICAg
ICBvYmplY3Quc2V0RG91YmxlKCJwb3NpdGlvbiJfcywgKm1fdGV4dFBvc2l0aW9uKTsKICAgICBl
bHNlCi0gICAgICAgIG9iamVjdC5zZXRTdHJpbmcoInBvc2l0aW9uIl9zLCAiYXV0byJfcyk7Cisg
ICAgICAgIG9iamVjdC5zZXRTdHJpbmcoInBvc2l0aW9uIl9zLCBhdXRvQXRvbSgpKTsKICAgICBv
YmplY3Quc2V0SW50ZWdlcigic2l6ZSJfcywgbV9jdWVTaXplKTsKICAgICBvYmplY3Quc2V0U3Ry
aW5nKCJhbGlnbiJfcywgYWxpZ24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcAppbmRleCA3M2U5ZDBmMTdhZjU2NWI3YTJkMWQ5OTNjOTJjNzM3ZDc5NGY0NGE3
Li4wNzFhNzc0MjZkZjA0YjVjNGY5MDgyNWM1NTJlMjk5ZjY3Yjc1YTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVO
QUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
VmlkZW9UcmFja0NsaWVudC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKQEAgLTQ2LDQyICs0NywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0
aXZlS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGFsdGVybmF0aXZlOwotfQotCi1jb25zdCBB
dG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQotewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlvbnMoImNhcHRp
b25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjYXB0
aW9uczsKLX0KLQotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQot
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y2FwdGlvbnMoIm1haW4iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
cmV0dXJuIGNhcHRpb25zOwotfQotCiBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWdu
S2V5d29yZCgpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBzaWduKCJzaWduIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBzaWduOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpz
dWJ0aXRsZXNLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBzdWJ0aXRsZXM7Ci19Ci0KLWNvbnN0IEF0
b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNvbW1lbnRhcnkoImNv
bW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJu
IGNvbW1lbnRhcnk7Ci19Ci0KIFZpZGVvVHJhY2s6OlZpZGVvVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICA6
IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFj
a1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFn
ZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKQEAgLTExOCwxMiArODksMTIgQEAg
dm9pZCBWaWRlb1RyYWNrOjpzZXRQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZh
dGUpCiAKIGJvb2wgVmlkZW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpCi0g
ICAgICAgIHx8IHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUg
PT0gY2FwdGlvbnNLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gbWFpbktleXdvcmQoKQor
ICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUF0b20oKQorICAgICAgICB8fCB2YWx1ZSA9
PSBjb21tZW50YXJ5QXRvbSgpCisgICAgICAgIHx8IHZhbHVlID09IGNhcHRpb25zQXRvbSgpCisg
ICAgICAgIHx8IHZhbHVlID09IG1haW5BdG9tKCkKICAgICAgICAgfHwgdmFsdWUgPT0gc2lnbktl
eXdvcmQoKQotICAgICAgICB8fCB2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCk7CisgICAgICAg
IHx8IHZhbHVlID09IHN1YnRpdGxlc0F0b20oKTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjpzZXRT
ZWxlY3RlZChjb25zdCBib29sIHNlbGVjdGVkKQpAQCAtMjQxLDIyICsyMTIsMjIgQEAgdm9pZCBW
aWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogewogICAgIHN3aXRjaCAobV9wcml2
YXRlLT5raW5kKCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToK
LSAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAg
ICAgIHNldEtpbmQoYWx0ZXJuYXRpdmVBdG9tKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFj
azo6Y2FwdGlvbnNLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKGNhcHRpb25zQXRvbSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46Ci0gICAg
ICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQo
bWFpbkF0b20oKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRl
OjpTaWduOgogICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgotICAg
ICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIHNl
dEtpbmQoc3VidGl0bGVzQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9U
cmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0gICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29t
bWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoY29tbWVudGFyeUF0b20oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgogICAgICAg
ICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2suaAppbmRleCBlMWUwZTliMDI1OGQ1MTI3NjI5NzA2ZDBlYzQyMmEzY2JkMDNmNjk5Li4xZTIy
YmJiNDUzNzEyZjhlMmE5MTFiNzM4ODk5ZjQzYjNkYmQ2N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2suaApAQCAtNDksMTIgKzQ5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
YWx0ZXJuYXRpdmVLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNhcHRp
b25zS2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBtYWluS2V5d29yZCgp
OwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzaWduS2V5d29yZCgpOwotICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CiAKICAgICBib29sIHNlbGVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rl
ZChjb25zdCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cAppbmRleCBmOGRkYmQzODA1YjQ1ODBhOGQ3NjQ0ODkxMjNjZDkyMWVjMjYwNWY0Li5jNjk0NDAw
Mzg2ZGNiOWYzNzkzZGI3ODc4Y2ZiNDFmY2U0Mzk3MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpZiBFTkFCTEUo
VklERU8pCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklTT1ZUVEN1
ZS5oIgpAQCAtOTIsNyArOTMsNyBAQCBib29sIFdlYlZUVFBhcnNlcjo6cGFyc2VGbG9hdFBlcmNl
bnRhZ2VWYWx1ZVBhaXIoVlRUU2Nhbm5lciYgdmFsdWVTY2FubmVyLCBjaGFyCiAKIFdlYlZUVFBh
cnNlcjo6V2ViVlRUUGFyc2VyKFdlYlZUVFBhcnNlckNsaWVudCYgY2xpZW50LCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9kZWNvZGVyKFRl
eHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgUEFMOjpVVEY4RW5jb2Rp
bmcoKSkpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHRleHRQ
bGFpbkNvbnRlbnRUeXBlQXRvbSgpLCBQQUw6OlVURjhFbmNvZGluZygpKSkKICAgICAsIG1fY2xp
ZW50KGNsaWVudCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYWUwMjliZmJiZTkzMzgyOGJkYjBjOWVh
YjU5OTJlMDA0OTQ5ODU2OS4uMjQ0MGUzYWI3MWE2OWIyYzBjODIyOTI3MTUzZDk4MjczZDJjNTRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUu
aCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgpAQCAtNzgyLDcgKzc4Myw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3Bl
Y3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoRG9jCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBzdHlsZUVsZW1lbnQgPSBIVE1MU3R5
bGVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIHN0eWxlRWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnR5cGVBdHRyLCBBdG9tU3RyaW5n
KCJ0ZXh0L2NzcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3R5
bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
dHlwZUF0dHIsIGNzc0NvbnRlbnRUeXBlQXRvbSgpKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHRh
cmdldE5vZGU7CiAgICAgLy8gSEVBRCBpcyBhYnNlbnQgaW4gSW1hZ2VEb2N1bWVudHMsIGZvciBl
eGFtcGxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggMmMw
MTJmZGU1ZDc3OGIwNjdiNWE1YTc4ODZkOWZjZmQzY2YxZTkzMC4uOWZiMDA1MjdjOTM2NTQxOTlj
ODc5NzlhMjI5ODNmMWFjZjFhMGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRm9ybVN1Ym1pc3Npb24uaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEu
aCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKQEAgLTEwMyw3ICsxMDQsNyBAQCBTdHJp
bmcgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlRW5jb2RpbmdUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
Im11bHRpcGFydC9mb3JtLWRhdGEiKSkKICAgICAgICAgcmV0dXJuICJtdWx0aXBhcnQvZm9ybS1k
YXRhIl9zOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4
dC9wbGFpbiIpKQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJldHVy
biB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b20oKTsKICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCJfczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IGYwNDNjZDU5NzA1NDE5Nzc2MzhiNmRmNDIyZmEw
ZmQzOTdlYjdlMWEuLjJkMWFkZjNmN2UwOWYwMzMwMmI2MWRmZWZkNmI3OTk2YTAyYTllMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAKICNpbmNsdWRl
ICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5o
IgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTM3Nyw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yIHsgdXNlckdlc3R1
cmVUb0ZvcndhcmQoKSB9OwogCi0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVwbGFjZW1lbnRS
ZXNwb25zZSB7IG1fb3JpZ2luRG9jdW1lbnQudXJsKCksICJ0ZXh0L3BsYWluIl9zLCAwLCAiVVRG
LTgiX3MgfTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXBsYWNlbWVudFJlc3BvbnNlIHsg
bV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgdGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIDAsICJV
VEYtOCJfcyB9OwogICAgICAgICBTdWJzdGl0dXRlRGF0YSByZXBsYWNlbWVudERhdGEgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX29yaWdpbkRvY3VtZW50LnVybCgpLCByZXBsYWNlbWVudFJl
c3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4g
fTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgbV9vcmlnaW5E
b2N1bWVudC51cmwoKSwgZW1wdHlTdHJpbmcoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6
OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggY2RlN2FlNGNjMTBlZWY1YTZi
Mzg0ODI3MTA1N2IzNzA4ZjViNTczNS4uZjU5ZWNmYzZjMDk2ZDQ0MDIwZWNkMzI2MmRjYTJkMjU0
MjBmYWUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJMRShNSFRNTCkKICNp
bmNsdWRlICJNSFRNTFBhcnNlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIK
ICNpbmNsdWRlICJNSFRNTEFyY2hpdmUuaCIKICNpbmNsdWRlICJNSU1FSGVhZGVyLmgiCiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMTE5LDcgKzEyMCw3IEBAIFJlZlB0cjxNSFRN
TEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIq
IGhlYWRlcikKIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVS
ZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSogYXJjaGl2ZSkKIHsKICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7Ci0gICAgaWYgKCFNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBt
aW1lVHlwZSA9PSAidGV4dC9jc3MiKSB7CisgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBtaW1lVHlwZSA9PSBjc3ND
b250ZW50VHlwZUF0b20oKSkgewogICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQocmVzb3VyY2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDE0Y2NkMmEzYjlmMzE3ZTVlMjRi
NmVkN2Q2ZTE1YzVlY2E2OWVkMjkuLmY1MmE5MmQwM2U1MzI4YzZkOTdjNTFjMGM1MTM3OGJmNjJh
ZGM4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJz
ZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKQEAgLTQwLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDYWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZN
b3ZlKHJlcXVlc3QpLCBUeXBlOjpDU1NTdHlsZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikK
LSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9z
LCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpLCByZXF1ZXN0LmNoYXJzZXQoKSkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcAppbmRleCBjMTQ0MzAyZjAzYmQ5NTU2OWM2YzIwNDc0M2FlZGI4YmFlYWFlMzI4Li5i
YjhhZTA2M2QwN2Y1ZTg1MWJkMmVlOTc1ZDFkMmU2NmRhY2NhNTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MSHRt
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAx
MjUzYjU4MDA1YjUyZmJhMjQxMDgyODYxMjdjNGQxMzJmMGQwNDVjLi45NDAzZTY1MmM4YjI4Yzc2
MWQ0ODYwMjJkNzNkMjRmYzQ5NGMyZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRp
b24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2Nh
bGl6ZWRTdHJpbmdzLmgiCkBAIC03MzAsNyArNzMxLDcgQEAgc3RhdGljIFN0cmluZyBhZGRBdWRp
b1RyYWNrS2luZERpc3BsYXlOYW1lSWZOZWVkZWQoY29uc3QgQXVkaW9UcmFjayYgdHJhY2ssIGNv
bnMKICAgICBpZiAoKHRyYWNrLmtpbmQoKSA9PSBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdv
cmQoKSB8fCB0cmFjay5raW5kKCkgPT0gQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpICYm
ICF0ZXh0LmNvbnRhaW5zKGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKSkp
CiAgICAgICAgIHJldHVybiBhZGRBdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCh0ZXh0
KTsKIAotICAgIGlmICh0cmFjay5raW5kKCkgPT0gQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdv
cmQoKSAmJiAhdGV4dC5jb250YWlucyhhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFt
ZSgpKSkKKyAgICBpZiAodHJhY2sua2luZCgpID09IGNvbW1lbnRhcnlBdG9tKCkgJiYgIXRleHQu
Y29udGFpbnMoYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKSkpCiAgICAgICAg
IHJldHVybiBhZGRBdWRpb1RyYWNrS2luZENvbW1lbnRhcnlTdWZmaXgodGV4dCk7CiAKICAgICBy
ZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDkzNThiODQ2NGJiNTkzOTEwNWE2ODk4
NDc2ZmY2OTFhZWYzYzM3ODAuLmJjY2RlNTgxNTEwY2EyZmIxZjZjN2ZkMGQ4ZDY0NDYwODU3Yzdl
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb25z
dGFudFByb3BlcnR5TWFwLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNs
dWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKQEAgLTIwNjYsNyArMjA2Nyw3IEBAIGNvbnN0
IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHlsZVNoZWV0ID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKGNzc0NvbnRlbnRUeXBlQXRvbSgpKS0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDdm
OWUxYjdhMjcwZDJiNWRiNjFmZTk4ZDdiMTA1MDBhN2U2Y2VlMTYuLjUwODk0ZTBkMjkwY2QzY2U1
ZjIxOGJjNmYwODBiZGY4ODU4Yjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNp
bmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yNjAsNyAr
MjYxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5v
bmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRleHRFbmNv
ZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0
ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUo
Y3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgY3NzQ29udGVudFR5cGVBdG9t
KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0
cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcAppbmRleCA0MzcxMjgwNDE5YzJlYWFiODk4ODJmMTRhMzRjYTkyNTc5MjVmYzk4
Li43ZGIzYjliYjYxZmJmZjZiOTMxY2JiNTk3ZTU4ZWFhNWJlYzRlMTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYyLDcgKzM2Myw3IEBAIFN0cmlu
ZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgaW50IHBhCiAgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3Bl
cnRpZXMgd2UgY2FyZSBhYm91dC4KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJn
aW4tbGVmdCIpKSB7CiAgICAgICAgIGlmIChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQot
ICAgICAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9t
KCk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnZh
bHVlKCkpOwogICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdo
dCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBkZmEzZTgyYTYy
ODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyLi5iZTIzODM0ZDdiZTQ1OTJmZmRjMzI2MmVj
M2FlYzdmZjg2NjFjYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NX
YXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NX
YXJtaW5nLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bW1vblZNLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAt
NTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFByb2Nlc3NXYXJtaW5nOjpp
bml0aWFsaXplTmFtZXMoKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBpbml0aWFs
aXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBRdWFs
aWZpZWROYW1lOjppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MThlNDJjOTlhMzIzMGUxMGFiZWUzNWJmNDUzNDI3NjBlZWY0YWE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCkBAIC0wLDAg
KzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29t
bW9uQXRvbVN0cmluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGFsdGVybmF0aXZlQXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9BdG9tRGF0
YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2FwdGlv
bnNBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gY29tbWVudGFyeUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjc3NDb250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlckF0b21EYXRhOworTWFpblRocmVhZExh
enlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbWFpbEF0b21EYXRhOworTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOwor
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBsYXp5QXRvbURh
dGE7CitNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1haW5B
dG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bm9uZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBvZmZBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gb25BdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gcGxhaW50ZXh0T25seUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldEF0b21EYXRhOworTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzZWFyY2hBdG9tRGF0YTsKK01haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURhdGE7CitN
YWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1YnRpdGxlc0F0
b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0
ZWxBdG9tRGF0YTsKK01haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gdGV4dEF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiB0ZXh0UGxhaW5Db250ZW50VHlwZUF0b21EYXRhOworTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cnVlQXRvbURhdGE7CitNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCit2b2lkIGlu
aXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IGluaXRpYWxpemVLZXk7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewor
ICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHNvIHRoaXMgZnVu
Y3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZmlyc3QuCisgICAgICAg
IEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgICAgICBhbHRlcm5hdGl2ZUF0b21EYXRhLmNvbnN0
cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGF1dG9BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soImF1dG8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
ICAgIGNhcHRpb25zQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJjYXB0aW9u
cyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY29tbWVudGFy
eUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiY29tbWVudGFyeSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgY3NzQ29udGVudFR5cGVBdG9t
RGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvY3NzIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBlYWdlckF0b21EYXRhLmNvbnN0cnVjdFdp
dGhvdXRBY2Nlc3NDaGVjaygiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgICAgIGVtYWlsQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJl
bWFpbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgZmFsc2VB
dG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soImZhbHNlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBsYXp5QXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCJsYXp5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgICAgICBtYWluQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJtYWlu
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBub25lQXRvbURh
dGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICBvZmZBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgb25BdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soIm9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBwbGFpbnRleHRPbmx5QXRvbURhdGEu
Y29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgcmVzZXRBdG9tRGF0YS5jb25zdHJ1Y3RX
aXRob3V0QWNjZXNzQ2hlY2soInJlc2V0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgICAgICBzZWFyY2hBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2so
InNlYXJjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3Vi
bWl0QXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKCJzdWJtaXQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN1YnRpdGxlc0F0b21EYXRhLmNv
bnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgICAgICB0ZWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNj
ZXNzQ2hlY2soInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgdGV4dEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygidGV4dCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgdGV4dFBsYWluQ29udGVudFR5
cGVBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRleHQvcGxhaW4iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHRydWVBdG9tRGF0YS5jb25z
dHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIHVybEF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVj
aygidXJsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9u
QXRvbVN0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjQ2NDA3ODg2OTE5NWFkNjY3OTEyMTMyYWMxOTI5
NmFjNjJiZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29t
bW9uQXRvbVN0cmluZ3MuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZXh0ZXJuIE1haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYWx0ZXJuYXRpdmVBdG9tRGF0
YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IGF1dG9BdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGNhcHRpb25zQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVhZExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5QXRvbURhdGE7CitleHRlcm4g
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjc3NDb250ZW50
VHlwZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gZWFnZXJBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtYWlsQXRvbURhdGE7CitleHRlcm4gTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZUF0b21EYXRhOworZXh0
ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbGF6eUF0
b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gbWFpbkF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gbm9uZUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb2ZmQXRvbURhdGE7CitleHRlcm4gTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbkF0b21EYXRhOworZXh0
ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcGxhaW50
ZXh0T25seUF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gcmVzZXRBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNlYXJjaEF0b21EYXRhOworZXh0ZXJuIE1haW5U
aHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3VibWl0QXRvbURhdGE7
CitleHRlcm4gTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
dWJ0aXRsZXNBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHRlbEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJlYWRMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEF0b21EYXRhOworZXh0ZXJuIE1haW5UaHJl
YWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dFBsYWluQ29udGVudFR5
cGVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHRydWVBdG9tRGF0YTsKK2V4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHVybEF0b21EYXRhOworCitpbmxpbmUgY29uc3QgQXRvbVN0
cmluZyYgYWx0ZXJuYXRpdmVBdG9tKCkgeyByZXR1cm4gYWx0ZXJuYXRpdmVBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9BdG9tKCkgeyByZXR1cm4gYXV0b0F0
b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY2FwdGlvbnNBdG9tKCkg
eyByZXR1cm4gY2FwdGlvbnNBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIGNvbW1lbnRhcnlBdG9tKCkgeyByZXR1cm4gY29tbWVudGFyeUF0b21EYXRhLmdldCgpOyB9
CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgY3NzQ29udGVudFR5cGVBdG9tKCkgeyByZXR1cm4g
Y3NzQ29udGVudFR5cGVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcm
IGVhZ2VyQXRvbSgpIHsgcmV0dXJuIGVhZ2VyQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBlbWFpbEF0b20oKSB7IHJldHVybiBlbWFpbEF0b21EYXRhLmdldCgpOyB9
CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgZmFsc2VBdG9tKCkgeyByZXR1cm4gZmFsc2VBdG9t
RGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGxhenlBdG9tKCkgeyByZXR1
cm4gbGF6eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbWFpbkF0
b20oKSB7IHJldHVybiBtYWluQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3Ry
aW5nJiBub25lQXRvbSgpIHsgcmV0dXJuIG5vbmVBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNv
bnN0IEF0b21TdHJpbmcmIG9mZkF0b20oKSB7IHJldHVybiBvZmZBdG9tRGF0YS5nZXQoKTsgfQor
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIG9uQXRvbSgpIHsgcmV0dXJuIG9uQXRvbURhdGEuZ2V0
KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5QXRvbSgpIHsgcmV0
dXJuIHBsYWludGV4dE9ubHlBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIHJlc2V0QXRvbSgpIHsgcmV0dXJuIHJlc2V0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBzZWFyY2hBdG9tKCkgeyByZXR1cm4gc2VhcmNoQXRvbURhdGEuZ2V0
KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXRBdG9tKCkgeyByZXR1cm4gc3Vi
bWl0QXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNB
dG9tKCkgeyByZXR1cm4gc3VidGl0bGVzQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBB
dG9tU3RyaW5nJiB0ZWxBdG9tKCkgeyByZXR1cm4gdGVsQXRvbURhdGEuZ2V0KCk7IH0KK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0QXRvbSgpIHsgcmV0dXJuIHRleHRBdG9tRGF0YS5nZXQo
KTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgp
IHsgcmV0dXJuIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsg
fQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHVybEF0b20oKSB7IHJldHVybiB1cmxBdG9tRGF0
YS5nZXQoKTsgfQorCitXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVDb21tb25BdG9tU3Ry
aW5ncygpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5
NTguLjQ1Y2NiNmIzOTY4ODJlMGVlYTI2YzExYmRmYjc2ZTFmYTJkYzVlNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDQsNyArNDUs
NyBAQCBQYXN0ZWJvYXJkQnVmZmVyOjp+UGFzdGVib2FyZEJ1ZmZlcigpID0gZGVmYXVsdDsKIAog
Ym9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0eXBlID09
ICJ0ZXh0L2h0bWwiIHx8IHR5cGUgPT0gInRleHQvdXJpLWxpc3QiOworICAgIHJldHVybiB0eXBl
ID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHx8IHR5cGUgPT0gInRleHQvaHRtbCIgfHwg
dHlwZSA9PSAidGV4dC91cmktbGlzdCI7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuRXhwb3Nl
VVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4
IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjVlYzJkOTA3MWIyZGQy
ZGVkZDYxYjQ4ZDQ4OWQ3MGZkYTdlY2UwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVNYXJr
dXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAg
bV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0KTsKKyAgICBtX2N1
c3RvbURhdGEud3JpdGVTdHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHRleHQpOwog
fQogCiB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVy
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAK
aW5kZXggYzcxMjAxNjEwOTU4N2FkNWRjNGM5ZTFjOWEzNjFkYmU4ZjY5MzMyYS4uOTRmNDFmNzRm
M2U2N2ZhM2YwZGNlOWE2YTdlOTBlYWFlMmE0MDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUgIkNvbW1v
bkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMjksNyArMTMwLDcgQEAgYm9vbCBBbmlt
YXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIG90aGVyLCBib29sIG1hdGNo
UHJvcGVydGllcykgY28KIAogYXV0byBBbmltYXRpb246OmluaXRpYWxOYW1lKCkgLT4gY29uc3Qg
TmFtZSYKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmFtZT4gaW5pdGlhbFZhbHVlIHsg
TmFtZSB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJub25lIiksIHRydWUgfSB9OworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBpbml0aWFsVmFsdWUgeyBOYW1lIHsgbm9uZUF0b20o
KSwgdHJ1ZSB9IH07CiAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGMwOGUxZmYx
MWU3YjcxNWI3YjlmMDhmZmJkYTc1M2Q5MmY5Mjk4OTkuLjhhMDZhYzZiZDI4NTk3MTk1OGUyZGY0
MjEzMzY1NDhhYWM0MGI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURF
TykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5
cGUuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJG
b3VyQ0MuaCIKQEAgLTMzMSwxMiArMzMyLDYgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGFw
cGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogICAgIHJldHVybiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
OwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKLXsKLSAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQbGFpbigi
dGV4dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1
cm4gdGV4dFBsYWluOwotfQotCiBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1l
ZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpOwpAQCAtNDg1LDcgKzQ4MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAKICAg
ICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcgb3IgaXMgbm90IG1lYW5pbmdmdWwsIHRy
eSB0byBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4KICAgICBBdG9tU3RyaW5nIGNvbnRhaW5l
clR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKLSAgICBpZiAoY29udGFpbmVy
VHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
KCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgeworICAgIGlmIChjb250YWluZXJU
eXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0o
KSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpKSB7CiAgICAg
ICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICAgICAgbV9jb250ZW50VHlw
ZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkpKTsKICAg
ICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggZWIyOWYyNThmZDE4M2U0MDIwNTk1ZWY2YWQ4NzExNDcwYzQ3MTk0
Zi4uNTUzMWY3NmY1NDhlZjA1ZmZlYTk2ZWQzMDFjYWQwM2NkNWViOTJjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIKQEAgLTY5
Miw2ICs2OTMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICAvLyBJbml0
aWFsaXplIEF0b21TdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIFdURjo6QXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJIHRocmVh
ZCBzbyB0aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQgaXQncyB0
aHJlYWQtc3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA2Njcw
OGVjMDAxNGUwZTAyNzI5ODU4MGM4N2QwNzljODZiN2QzODViLi4yMmRhYmViNDJhMDQ4YmY2ZDRl
YzhkOTM1NTJlNTRjYWJkMzUwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJGaWVsZC5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJOYW1lcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVhYmxlLmNwcAppbmRleCBjODRkNDkwYzMyZDhjY2M3Yjc0ZjQ0N2JmYjA5NzY1MDI3YmE3
N2Q4Li5jNDQ0MTJhZDk0YTU5OWFjNjAzMWYxYmJmY2MzODZhMjBlNjM0YTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NBbmlt
YXRpb24uaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkNT
U1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUg
IkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudFRpbWVsaW5lLmgiCkBAIC0yNTcsNyArMjU4LDcgQEAgYm9vbCBTdHlsZWFibGU6
OmFuaW1hdGlvbkxpc3RDb250YWluc05ld2x5VmFsaWRBbmltYXRpb24oY29uc3QgQW5pbWF0aW9u
TGlzdCYgYW4KIAogICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9ucykgewogICAg
ICAgICBhdXRvJiBuYW1lID0gYW5pbWF0aW9uLT5uYW1lKCkuc3RyaW5nOwotICAgICAgICBpZiAo
bmFtZSAhPSAibm9uZSIgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtleWZyYW1lRWZmZWN0U3RhY2su
Y29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAmJiBrZXlmcmFtZXNSdWxlRXhp
c3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQoKSwgbmFtZSkpCisgICAgICAg
IGlmIChuYW1lICE9IG5vbmVBdG9tKCkgJiYgIW5hbWUuaXNFbXB0eSgpICYmIGtleWZyYW1lRWZm
ZWN0U3RhY2suY29udGFpbnNJbnZhbGlkQ1NTQW5pbWF0aW9uTmFtZShuYW1lKSAmJiBrZXlmcmFt
ZXNSdWxlRXhpc3RzRm9yQW5pbWF0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbi5nZXQoKSwgbmFtZSkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMwMiw3ICszMDMsNyBAQCB2
b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3Vy
cmVudFN0eWxlLCBjb25zdCBSZW5kZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBhdXRvJiBhbmltYXRpb25OYW1lID0gY3VycmVudEFuaW1hdGlvbi0+bmFtZSgpLnN0
cmluZzsKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1lID09ICJub25lIiB8fCBhbmltYXRp
b25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChhbmltYXRpb25OYW1lID09IG5vbmVB
dG9tKCkgfHwgYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgICAgIGlmICgha2V5ZnJhbWVzUnVsZUV4aXN0c0ZvckFuaW1hdGlvbihl
bGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25OYW1lKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggNGI2YzUz
MGJlOWRjZDBlZjRlNTIwYThmMTBmMmJjNDZhMTM1ZmRhYi4uYTY1ZWMxYzhlODEzZTQ2MmFmOWNl
NDE0MTFlOTIyODAwY2EwMGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgpAQCAtMTEwLDEwICsxMTEsOSBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdAogICAgIAogU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbCgiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGF1dG9SZXZlcnNlKCJhdXRvLXJldmVyc2UiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcm90YXRlID0gZ2V0QXR0
cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKLSAgICBpZiAocm90YXRlID09IGF1dG9WYWwp
CisgICAgYXV0byYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsK
KyAgICBpZiAocm90YXRlID09IGF1dG9BdG9tKCkpCiAgICAgICAgIHJldHVybiBSb3RhdGVBdXRv
OwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1JldmVyc2UpCiAgICAgICAgIHJldHVybiBSb3RhdGVB
dXRvUmV2ZXJzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApp
bmRleCA1MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYwZTIwNDYxODRlLi5lNzdhMTU3MzMz
NGQ0MzNiNGRjYWZhNjAxODA3ZjMxM2Q2Y2U2NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0zMTksMTggKzMxOSwyMiBAQCBTdHJpbmcgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZnJvbUF0dHIpOwogfQogCi1ib29sIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAorc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIHN1bUF0b20oKQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gc3VtKCJzdW0iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHN1bTsKK30KKworYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0Fk
ZGl0aXZlKCkgY29uc3QKK3sKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFkZGl0aXZlQXR0cik7Ci0gICAgcmV0
dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6Qnk7
CisgICAgcmV0dXJuIHZhbHVlID09IHN1bUF0b20oKSB8fCBhbmltYXRpb25Nb2RlKCkgPT0gQW5p
bWF0aW9uTW9kZTo6Qnk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVs
YXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBzdW0oInN1bSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKLSAgICByZXR1cm4gdmFsdWUgPT0g
c3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25Nb2RlOjpUbzsKKyAgICByZXR1cm4g
dmFsdWUgPT0gc3VtQXRvbSgpICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBBbmltYXRpb25Nb2RlOjpU
bzsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1RhcmdldEF0dHJpYnV0ZUNTU1By
b3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAppbmRleCBmM2FkMTU3MDExNmNlMmEwN2U1MTQxMDExMGI2ZGJhZDIyODc5
NzgzLi43YzE2NjQzZWU5ZDY5N2QxMGQ0ZDYzNzgxZjFjZTM4ZjUyZDZlZTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTIx
LDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNs
dWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggOWFkMWU0YzM4YWU1N2RiZDhlZjNmMmNkNGZiNmU2
OWRkOWQyNDJiYi4uODk5MmVjOTkzNjhkZTNiYWNkNTc4ODZmMzhkMGJmM2U4MWI0Yzk1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKQEAg
LTIwLDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtNDAsNyArNDEsNyBAQCBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgICAgIGNhc2UgRWRnZU1v
ZGVUeXBlOjpXcmFwOgogICAgICAgICAgICAgcmV0dXJuICJ3cmFwIl9zOwogICAgICAgICBjYXNl
IEVkZ2VNb2RlVHlwZTo6Tm9uZToKLSAgICAgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAg
ICAgICAgIHJldHVybiBub25lQXRvbSgpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC01Myw3ICs1NCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxF
ZGdlTW9kZVR5cGU+IHsKICAgICAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5cGU6OkR1cGxpY2F0
ZTsKICAgICAgICAgaWYgKHZhbHVlID09ICJ3cmFwIikKICAgICAgICAgICAgIHJldHVybiBFZGdl
TW9kZVR5cGU6OldyYXA7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAibm9uZSIpCisgICAgICAgIGlm
ICh2YWx1ZSA9PSBub25lQXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6
Tm9uZTsKICAgICAgICAgcmV0dXJuIEVkZ2VNb2RlVHlwZTo6VW5rbm93bjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCmluZGV4IDA2NzAzNDE1ZTg5OTVkOGViNDU5ODAzMGI3
YjMwZmMxNDliOThkMDAuLmFmOTYzYzI4ZDA2ZDU5ZmM0Nzc3ODIwYzA1ZDM1MzQ2YjM3ZGQxYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJUeXBlcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJT
VkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKIApAQCAtNzUs
MTEgKzc2LDYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVHlwZT4g
ewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50
VHlwZT4gewotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0cmluZygpCi0gICAgewotICAg
ICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRvU3RyaW5nID0gTUFL
RV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8iKTsKLSAgICAgICAgcmV0dXJuIGF1dG9TdHJpbmc7
Ci0gICAgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZygp
CiAgICAgewogICAgICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhdXRv
U3RhcnRSZXZlcnNlU3RyaW5nID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImF1dG8tc3RhcnQt
cmV2ZXJzZSIpOwpAQCAtODgsNyArODQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
TWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdoZXN0RW51bVZhbHVl
KCkgeyByZXR1cm4gU1ZHTWFya2VyT3JpZW50QW5nbGU7IH0KICAgICBzdGF0aWMgU1ZHTWFya2Vy
T3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAg
ICAgaWYgKHN0cmluZyA9PSBhdXRvU3RyaW5nKCkpCisgICAgICAgIGlmIChzdHJpbmcgPT0gYXV0
b0F0b20oKSkKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvOwogICAgICAg
ICBpZiAoc3RyaW5nID09IGF1dG9TdGFydFJldmVyc2VTdHJpbmcoKSkKICAgICAgICAgICAgIHJl
dHVybiBTVkdNYXJrZXJPcmllbnRBdXRvU3RhcnRSZXZlcnNlOwpAQCAtOTcsNyArOTMsNyBAQCBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT4gewogICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyT3JpZW50VHlwZSB0eXBlKQogICAgIHsKICAgICAg
ICAgaWYgKHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKLSAgICAgICAgICAgIHJldHVybiBh
dXRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICAgICAgaWYg
KHR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QXV0b1N0YXJ0UmV2ZXJzZSkKICAgICAgICAgICAgIHJl
dHVybiBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRleCAwOGNmNGIwM2My
NTE1YjYyMDgwMDA1NzI1ZjAyMjkyM2I0ZDZiN2FiLi42YTAzMWIwYmM0YjI0YTVkYjc0ODM4ZTdh
ZjAwNWQ5NTEwNmM0NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCkBAIC02NSw5ICs2Niw4IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50Ojpz
ZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25zdCBBdG9tU3RyaW5nJiBTVkdTdHls
ZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBuID0gZ2V0
QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBk
ZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOworICAgIGF1dG8mIHR5cGVWYWx1ZSA9IGdldEF0dHJpYnV0
ZShTVkdOYW1lczo6dHlwZUF0dHIpOworICAgIHJldHVybiB0eXBlVmFsdWUuaXNOdWxsKCkgPyBj
c3NDb250ZW50VHlwZUF0b20oKSA6IHR5cGVWYWx1ZTsKIH0KIAogdm9pZCBTVkdTdHlsZUVsZW1l
bnQ6OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuaAppbmRleCA2YTIyNDhjN2Y4NWE2MDQ0NGQ2N2RiN2E5MWE3ZDhlYjli
Y2MxZjAwLi41ZGNlZGUzMTMzM2UwMjgzYzJjZjYwMDAyOTk4ZTVjMWJjMzU3MzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0yMCw2ICsyMCw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RleHRDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtNzcsNyArNzgsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gewogICAgICAgICBjYXNlIFNWR1RleHRQYXRo
U3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICAg
ICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOgotICAgICAgICAgICAgcmV0dXJuICJhdXRv
Il9zOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgICAgIGNhc2UgU1ZHVGV4
dFBhdGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1cm4gImV4YWN0Il9zOwogICAgICAg
ICB9CkBAIC04OCw3ICs4OSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0
aFNwYWNpbmdUeXBlPiB7CiAKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSBmcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAodmFsdWUgPT0g
ImF1dG8iKQorICAgICAgICBpZiAodmFsdWUgPT0gYXV0b0F0b20oKSkKICAgICAgICAgICAgIHJl
dHVybiBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvOwogICAgICAgICBpZiAodmFsdWUgPT0gImV4YWN0
IikKICAgICAgICAgICAgIHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggMTZlYWI2
NTIwZTg4YmNjYzM1Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNS4uNGNjNWRkNzIzYjhiYTkxOGMxZTU2
OTVmMjg2N2NjZmM3ZTllYzZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHN0YXRpYyBTTUlMRXZlbnRT
ZW5kZXImIHNtaWxFbmRFdmVudFNlbmRlcigpCiAgICAgcmV0dXJuIHNlbmRlcjsKIH0KIAorc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGluZGVmaW5pdGVBdG9tKCkKK3sKKyAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgi
aW5kZWZpbml0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gaW5kZWZpbml0ZVZhbHVlOworfQorCiAvLyBUaGlzIGlzIHVzZWQgZm9yIGR1cmF0aW9uIHR5
cGUgdGltZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBuZWdhdGl2ZS4KIHN0YXRpYyBjb25zdCBkb3Vi
bGUgaW52YWxpZENhY2hlZFRpbWUgPSAtMS47CiAgICAgCkBAIC0zMzgsOSArMzQ0LDcgQEAgU01J
TFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3IGRhdGEpCiAg
ICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCiAgICAgYXV0byBwYXJzZSA9
IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAocGFyc2UgPT0gaW5kZWZp
bml0ZVZhbHVlLmdldCgpKQorICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlQXRvbSgpKQogICAg
ICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKIAogICAgIGRvdWJsZSByZXN1bHQg
PSAwOwpAQCAtNjk4LDggKzcwMiw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXRD
b3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU01J
TFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICh2YWx1ZSA9PSBpbmRlZmluaXRl
VmFsdWUpCisgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVBdG9tKCkpCiAgICAgICAgIHJldHVy
biBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CiAgICAgZG91YmxlIHJlc3Vs
dCA9IHZhbHVlLnN0cmluZygpLnRvRG91YmxlKCZvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCBlNzc2NWFjY2U4NDgzMzE1
ZDNiNzQ0MmM4MDA5ZDkzYmQ5MjcyNDBiLi42MGE2OTkwYjJkZDUwOGE3OTc1Y2VjMTM2MWU2YTlk
N2RiMDFmMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5VHJhaXRzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgorI2lu
Y2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYTE2ZGZjNGEyMmRiMDIzNTYyMGE3YjlmN2U5Yzc4ZDE5
N2JiOTA3Ni4uNmRhZDJkNGZlMzg5YWJlZGU5M2M5ZjY0MDdiYjZhOTZhNjRlY2IzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1
ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7Cisg
ICAgaW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiB9CiAKIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFs
dWUuY3BwCmluZGV4IGQyMjk1NGJiYTNmMWNlMGI4YTFkZTk2YmE2MDIxNjkzZjQ4MTMzOTEuLmMz
MDViYzBiNWUyNzg0NzVhYmJjMjQ3NmI4YjIyMmNmNDllYmRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhWYWx1ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJYUGF0aFZhbHVlLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2lu
Y2x1ZGUgIlhQYXRoRXhwcmVzc2lvbk5vZGUuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5k
ZXggMTY1OGZjMDAwZDFmNzgwNzUyOTZlODgzMDY1MTk0MWY2MjZjMjBjNi4uN2FmZDg5MzhmYzQ0
Njg3NjBhNzg5NzA4NTU2ZGU2ZWEzMzI5Y2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1v
cnlSZWxlYXNlLmg+CkBAIC0yMjcsNiArMjI4LDcgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFs
aXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BV
UHJvY2VzczoiLCB0aGlzKTsKICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNl
ckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjppbml0
aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFu
ZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAgbWVtb3J5UHJl
c3N1cmVIYW5kbGVyLnNldExvd01lbW9yeUhhbmRsZXIoW3RoaXNdIChDcml0aWNhbCBjcml0aWNh
bCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNTMwY2JjZDVhMDZlMDQyZGI2NjVhNTA4
YTBjNmIwY2Q0ZDE4MWYxOS4uZDgxYWQ4OTEyZTJhY2E2ZDk3ZmMyNDgzOGVmNTQ0NWVkOTkxMTEz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xp
ZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpAQCAtMzE4LDYgKzMx
OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBXVEY6OlRocmVhZDo6c2V0Q3Vy
cmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIG1fc3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBwYXJhbWV0ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOwogICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxl
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRp
YWxpemVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFs
aXplQ29jb2EubW0KaW5kZXggYzI4MGNmZmUzOTgzZmZjOWRmY2M1ZjUxNjRiMzRjNjQ0YjMyYWY2
Zi4uYjRkOTEyMWJjYmU3M2M3ZGQ5NDVjYjEwN2RhMDZhZDBiMjIyMjVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVKSVRPcGVyYXRp
b25zLmg+CiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHd0Zi9HZW5lcmF0ZVByb2ZpbGVzLmg+
CkBAIC01MCw2ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkluaXRpYWxpemF0aW9uQ29kZSh2b2lk
KiA9IG51bGxwdHIpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKFtOU1RocmVhZCBp
c01haW5UaHJlYWRdLCAiSW5pdGlhbGl6ZVdlYktpdDIgc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQiKTsKIAogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjpp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEluaXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAppbmRleCBlNWMwOTZmMjhkMjhhYmZm
NDNjOTM3MTRmNjVkZTdiZjMyYTMyY2RhLi4wM2ZjYzExMTlmYWIyYWIxY2IwOTdkYjI4MGNlMTgx
OThjNzVhZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLaXQySW5pdGlh
bGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFs
aXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUpJVE9wZXJhdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvR2VuZXJhdGVQcm9maWxlcy5oPgpAQCAtNDUsNiArNDYsNyBAQCB2b2lkIElu
aXRpYWxpemVXZWJLaXQyKCkKICAgICBKU0M6OmluaXRpYWxpemUoKTsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6
OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgV1RGOjpSZWZDb3VudGVkQmFz
ZTo6ZW5hYmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXgg
N2Y2OGZkMzIzNjdlOTViOTdjNTM1M2ZmMjhiY2NjMWQ5ZjE1ODhkNS4uNzdiOWE1ZWEzYmVlYTU1
ZGQxYTY3MjA4YTE5MDA4MjRhOTA5Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5z
aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuaD4K
QEAgLTU0Niw2ICs1NDcsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29u
dGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgV1RGOgogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNv
cmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OmluaXQoKTsKICAgICAKICAgICBhdXRvIHBhcnNlZFJ1bGVzID0gV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoanNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKaW5kZXggODc1NTQ4YmM0ZmE1YzYyY2RiMjAzYWNhOWUx
YzVjYjdiZTUyNDViYS4uZjZhNzc2ZmI1MGI2YWMwYWEzMDczN2U2OTdiOWIxNmUwODQ5NDhiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNv
cmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250RGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZvbnRTZWxlY3Rvci5oPgpAQCAtNDcsNiArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHN0YXRpYyBGb250Q2FzY2FkZSBtYWtlRm9udChjb25zdCBXZWJGb250RGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uKQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjpp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKIAogICAgIFN0cmluZyBmb250RmFtaWx5U3Ry
aW5nKGRlc2NyaXB0aW9uLmZhbWlseSwgZGVzY3JpcHRpb24uZmFtaWx5TGVuZ3RoKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE2YjU2Yjc4
ODYzZDM4MzE2ZDQyOTUwOTg2M2RiM2E1ZTllYWE4MWUuLjNkMjUwY2ZhMzNkODZkYjVlMWJlZjg5
ZTU0ZjM1NTgyNGQxMTQ0ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEg
Y29tbW9uIGhlYWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlQmFja2VuZCk6
CisKIDIwMjItMDQtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgPGJvZHk+IHdpdGggb3ZlcmZsb3c6aGlkZGVuIENTUyBpcyBzY3JvbGxhYmxlIG9u
IGlPUyBzdGFuZGFsb25lIHdlYiBhcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDdiNjg2OTdlNjRmZWRm
ZTg2OWM3MTg5OGJkZjNlM2U0YmI2MjlkNDkuLjdjZjZiNzI1NTFmYTQzNzRhN2ExMDM2MzliZDJl
ZWFjZTdkZmVlNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbWJpbmVkVVJMRmlsdGVycy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25BY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQ29t
cGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgpAQCAt
MjEzLDYgKzIxNCw3IEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHJlcXVlc3RJblRvcEFuZEZy
YW1lVVJMcyhBU0NJSUxpdGVyYWwgdXJsLCBBU0NJSUxpdGVyYWwKIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgbWFrZUJhY2tlbmQoU3RyaW5nJiYganNvbikKIHsK
ICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0
b21TdHJpbmdzKCk7CiAgICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoanNvbikpOwogICAgIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKICAgICBiYWNrZW5kLmFkZENvbnRl
bnRFeHRlbnNpb24oInRlc3RGaWx0ZXIiX3MsIFdURk1vdmUoZXh0ZW5zaW9uKSwgeyB9KTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Gb250U2hhZG93VGVz
dHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZvbnRTaGFkb3dUZXN0
cy5jcHAKaW5kZXggMGRlMzg4NTY1ZDcwMmNhMWJhYzI1YjRlODUwODQ1ZDEyZDhmNmI4OC4uOTY0
MTQ1NTdlY2I4ZmE0NWUzMzU4ZmFmNTg2YzQyMjlkN2ZkNzA5NiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZvbnRTaGFkb3dUZXN0cy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZvbnRTaGFkb3dUZXN0cy5jcHAKQEAgLTI2
LDEzICsyNiwyNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVzdC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZvbnRTaGFkb3cuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1Qo
Rm9udFNoYWRvdywgSW52YWxpZENvbG9yKQorY2xhc3MgRm9udFNoYWRvd1Rlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBBdG9tU3RyaW5nOjppbml0KCk7CisgICAgICAgIFdlYkNvcmU6OmluaXRpYWxp
emVDb21tb25BdG9tU3RyaW5ncygpOworICAgIH0KK307CisKK1RFU1RfRihGb250U2hhZG93VGVz
dCwgSW52YWxpZENvbG9yKQogewogICAgIEZvbnRTaGFkb3cgZm9udFNoYWRvdzsKICAgICBmb250
U2hhZG93Lm9mZnNldCA9IHsgMS4xLCAyLjIgfTsKQEAgLTQyLDcgKzUzLDcgQEAgVEVTVChGb250
U2hhZG93LCBJbnZhbGlkQ29sb3IpCiAgICAgRVhQRUNUX0VRKHNlcmlhbGl6YXRpb25Gb3JDU1Mo
Zm9udFNoYWRvdyksICJub25lIik7CiB9CiAKLVRFU1QoRm9udFNoYWRvdywgTm9PZmZzZXRPckJs
dXJSYWRpdXMpCitURVNUX0YoRm9udFNoYWRvd1Rlc3QsIE5vT2Zmc2V0T3JCbHVyUmFkaXVzKQog
ewogICAgIEZvbnRTaGFkb3cgZm9udFNoYWRvdzsKICAgICBmb250U2hhZG93LmNvbG9yID0gQ29s
b3I6OnJlZDsKQEAgLTUzLDcgKzY0LDcgQEAgVEVTVChGb250U2hhZG93LCBOb09mZnNldE9yQmx1
clJhZGl1cykKICAgICBFWFBFQ1RfRVEoc2VyaWFsaXphdGlvbkZvckNTUyhmb250U2hhZG93KSwg
Im5vbmUiKTsKIH0KIAotVEVTVChGb250U2hhZG93LCBOb09mZnNldCkKK1RFU1RfRihGb250U2hh
ZG93VGVzdCwgTm9PZmZzZXQpCiB7CiAgICAgRm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZv
bnRTaGFkb3cuY29sb3IgPSBDb2xvcjo6cmVkOwpAQCAtNjMsNyArNzQsNyBAQCBURVNUKEZvbnRT
aGFkb3csIE5vT2Zmc2V0KQogICAgIEVYUEVDVF9FUShzZXJpYWxpemF0aW9uRm9yQ1NTKGZvbnRT
aGFkb3cpLCAiMHB4IDBweCByZ2IoMjU1LCAwLCAwKSAzLjNweCIpOwogfQogCi1URVNUKEZvbnRT
aGFkb3csIE5lZ2F0aXZlT2Zmc2V0KQorVEVTVF9GKEZvbnRTaGFkb3dUZXN0LCBOZWdhdGl2ZU9m
ZnNldCkKIHsKICAgICBGb250U2hhZG93IGZvbnRTaGFkb3c7CiAgICAgZm9udFNoYWRvdy5jb2xv
ciA9IENvbG9yOjpyZWQ7CkBAIC03Miw3ICs4Myw3IEBAIFRFU1QoRm9udFNoYWRvdywgTmVnYXRp
dmVPZmZzZXQpCiAgICAgRVhQRUNUX0VRKHNlcmlhbGl6YXRpb25Gb3JDU1MoZm9udFNoYWRvdyks
ICItMS4xcHggLTIuMnB4IHJnYigyNTUsIDAsIDApIDMuM3B4Iik7CiB9CiAKLVRFU1QoRm9udFNo
YWRvdywgTm9CbHVyUmFkaXVzKQorVEVTVF9GKEZvbnRTaGFkb3dUZXN0LCBOb0JsdXJSYWRpdXMp
CiB7CiAgICAgRm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFkb3cuY29sb3IgPSBD
b2xvcjo6cmVkOwpAQCAtODIsNyArOTMsNyBAQCBURVNUKEZvbnRTaGFkb3csIE5vQmx1clJhZGl1
cykKICAgICBFWFBFQ1RfRVEoc2VyaWFsaXphdGlvbkZvckNTUyhmb250U2hhZG93KSwgIjEuMXB4
IDIuMnB4IHJnYigyNTUsIDAsIDApIik7CiB9CiAKLVRFU1QoRm9udFNoYWRvdywgTmVnYXRpdmVC
bHVyUmFkaXVzKQorVEVTVF9GKEZvbnRTaGFkb3dUZXN0LCBOZWdhdGl2ZUJsdXJSYWRpdXMpCiB7
CiAgICAgRm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFkb3cuY29sb3IgPSBDb2xv
cjo6cmVkOwpAQCAtOTEsNyArMTAyLDcgQEAgVEVTVChGb250U2hhZG93LCBOZWdhdGl2ZUJsdXJS
YWRpdXMpCiAgICAgRVhQRUNUX0VRKHNlcmlhbGl6YXRpb25Gb3JDU1MoZm9udFNoYWRvdyksICIx
LjFweCAyLjJweCByZ2IoMjU1LCAwLCAwKSAtMy4zcHgiKTsKIH0KIAotVEVTVChGb250U2hhZG93
LCBBbGxOZWdhdGl2ZSkKK1RFU1RfRihGb250U2hhZG93VGVzdCwgQWxsTmVnYXRpdmUpCiB7CiAg
ICAgRm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFkb3cuY29sb3IgPSBDb2xvcjo6
cmVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458190</attachid>
            <date>2022-04-22 17:45:04 -0700</date>
            <delta_ts>2022-04-22 21:22:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239585-20220422174503.patch</filename>
            <type>text/plain</type>
            <size>122777</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE3YWRjYzMxNzY0NTZhNDE4ODdlNzQy
YWMzNDJhZjM5ZjRmZDk4MjYuLmE2NDg1Y2U1ZjAxMWFkMzRkZGNmNjM4MTY2Y2VjMWNlYTNkMDUx
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGdsb2JhbCBBdG9tU3RyaW5ncyB0byBhIGNvbW1v
biBoZWFkZXIgdG8gcHJvbW90ZSByZXVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2Fy
ZW4gYW5kIERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZy5jcHA6
CisgICAgICAgIChXVEY6OkF0b21TdHJpbmc6OmluaXQpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0
b21TdHJpbmcuaDoKKyAgICAgICAgKFdURjo6eG1sbnNBdG9tKToKKyAgICAgICAgKFdURjo6dHJ1
ZUF0b20pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpmYWxzZUF0b20pOiBEZWxldGVkLgorCiAy
MDIyLTA0LTIyICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJbnRlZ3JhdGlvbl0gQWRkIEZsZXhGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxl
ZCBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAwOTY4MzMxMmIxNzk2MGIzYTQ4ZjQ3MmI3YWE4ODgy
ZTcxNGUyOC4uYTZmNmRjMzZlMWRlZTdjZWZkYWQ2ODQ1NGVlYjNkZjYxZGE3MmUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAyMi0wNC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgZ2xvYmFsIEF0b21TdHJpbmdzIHRvIGEgY29tbW9u
IGhlYWRlciB0byBwcm9tb3RlIHJldXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzk1ODUKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJl
biBhbmQgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmQ6OmdldFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b250ZW50SGludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
ZXRDb250ZW50SGludCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRp
b25FZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0OjpnZXRUaW1p
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0Ojp1cGRhdGVUaW1p
bmcpOgorICAgICAgICAqIGFuaW1hdGlvbi9FZmZlY3RUaW1pbmcuaDoKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjppc1ZhbGlkQ1NTU2VsZWN0b3IpOgorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjpkaXNwbGF5IGNvbnN0KToKKyAgICAgICAgKiBjc3MvTWVkaWFG
ZWF0dXJlTmFtZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGZWF0dXJlTmFtZXM6Omlu
aXQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bm9ybWFsaXplVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldERhdGFG
cm9tSXRlbUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJ
bnB1dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZHJvcEVmZmVjdCBj
b25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkZXNpZ25Nb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vSW5saW5lU3R5bGVTaGVl
dE93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDU1NDb250ZW50VHlwZSk6Cisg
ICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCk6CisgICAgICAgICogZG9t
L21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRTaGFkb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckNTUyk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxl
U3BhbklubGluZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXJDYWNoZXM6OnByb3BlcnR5VmFsdWVGb3JOb2RlKToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZl
cnRlcjo6X2VudGVyRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0Vs
ZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudCk6CisgICAgICAgICogaHRtbC9B
dXRvY2FwaXRhbGl6ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JBdXRvY2FwaXRh
bGl6ZVR5cGUpOgorICAgICAgICAqIGh0bWwvQXV0b2ZpbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJv
bFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmZhbGxi
YWNrVmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvRW50ZXJLZXlIaW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dHJpYnV0ZVZhbHVlRm9yRW50ZXJLZXlIaW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1ZGlvRWxl
bWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAgICAgICAgKiBodG1sL0hU
TUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50
Ojpmb3JtQ29udHJvbFR5cGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9WYWxpZERpclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6c2V0QXV0b2NvcnJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6cGxhaW50ZXh0T25s
eU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6YXV0b2NvbXBsZXRlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJRnJhbWVFbGVtZW50Ojpsb2FkaW5nRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50OjpkZWNvZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
Ojpsb2FkaW5nRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVsb2FkIGNv
bnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAgICAgICogaHRtbC9JbnB1dE1v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6Om5vbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRNb2RlTmFtZXM6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRNb2RlTmFtZXM6OnRlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dE1vZGVOYW1lczo6dXJs
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0TW9kZU5hbWVzOjplbWFpbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dE1vZGVOYW1lczo6c2VhcmNoKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZU5hbWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjplbWFpbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVO
YW1lczo6c3VibWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZWxlcGhv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnVybCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6dXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5SW1wbCk6
CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFjazo6bWFpbktleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6Y29tbWVudGFyeUtleXdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6a2luZEtleXdvcmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzdWJ0
aXRsZXNLZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhcHRpb25zS2V5d29y
ZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKyAgICAgICAg
KiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6OnBvc2l0
aW9uQWxpZ24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpzZXRQb3NpdGlvbkFs
aWduKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6dG9KU09OIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmF1dG9LZXl3b3JkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29y
ZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmg6CisgICAgICAg
ICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
UGFyc2VyOjpXZWJWVFRQYXJzZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNy
ZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpBdHRy
aWJ1dGVzOjpwYXJzZUVuY29kaW5nVHlwZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOCk6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgICogcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRBdWRpb1Ry
YWNrS2luZERpc3BsYXlOYW1lSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgorICAgICAg
ICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4
dDo6cGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBwYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjppbml0aWFsaXplTmFtZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL0Nv
bW1vbkF0b21TdHJpbmdzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWx0ZXJuYXRpdmVB
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmF1dG9BdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmNh
cHRpb25zQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tZW50YXJ5QXRvbSk6CisgICAgICAg
IChXZWJDb3JlOjpjc3NDb250ZW50VHlwZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6ZWFnZXJB
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmVtYWlsQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpm
YWxzZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6bGF6eUF0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6bWFpbkF0b20pOgorICAgICAgICAoV2ViQ29yZTo6bm9uZUF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6b2ZmQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpvbkF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhaW50ZXh0T25seUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRBdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6c3VibWl0
QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJ0aXRsZXNBdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OnRlbEF0b20pOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEF0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6dGV4dFBsYWluQ29udGVudFR5cGVBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnRydWVB
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OnVybEF0b20pOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTYWZlVHlwZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbjo6aW5pdGlhbE5hbWUgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRQbGFpbik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU3RhcnRX
ZWJUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5oOgor
ICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUpOgorICAgICAg
ICAqIHN0eWxlL1N0eWxlYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmFu
aW1hdGlvbkxpc3RDb250YWluc05ld2x5VmFsaWRBbmltYXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1bUF0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxhdGVkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPjo6ZnJvbVN0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR01hcmtlclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0
eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6ZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6dG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmF1dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlIGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT46OmZyb21T
dHJpbmcpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5kZWZpbml0ZUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01J
TEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6cmVwZWF0Q291bnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5VHJhaXRzLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX25vdGlmaWNhdGlvbkNsaWVu
dCk6CisgICAgICAgICogeG1sL1hQYXRoVmFsdWUuY3BwOgorCiAyMDIyLTA0LTIyICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWdy
ZXNzaW9uKHIyODc2ODQpIFJlc291cmNlcyBmcm9tIHRoZSBtZW1vcnkgY2FjaGUgc2hvdyBlbXB0
eSBjb250ZW50IGluIE5ldHdvcmssIFNvdXJjZXMsIGFuZCBTZWFyY2ggdGFicwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3YjlkYTYxOTRlYzRiYTM2ZjhkYTU3OGI4MTdlMjNiNTBlOWM3NTJkLi5iZGY2NmUzMGUzMTIx
Mjg1NjMxZmVlODMxMjFlYzNlY2QxYTUwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDIyLTA0LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92
ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHByb21vdGUgcmV1c2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTU4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuIGFuZCBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVBy
b2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpydW5Jbml0aWFsaXphdGlvbkNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6
OmNvbXBpbGVDb250ZW50UnVsZUxpc3QpOgorCiAyMDIyLTA0LTIyICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgZmluZCBpbnRlcmFjdGlv
biBBUEkgdG8gV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmRjZGI0
ZjRlNDdjMzZiNzc0ZjhmYTk3OTEzOGI0ZTBlZDFmNWExZS4uMzc3ZmI2Y2U5OGEwYWQ0OGYxY2Nh
YWE0MTk1MDA0MjhhODU2ZTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIyLTA0LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHBy
b21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuIGFuZCBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKG1ha2VGb250
KToKKwogMjAyMi0wNC0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjkzMTk5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbVN0cmluZy5jcHAKaW5kZXggOTMwZmNiMjk5NzY4NDhkMzE4ZmNiZTEyODM0YTlmNGIzZWM1
YTgwMy4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRmYTA3Y2EzYTFjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMzcsOCArMTM3LDYgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRhOwog
V1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc3RhckF0b21EYXRhOwogV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geG1sQXRvbURhdGE7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB4
bWxuc0F0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1ZUF0b21EYXRhOwotV1RGX0VYUE9SVF9QUklWQVRF
IE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VBdG9t
RGF0YTsKIAogdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKIHsKQEAgLTE1OSw4ICsxNTcsNiBAQCB2
b2lkIEF0b21TdHJpbmc6OmluaXQoKQogICAgICAgICBzdGFyQXRvbURhdGEuY29uc3RydWN0V2l0
aG91dEFjY2Vzc0NoZWNrKCIqIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgeG1sbnNBdG9tRGF0YS5j
b25zdHJ1Y3RXaXRob3V0QWNjZXNzQ2hlY2soInhtbG5zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgICAgICB0cnVlQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vz
c0NoZWNrKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAg
ICBmYWxzZUF0b21EYXRhLmNvbnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjaygiZmFsc2UiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmgKaW5kZXggNzYzMTE1YTY2NjdiODg4M2JlNWNiY2UzYmViZjQ1NDYwMzEzNTk1
Yi4uMGFkZjUyMjNiYjYwMjljM2RlOTg5YzY4MzE3NDAxNjZmMDZjNzA2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nLmgKQEAgLTI5MywxNiArMjkzLDEyIEBAIGV4dGVybiBXVEZfRVhQT1JUX1BS
SVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVtcHR5QXRvbURhdGE7
CiBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gc3RhckF0b21EYXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFU
RSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbEF0b21E
YXRhOwogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHhtbG5zQXRvbURhdGE7Ci1leHRlcm4gV1RGX0VYUE9SVF9Q
UklWQVRFIE1haW5UaHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJ1
ZUF0b21EYXRhOwotZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBNYWluVGhyZWFkTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlQXRvbURhdGE7CiAKIGlubGluZSBjb25z
dCBBdG9tU3RyaW5nJiBudWxsQXRvbSgpIHsgcmV0dXJuIG51bGxBdG9tRGF0YS5nZXQoKTsgfQog
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRvbURh
dGEuZ2V0KCk7IH0KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBzdGFyQXRvbSgpIHsgcmV0dXJu
IHN0YXJBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIHhtbEF0b20o
KSB7IHJldHVybiB4bWxBdG9tRGF0YS5nZXQoKTsgfQogaW5saW5lIGNvbnN0IEF0b21TdHJpbmcm
IHhtbG5zQXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBjb25z
dCBBdG9tU3RyaW5nJiB0cnVlQXRvbSgpIHsgcmV0dXJuIHRydWVBdG9tRGF0YS5nZXQoKTsgfQot
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGZhbHNlQXRvbSgpIHsgcmV0dXJuIGZhbHNlQXRvbURh
dGEuZ2V0KCk7IH0KIAogaW5saW5lIEF0b21TdHJpbmcgQXRvbVN0cmluZzo6ZnJvbVVURjgoY29u
c3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTM2Miw5ICszNTgsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRvbVN0
cmluZz4gewogdXNpbmcgV1RGOjpBdG9tU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsKIHVz
aW5nIFdURjo6ZW1wdHlBdG9tOwotdXNpbmcgV1RGOjpmYWxzZUF0b207CiB1c2luZyBXVEY6OnN0
YXJBdG9tOwotdXNpbmcgV1RGOjp0cnVlQXRvbTsKIHVzaW5nIFdURjo6eG1sQXRvbTsKIHVzaW5n
IFdURjo6eG1sbnNBdG9tOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhZDBhYzkxNzJhMzJiYzU1
ZjJiYTM4Yjc1ZTExYzM1OWU3ZjJhZjViLi4xYWNhZGUwMDliMGI3YTkyODA4MzgwY2E1MjJiYzM1
Mjk3YzM5ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDIsNiArMTI0Miw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9DUFVNb25pdG9y
LmgKICAgICBwbGF0Zm9ybS9Db2xvckNob29zZXIuaAogICAgIHBsYXRmb3JtL0NvbG9yQ2hvb3Nl
ckNsaWVudC5oCisgICAgcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaAogICAgIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUu
aAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQ5ZjNiMzA3NTcyMTE1
Nzc3Nzg1OWMwYmFiMTYwMWQwY2Y4ZTk1ZTkuLjQ2OWNjM2FkYjVmYmY3YjM4MTQ5MmQzZWNkNDIx
OTI2Y2RjZmRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5jbHVk
ZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBD
bGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RGVmZXJyZWRQcm8KICAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3RpdmVQYXN0ZWJv
YXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKICAgICB9CiAKLSAgICBp
ZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgIGlmICh0eXBlID09IHRleHRQbGFpbkNv
bnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5UZXh0
UmVhZGVyOwogICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFkZXIs
IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKICAgICAg
ICAgcmVzdWx0QXNTdHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCmluZGV4IGM5YjdmYzFkNTJmYTZmYTI0NjNkNTBmNTZiODk0ZWI1ZTZmYjUwNDEuLjgz
YmY5ZTUwMTYzZjRlOWNjYTFiMzRhYTMwYTQ1YTI0YTg2YjRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEzNiw3ICsxMzcsNiBAQCBjb25z
dCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNvbnN0CiAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzcGVlY2hI
aW50KCJzcGVlY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtdXNpY0hpbnQo
Im11c2ljIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgiZGV0
YWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdGV4dEhpbnQoInRleHQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb3Rpb25IaW50KCJtb3Rpb24iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+
Y29udGVudEhpbnQoKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIE1l
ZGlhU3RyZWFtVHJhY2s6OmNvbnRlbnRIaW50KCkgY29uc3QKICAgICBjYXNlIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkRldGFpbDoKICAgICAgICAgcmV0dXJuIGRldGFpbEhp
bnQ7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6SGludFZhbHVlOjpUZXh0Ogot
ICAgICAgICByZXR1cm4gdGV4dEhpbnQ7CisgICAgICAgIHJldHVybiB0ZXh0QXRvbSgpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICB9CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRDb250ZW50SGludChjb25zdCBTdHJp
bmcmIGhpbnRWYWx1ZSkKICAgICAgICAgICAgIHZhbHVlID0gTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OkhpbnRWYWx1ZTo6RGV0YWlsOwogICAgICAgICBlbHNlIGlmIChoaW50VmFsdWUgPT0gIm1v
dGlvbiIpCiAgICAgICAgICAgICB2YWx1ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50
VmFsdWU6Ok1vdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09ICJ0ZXh0IikKKyAg
ICAgICAgZWxzZSBpZiAoaGludFZhbHVlID09IHRleHRBdG9tKCkpCiAgICAgICAgICAgICB2YWx1
ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OlRleHQ7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZThmZWZhOTdmM2RmNmQ4
NGM1N2Y3MWU0MTg0ZjI2M2Q4ZmUwZWJmMS4uMjk2OGMwYzhlY2U1YTg1MTE1NmEwMTczMTU2MjFi
NWIxNzNkODVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjgsNiArMTg2OCw3IEBAIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmNwcAorcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCiBwbGF0Zm9ybS9Db250ZW50
VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDI5ZGMyZTkwMDAxMDZmYzUxMzFmYzEyZjEyZmY0ZWM2NjVkMmIyM2UuLjIz
ZWRiYjE0N2U3NGUzNmE5OTU0ZmY3YzI2OTc4NTFmZTgzMDA2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzMsNiArMjcz
Myw3IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMx
RTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5
IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAq
LzsgfTsKIAkJODM5QkU2RDUyNEY1ODc2MjAwNERGNTBGIC8qIElJUkZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QkU2RDIyNEY1ODc1NTAw
NERGNTBGIC8qIElJUkZpbHRlci5oICovOyB9OworCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlCQUQg
LyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzOUM2OUNFMjgxMEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5n
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
QTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDczRCAv
KiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlFMDQw
MDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwpAQCAtMTIzMDcsNiArMTIzMDgsOCBA
QAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDIyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJGaWx0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QkU2RDQyNEY1ODc1NTAwNERGNTBGIC8qIElJUkZpbHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJGaWx0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzlDNjlDRDI4MTBEMTFDMDBFNjlCQUQg
LyogQ29tbW9uQXRvbVN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzlDNjlDRTI4MTBEMTFDMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQXRvbVN0cmluZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMkFCRDgyNEQ4NkRDNjAwRTJENzNEIC8qIERlbGF5T3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNBMkFCREEyNEQ4NkRDNzAwRTJENzNEIC8qIERlbGF5T3B0aW9ucy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRGVsYXlPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNB
NEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE4MSw2ICszMDE4NCw4IEBACiAJCQkJQzMz
MEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLAogCQkJCUMzN0NERUJD
MTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLywKIAkJCQlCQ0M4Q0ZD
QTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAorCQkJCTgzOUM2OUNEMjgx
MEQxMUMwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5jcHAgKi8sCisJCQkJODM5QzY5Q0Uy
ODEwRDExQzAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggKi8sCiAJCQkJQTE0MDkwRkMx
QUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovLAogCQkJ
CTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJNDFE
MDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0zNDA4MCw2ICsz
NDA4NSw3IEBACiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEy
MDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzlDNjlE
MDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25D
cnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGMzJCMURGQkIxMDcwMDQx
NkQ2QyAvKiBDb21tb25WTS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDQzMWZkZWExNTcyNjI3MmEyYjY4Zjk3NGIy
NmUwYWU2YTU1ZmMwYWEuLjA3ZTE5ODM2ZDcwZDFkYjE1M2U4ODZmMTgyN2Y2YjliZjBlMWMzZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAKICNpbmNsdWRlICJD
U1NBbmltYXRpb24uaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUg
IkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2luY2x1
ZGUgIldlYkFuaW1hdGlvbi5oIgpAQCAtNjksNyArNzAsNyBAQCBFZmZlY3RUaW1pbmcgQW5pbWF0
aW9uRWZmZWN0OjpnZXRUaW1pbmcoKSBjb25zdAogICAgIHRpbWluZy5pdGVyYXRpb25TdGFydCA9
IG1faXRlcmF0aW9uU3RhcnQ7CiAgICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlvbnM7
CiAgICAgaWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcuZHVy
YXRpb24gPSAiYXV0byJfczsKKyAgICAgICAgdGltaW5nLmR1cmF0aW9uID0gYXV0b0F0b20oKTsK
ICAgICBlbHNlCiAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1hdGlv
bnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIHRpbWluZy5kaXJlY3Rpb24gPSBt
X2RpcmVjdGlvbjsKQEAgLTM5OSw3ICs0MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRp
b25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaQog
ICAgICAgICAgICAgaWYgKGR1cmF0aW9uQXNEb3VibGUgPCAwIHx8IHN0ZDo6aXNuYW4oZHVyYXRp
b25Bc0RvdWJsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciB9OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmluZz4o
dGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAhPSAiYXV0byIpCisgICAgICAgICAgICBpZiAoc3Rk
OjpnZXQ8U3RyaW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9IGF1dG9BdG9tKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VmZmVjdFRpbWluZy5oCmluZGV4IDIxMDcz
ZmE0NzMwM2Y2NGZkMmJhMjYxOWFlOTE4N2Y1ODE1OTUwNmUuLmU4YzBmMWJkOGQ5NTkyMTQ2YzEx
M2U2NDM0NTlhYzEwZGRiZmQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9FZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWZmZWN0VGlt
aW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb21t
b25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxheWJh
Y2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtMzMsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRWZmZWN0VGltaW5nIHsKLSAgICBzdGQ6OnZhcmlh
bnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgImF1dG8iX3MgfTsKKyAgICBzdGQ6OnZhcmlh
bnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uIHsgYXV0b0F0b20oKSB9OwogICAgIGRvdWJsZSBk
ZWxheSB7IDAgfTsKICAgICBkb3VibGUgZW5kRGVsYXkgeyAwIH07CiAgICAgZG91YmxlIGl0ZXJh
dGlvblN0YXJ0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAwOGZhNDY3YzhhMmUz
NWU4MDE5Mzc3OTBjZjJkOTBmYmI4YmVjZjBmLi4yNjdjNTFhMzM5NGY0MjM4OWJmY2NjN2E4ODI2
M2Y3ZjcxZDc1YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9u
RXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUgIkNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIgpAQCAtMjAzLDcgKzIwNCw3IEBAIHN0YXRpYyBFeHBl
Y3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046Ok9i
amVjdCYgcnVsZU9iCiBib29sIGlzVmFsaWRDU1NTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVj
dG9yKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXRvbVN0cmluZzo6aW5p
dCgpOworICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogICAgIFF1YWxpZmllZE5h
bWU6OmluaXQoKTsKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQoSFRNTFF1aXJrc01vZGUp
OwogICAgIENTU1BhcnNlciBwYXJzZXIoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuaAppbmRleCBlNDZhZmIzNzVhMDU1YzQ1YTYwOWI4ZDgyYzg4Y2IyZDc2M2M1YmFhLi5lODk3
ZjIzMjBjZjU3YmFiZDBlMzgxZmJhNmNiNTkyNDE0YzQxMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
Q1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KQEAgLTEzOSw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24m
IHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+Jik7CiAKICAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLSAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJ0
ZXh0L2NzcyJfczsgfQorICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gY3Nz
Q29udGVudFR5cGVBdG9tKCk7IH0KIAogICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IG1fY29u
dGVudHM7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVldCB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmNwcAppbmRleCA0ZDUxMWI1ZTY4NTQxMzA1ZDQwYzFjMzNiNzkwOWE2NTA2NTU2
ZjYyLi5kOTViMDk4NzNkZGU4YTdiN2IxY2E3YmI0ZjVmMzZkMDAwMDIzNDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBTdHJpbmcgRm9udEZhY2U6OmRpc3Bs
YXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBtX2JhY2tpbmct
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBjb25zdCBhdXRvJiBsb2FkaW5nQmVoYXZpb3JX
cmFwcGVkID0gbV9iYWNraW5nLT5sb2FkaW5nQmVoYXZpb3IoKTsKICAgICBpZiAoIWxvYWRpbmdC
ZWhhdmlvcldyYXBwZWQpCi0gICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICAgICAgcmV0dXJu
IGF1dG9BdG9tKCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUobG9hZGluZ0JlaGF2aW9yV3JhcHBlZC52YWx1ZSgpKS0+Y3NzVGV4dCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAppbmRleCAyZjViOGIwNDczOTVhMmNi
ZDc1NWFjMWNmNTM0YmZkY2VmNTcxMDU3Li45YWZiOTMyMWI0NDk3N2Y2YzZiM2U5MzhmNDc1ZTAy
MjM0NjA2YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFt
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKQEAg
LTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYUZlYXR1
cmVOYW1lcy5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5hbWVzIHsKIApAQCAtMzIsNyArMzQs
NyBAQCB2b2lkIGluaXQoKQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgICAgICBp
bml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICNkZWZpbmUgSU5JVElBTElaRV9HTE9CQUwo
bmFtZSwgc3RyaW5nKSBuYW1lLmNvbnN0cnVjdChzdHJpbmcsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICAgICAgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVE
SUFGRUFUVVJFKElOSVRJQUxJWkVfR0xPQkFMKQogI3VuZGVmIElOSVRJQUxJWkVfR0xPQkFMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDBlZDJiZWQ5NjIzMjA0ZjlhMGJlYjlm
Y2IxNWExMGRkN2U1ZDhmMzkuLjY2NmJjYzc5NjU4YzlkZWRmMTliMjk1Nzk1NDNjOGJjYjYzNjkw
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50Lmgi
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXJJ
dGVtLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbUxpc3QuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgc3RhdGljIFN0cmluZyBub3JtYWxp
emVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIFN0cmluZyBsb3dlcmNhc2VUeXBlID0g
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCk7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInRleHQiIHx8IGxvd2VyY2FzZVR5
cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWlu
Il9zOworICAgICAgICByZXR1cm4gdGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCk7CiAgICAgaWYg
KGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0
L3VyaS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiX3M7CiAgICAgaWYg
KGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIpKQpAQCAtMjY1LDcgKzI2Niw3
IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIGRh
dGEpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNhbml0aXplZERh
dGEgPSB1cmwuc3RyaW5nKCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIikK
KyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gdGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCkpCiAgICAg
ICAgIHNhbml0aXplZERhdGEgPSBkYXRhOyAvLyBOb3RoaW5nIHRvIHNhbml0aXplLgogCiAgICAg
aWYgKHNhbml0aXplZERhdGEgIT0gZGF0YSkKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIERhdGFU
cmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIFJlZjxEYXRhVHJh
bnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBs
YWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKICAgICBhdXRvIHBhc3RlYm9hcmQg
PSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7Ci0gICAgcGFzdGVib2FyZC0+d3JpdGVT
dHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CisgICAgcGFzdGVib2FyZC0+d3JpdGVT
dHJpbmcodGV4dFBsYWluQ29udGVudFR5cGVBdG9tKCksIHBsYWluVGV4dCk7CiAgICAgcGFzdGVi
b2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CkBAIC00NjcsNyArNDY4LDcgQEAgdm9p
ZCBEYXRhVHJhbnNmZXI6OmNvbW1pdFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBuYXRpdmVQYXN0
ZWJvYXJkKQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gIm5vbmUiX3M7CisgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiB9CiAKIHZvaWQgRGF0
YVRyYW5zZmVyOjpzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA3ZTVkOGQwNzI2NDIxZjM2Y2RiYjc4ZDA1MWZhYTkyODQxMzlmYzA2Li41NmIx
MzlkMGRjNjRmODg1YWJkYjAyYmQ0ZTZjNWM2MDM2OWQwYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21tZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJl
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgpAQCAtNjAwOSw3ICs2
MDEwLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShJbmhlcml0ZWRCb29sIHZhbHVl
KQogCiBTdHJpbmcgRG9jdW1lbnQ6OmRlc2lnbk1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBp
bkRlc2lnbk1vZGUoKSA/ICJvbiJfcyA6ICJvZmYiX3M7CisgICAgcmV0dXJuIGluRGVzaWduTW9k
ZSgpID8gb25BdG9tKCkgOiBvZmZBdG9tKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldERlc2ln
bk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0
eWxlU2hlZXRPd25lci5jcHAKaW5kZXggZDJhYThkMWY3ZTM5OWUzM2RmYTVjMTExMDY0MWQyZjQw
MWU2YzNhMC4uMDVjODJmYmFhOTE4YmUwYTFlNjM3ODViMmFhZGYzOGI3ZTU0ZDU3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVTdHlsZVNoZWV0T3du
ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCkBAIC0xNTEsOCArMTUyLDcgQEAgaW5saW5lIGJvb2wgaXNWYWxpZENTU0Nv
bnRlbnRUeXBlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpCiAgICAg
Ly8gRklYTUU6IFNob3VsZCBNSU1FIHR5cGVzIHJlYWxseSBiZSBjYXNlIHNlbnNpdGl2ZSBpbiBY
TUwgZG9jdW1lbnRzPyBEb2Vzbid0IHNlZW0gbGlrZSB0aGV5IHNob3VsZCwKICAgICAvLyBldmVu
IHRob3VnaCBvdGhlciB0aGluZ3MgYXJlIGNhc2Ugc2Vuc2l0aXZlIGluIHRoYXQgY29udGV4dC4g
TUlNRSB0eXBlcyBzaG91bGQgbmV2ZXIgYmUgY2FzZSBzZW5zaXRpdmUuCiAgICAgLy8gV2Ugc2hv
dWxkIHZlcmlmeSB0aGlzIGFuZCB0aGVuIHJlbW92ZSB0aGUgaXNIVE1MRWxlbWVudCBjaGVjayBo
ZXJlLgotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gY3NzQ29udGVudFR5cGUoInRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50
VHlwZTsKKyAgICByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgPyBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9jc3MiKSA6IHR5cGUgPT0gY3NzQ29udGVudFR5
cGVBdG9tKCk7CiB9CiAKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGMyZjNiNzMwN2QwZDA5MGEzM2NjNzE2
NmRhNjIzNDlmNTJiNTBjZWUuLjkxYmM0ZmViODlkYzU4M2JmMGIzZjcwNzA1ZmJkMmE4YmRjMjlk
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRYU0xTdHlsZVNo
ZWV0LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVu
dElubGluZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CkBAIC05NCw3ICs5NSw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxl
U2hlZXQoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTdHJpbmcgdHlwZSA9IGF0dHJp
YnV0ZXMtPmdldDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInR5cGUiX3MpOwogCi0gICAg
ICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09ICJ0ZXh0L2NzcyI7CisgICAg
ICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09IGNzc0NvbnRlbnRUeXBlQXRv
bSgpOwogI2lmIEVOQUJMRShYU0xUKQogICAgICAgICBtX2lzWFNMID0gdHlwZSA9PSAidGV4dC94
bWwiIHx8IHR5cGUgPT0gInRleHQveHNsIiB8fCB0eXBlID09ICJhcHBsaWNhdGlvbi94bWwiIHx8
IHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24v
cnNzK3htbCIgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24vYXRvbSt4bWwiOwogICAgICAgICBpZiAo
IW1faXNDU1MgJiYgIW1faXNYU0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFj
L0ltYWdlQ29udHJvbHNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcAppbmRleCA1NGQ2Y2YwZTU4MDc5NzQxMTVlNmNlZWQ3MjY3Yzc4ZmJkZTIyMzRl
Li5iMjU2YTMyYTY4ZWUxMGJhYThkZmJkODU0MzAyMjE1OTEwNjkzMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUg
IkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJFbGVtZW50UmFyZURhdGEu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udFNoYWRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuY3BwCmluZGV4IDI4ODQ4MGI2NTc3ZThl
ZDFhMDNmNzU4YjBiNDg0N2I4MTc1ZmZlODIuLjI3MDcyNDBiY2FjNThjNWIyMDczNjkzYzQ1MGU0
MTI4M2Y5MWU5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udFNoYWRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkZvbnRTaGFkb3cuaCIKIAogI2luY2x1ZGUgIkNvbG9yU2Vy
aWFsaXphdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwx
MCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JD
U1MoY29uc3QgRm9udFNoYWRvdyYgc2hhZG93KQogewogICAgIGlmIChzaGFkb3cub2Zmc2V0Lmlz
WmVybygpICYmICFzaGFkb3cuYmx1clJhZGl1cykKLSAgICAgICAgcmV0dXJuICJub25lIl9zOwor
ICAgICAgICByZXR1cm4gbm9uZUF0b20oKTsKIAogICAgIGlmICghc2hhZG93LmNvbG9yLmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgICAgICByZXR1cm4gbm9uZUF0b20o
KTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZChzaGFk
b3cub2Zmc2V0LndpZHRoKCksICJweCAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWViM2JkMDg3MzQzMmI0ZDBjOGQ5
ZjkxMGQyODdkYjFiNTk4ZGZjMy4uYTljNGM2Mzk0NzA4ZTM1YzUyZjJhYWQ4YjVjMmM5MDAwZTM3
YTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCcmVha0Jsb2NrcXVvdGVD
b21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5j
bHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTcxOCw3ICs3MTksNyBAQCB2b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFu
SW5saW5lKEluc2VydAogICAgICAgICAgICAgaWYgKGlzQmxvY2soZWxlbWVudCkpCiAgICAgICAg
ICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJv
cGVydHlEaXNwbGF5LCAiaW5saW5lIl9zLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVu
dC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmco
KSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxlKCkuc2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eUZsb2F0LCAibm9uZSJfcywgZmFsc2UpOworICAgICAgICAgICAgICAg
IGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5Rmxv
YXQsIG5vbmVBdG9tKCksIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCBiNWUwYWNhNmUyMWJi
MjZiYmRjM2M1OGViZDM1MDk2NWQwODQ2ZGY3Li45NGE0NjBmNTM0OTQ4NGNhYjA4YmRlOTg4YTI3
ZmIxNzQwMDBhOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCiAjaW1wb3J0ICJDb2xvckNvbnZlcnNpb24uaCIKICNpbXBvcnQgIkNvbG9yU2VyaWFsaXph
dGlvbi5oIgorI2ltcG9ydCAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbXBvcnQgIkRhdGFEZXRl
Y3Rpb25SZXN1bHRzU3RvcmFnZS5oIgogI2ltcG9ydCAiRWRpdGluZy5oIgogI2ltcG9ydCAiRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA1M2NjNmFiMDE2YmU4MmU3MGViNTU1NWE3OTYzZWE1MDli
YmJmMzA0Li40MmI2YzIyZTU5ZTI4OGNhYjAyNjg4OTZkZmFkZGI2MDEwMWY0OGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW1wb3J0ICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW1wb3J0ICJDb2xvckNvY29hLmgi
CiAjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bXBvcnQgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2lt
cG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTU5Nyw3ICs1OTgsNyBAQCBTdHJpbmcgSFRNTENv
bnZlcnRlckNhY2hlczo6cHJvcGVydHlWYWx1ZUZvck5vZGUoTm9kZSYgbm9kZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZQogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNhc2UgQ1NTUHJvcGVy
dHlEaXNwbGF5OgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8IGVs
ZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShub2ZyYW1lc1RhZykpCi0gICAgICAgICAgICByZXR1
cm4gIm5vbmUiX3M7CisgICAgICAgICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICAgICAgZWxz
ZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShibG9ja3F1b3RlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYm9keVRhZykgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKGNlbnRlclRhZykKICAgICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoZGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXJUYWcpIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShkaXZUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkbFRhZykKICAgICAgICAgICAgICB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoZHRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShmaWVsZHNl
dFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShmcmFtZVRhZykKQEAgLTEwMTcsNyArMTAxOCw3IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZl
cnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAg
IFN0cmluZyBmb250S2VybmluZyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1l
bnQsIENTU1Byb3BlcnR5Rm9udEtlcm5pbmcpOwogICAgIFN0cmluZyBsZXR0ZXJTcGFjaW5nID0g
X2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlMZXR0ZXJT
cGFjaW5nKTsKICAgICBpZiAoZm9udEtlcm5pbmcubGVuZ3RoKCkgfHwgbGV0dGVyU3BhY2luZy5s
ZW5ndGgoKSkgewotICAgICAgICBpZiAoZm9udEtlcm5pbmcgPT0gIm5vbmUiKQorICAgICAgICBp
ZiAoZm9udEtlcm5pbmcgPT0gbm9uZUF0b20oKSkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmpl
Y3Q6QDAuMCBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgZG91YmxlIGtlcm5WYWwgPSBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpID8gbGV0dGVy
U3BhY2luZy50b0RvdWJsZSgpIDogMC4wOwpAQCAtMTExMCw3ICsxMTExLDcgQEAgTlNEaWN0aW9u
YXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQpCiAKICAgICAgICAgU3RyaW5nIGh5cGhlbmF0aW9uID0gX2NhY2hlcy0+cHJvcGVy
dHlWYWx1ZUZvck5vZGUoY29yZUJsb2NrRWxlbWVudCwgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5z
KTsKICAgICAgICAgaWYgKGh5cGhlbmF0aW9uLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBpZiAo
aHlwaGVuYXRpb24gPT0gImF1dG8iKQorICAgICAgICAgICAgaWYgKGh5cGhlbmF0aW9uID09IGF1
dG9BdG9tKCkpCiAgICAgICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEh5cGhlbmF0aW9u
RmFjdG9yOjEuMF07CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgW3BhcmFncmFw
aFN0eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjAuMF07CkBAIC0xNjEwLDcgKzE2MTEsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgQk9PTCBl
bWJlZGRlZCkKIAogICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgJiYgIWVtYmVk
ZGVkKQogICAgICAgICBfcHJvY2Vzc0hlYWRFbGVtZW50KGVsZW1lbnQpOwotICAgIGVsc2UgaWYg
KCFkaXNwbGF5VmFsdWUubGVuZ3RoKCkgfHwgIShkaXNwbGF5VmFsdWUgPT0gIm5vbmUiIHx8IGRp
c3BsYXlWYWx1ZSA9PSAidGFibGUtY29sdW1uIiB8fCBkaXNwbGF5VmFsdWUgPT0gInRhYmxlLWNv
bHVtbi1ncm91cCIpKSB7CisgICAgZWxzZSBpZiAoIWRpc3BsYXlWYWx1ZS5sZW5ndGgoKSB8fCAh
KGRpc3BsYXlWYWx1ZSA9PSBub25lQXRvbSgpIHx8IGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY29s
dW1uIiB8fCBkaXNwbGF5VmFsdWUgPT0gInRhYmxlLWNvbHVtbi1ncm91cCIpKSB7CiAgICAgICAg
IGlmIChfY2FjaGVzLT5pc0Jsb2NrRWxlbWVudChlbGVtZW50KSAmJiAhZWxlbWVudC5oYXNUYWdO
YW1lKGJyVGFnKSAmJiAhKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY2VsbCIgJiYgW190ZXh0VGFi
bGVzIGNvdW50XSA9PSAwKQogICAgICAgICAgICAgJiYgIShbX3RleHRMaXN0cyBjb3VudF0gPiAw
ICYmIGRpc3BsYXlWYWx1ZSA9PSAiYmxvY2siICYmICFlbGVtZW50Lmhhc1RhZ05hbWUobGlUYWcp
ICYmICFlbGVtZW50Lmhhc1RhZ05hbWUodWxUYWcpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUob2xU
YWcpKSkKICAgICAgICAgICAgIF9uZXdQYXJhZ3JhcGhGb3JFbGVtZW50KGVsZW1lbnQsIGVsZW1l
bnQudGFnTmFtZSgpLCBOTywgWUVTKTsKQEAgLTE4NjUsNyArMTg2Niw3IEBAIEJPT0wgSFRNTENv
bnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0
aCkKICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShpbnB1dFRhZykpIHsKICAgICAg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihl
bGVtZW50KTsKLSAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQudHlwZSgpID09ICJ0ZXh0Iikg
eworICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC50eXBlKCkgPT0gdGV4dEF0b20oKSkgewog
ICAgICAgICAgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwog
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBbdmFsdWUgbGVuZ3RoXSA+IDApCiAgICAgICAg
ICAgICAgICAgICAgIF9hZGRWYWx1ZSh2YWx1ZSwgZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggM2FlZTljZjlkZDdkZTZlM2RjODE1MTA0ODVlN2MxN2Y0ZTBlZWUyNC4u
ODBhODg0MzUwMmViNTdmMDNlZGIyZWIzMWRjMjc3MWMwZjlkMzhhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xMjg1LDcgKzEyODYsNyBAQCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3Vt
ZW50JiBvdXRwdXREbwogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQgZWZmZWN0IGhlcmUgYnkg
cGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQgZm9yIHRoZSBmcmFnbWVu
dC4KICAgICAgICAgYXV0byBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1
dERvYyk7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoV1RGTW92ZShzb3VyY2VTdHJpbmcp
LCBmYWtlQm9keS5wdHIoKSk7Ci0gICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4
dC9wbGFpbiIpCisgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSB0ZXh0UGxhaW5Db250
ZW50VHlwZUF0b20oKSkKICAgICAgICAgZnJhZ21lbnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6
OmNyZWF0ZShvdXRwdXREb2MsIFdURk1vdmUoc291cmNlU3RyaW5nKSkpOwogICAgIGVsc2Ugewog
ICAgICAgICBib29sIHN1Y2Nlc3NmdWxQYXJzZSA9IGZyYWdtZW50LT5wYXJzZVhNTChXVEZNb3Zl
KHNvdXJjZVN0cmluZyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRv
Y2FwaXRhbGl6ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcApp
bmRleCBkNjdkYzc5Mjk0ODYyMTQzOTQxNWNlZmU4NjM2OTA3OGY2NDc1ZWJkLi40MGUyYTkwZWVj
MDkxNTIzMGZmMGI1MmQzNTNkYjIzNzY0MjQ1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9j
YXBpdGFsaXplLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFVVE9DQVBJVEFM
SVpFKQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsMTAgKzU3LDggQEAg
Y29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFs
aXplVHlwZSB0eXBlKQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQXV0b2NhcGl0YWxp
emVUeXBlOjpEZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKLSAgICBjYXNlIEF1
dG9jYXBpdGFsaXplVHlwZTo6Tm9uZTogewotICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlTm9uZSgibm9uZSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlTm9uZTsKLSAgICB9
CisgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGU6Ok5vbmU6CisgICAgICAgIHJldHVybiBub25l
QXRvbSgpOwogICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlOjpTZW50ZW5jZXM6IHsKICAgICAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB2YWx1
ZVNlbnRlbmNlcygic2VudGVuY2VzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICByZXR1cm4gdmFsdWVTZW50ZW5jZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0F1dG9maWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3Bw
CmluZGV4IGRlNTE4NWUxN2IzN2U4NGRiMzcxNDg4YjQ2OGJmZGMzMjU4N2Q0MjguLjlkZTcwYjdj
NmFkYWMzZGVjZWUwNmQyNWNjNDJiNmM0OTEyMGY0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQXV0b2ZpbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0
b2ZpbGwuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRWxl
bWVudElubGluZXMuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCkBAIC0xMzYsOSArMTM3LDYgQEAgc3RhdGljIHVuc2ln
bmVkIG1heFRva2Vuc0ZvckF1dG9maWxsRmllbGRDYXRlZ29yeShBdXRvZmlsbENhdGVnb3J5IGNh
dGVnb3J5KQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMu
aHRtbCNwcm9jZXNzaW5nLW1vZGVsLTMKIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0
ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQm
IGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBvbigib24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvZmYo
Im9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLQogICAgIC8vIExhYmVs
OiBEZWZhdWx0CiAgICAgLy8gMjYuIExldCB0aGUgZWxlbWVudCdzIElETC1leHBvc2VkIGF1dG9m
aWxsIHZhbHVlIGJlIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBpdHMgYXV0b2ZpbGwgaGludCBzZXQg
YW5kIGF1dG9maWxsIHNjb3BlIGJlIGVtcHR5LgogICAgIC8vIDI3LiBJZiB0aGUgZWxlbWVudCdz
IGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgaXMgd2VhcmluZyB0aGUgYXV0b2ZpbGwgYW5jaG9yIG1h
bnRsZSwgdGhlbiBsZXQgdGhlIGVsZW1lbnQncyBhdXRvZmlsbCBmaWVsZCBuYW1lIGJlIHRoZSBl
bXB0eSBzdHJpbmcgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtMTQ5LDkgKzE0Nyw5IEBAIEF1
dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50
KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgICAgICAgICByZXR1cm4geyBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpIH07CiAgICAgICAgIAogICAgICAgICBhdXRvIGZvcm0gPSBlbGVtZW50
LmZvcm0oKTsKLSAgICAgICAgaWYgKGZvcm0gJiYgZm9ybS0+YXV0b2NvbXBsZXRlKCkgPT0gb2Zm
KQotICAgICAgICAgICAgcmV0dXJuIHsgb2ZmLCBlbXB0eVN0cmluZygpIH07Ci0gICAgICAgIHJl
dHVybiB7IG9uLCBlbXB0eVN0cmluZygpIH07CisgICAgICAgIGlmIChmb3JtICYmIGZvcm0tPmF1
dG9jb21wbGV0ZSgpID09IG9mZkF0b20oKSkKKyAgICAgICAgICAgIHJldHVybiB7IG9mZkF0b20o
KSwgZW1wdHlTdHJpbmcoKSB9OworICAgICAgICByZXR1cm4geyBvbkF0b20oKSwgZW1wdHlTdHJp
bmcoKSB9OwogICAgIH07CiAKIApAQCAtMTk5LDEzICsxOTcsMTMgQEAgQXV0b2ZpbGxEYXRhIEF1
dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZv
cm1Db250cm8KICAgICAvLyBhdXRvZmlsbCBoaW50IHNldCBiZSBlbXB0eSwgYW5kIGxldCBpdHMg
SURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIHN0cmluZyAib2ZmIi4KICAgICAvLyBU
aGVuLCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoY2F0ZWdvcnkgPT0gQXV0b2ZpbGxDYXRl
Z29yeTo6T2ZmKQotICAgICAgICByZXR1cm4geyBvZmYsIG9mZi5nZXQoKS5zdHJpbmcoKSB9Owor
ICAgICAgICByZXR1cm4geyBvZmZBdG9tKCksIG9mZkF0b20oKS5zdHJpbmcoKSB9OwogCiAgICAg
Ly8gOC4gSWYgY2F0ZWdvcnkgaXMgQXV0b21hdGljLCBsZXQgdGhlIGVsZW1lbnQncyBhdXRvZmls
bCBmaWVsZCBuYW1lIGJlIHRoZSBzdHJpbmcgIm9uIiwKICAgICAvLyBsZXQgaXRzIGF1dG9maWxs
IGhpbnQgc2V0IGJlIGVtcHR5LCBhbmQgbGV0IGl0cyBJREwtZXhwb3NlZCBhdXRvZmlsbCB2YWx1
ZSBiZSB0aGUgc3RyaW5nCiAgICAgLy8gIm9uIi4gVGhlbiwgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgaWYgKGNhdGVnb3J5ID09IEF1dG9maWxsQ2F0ZWdvcnk6OkF1dG9tYXRpYykKLSAgICAgICAg
cmV0dXJuIHsgb24sIG9uLmdldCgpLnN0cmluZygpIH07CisgICAgICAgIHJldHVybiB7IG9uQXRv
bSgpLCBvbkF0b20oKS5zdHJpbmcoKSB9OwogCiAgICAgLy8gOS4gTGV0IHNjb3BlIHRva2VucyBi
ZSBhbiBlbXB0eSBsaXN0LgogICAgIC8vIDEwLiBMZXQgaGludCB0b2tlbnMgYmUgYW4gZW1wdHkg
c2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAK
aW5kZXggOGE1NGNhMDUzNTRhOTMwMjc1OWFiNzViYTNhMTc1NWY3YjlmNDU1ZC4uMmIyM2UxZmQ1
YzdhOGYzZDgzNjc2Y2NlY2EwNGQwODM3ZTk0YTE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oIgogCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgogI2lu
Y2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpA
QCAtNDYsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBGb3JtQ29udHJv
bFN0YXRlIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICByZXR1cm4geyBlbGVtZW50KCktPmNo
ZWNrZWQoKSA/ICJvbiJfcyA6ICJvZmYiX3MgfTsKKyAgICByZXR1cm4geyBlbGVtZW50KCktPmNo
ZWNrZWQoKSA/IG9uQXRvbSgpIDogb2ZmQXRvbSgpIH07CiB9CiAKIHZvaWQgQmFzZUNoZWNrYWJs
ZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0gICAgZWxlbWVudCgpLT5zZXRD
aGVja2VkKHN0YXRlWzBdID09ICJvbiIpOworICAgIGVsZW1lbnQoKS0+c2V0Q2hlY2tlZChzdGF0
ZVswXSA9PSBvbkF0b20oKSk7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6YXBw
ZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhKSBjb25zdApAQCAtOTksOCArMTAwLDcg
QEAgYm9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5k
TW91c2VFdmVudHMpCiAKIFN0cmluZyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmYWxsYmFja1Zh
bHVlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG9uKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICByZXR1cm4gb24uZ2V0KCk7CisgICAgcmV0dXJuIG9uQXRvbSgpOwogfQogCiBib29sIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OnN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAppbmRleCA5NzAzODE0Yzg0ZjQ2OWNkNGZi
MTM2NWUxMTNkNjczMmEwZWU2OTlhLi5iNzc1Njk0YTMyMTExNDU5ZTIwZGQ1NDRjN2Q1NzAwNmFm
MjYyZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VudGVyS2V5SGludC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhpbnQuY3BwCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW50ZXJLZXlIaW50LmgiCiAKKyNp
bmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEVu
dGVyS2V5SGludCBlbnRlcktleUhpbnRGb3JBdHRyaWJ1dGVWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQpAQCAtNjMsNyArNjUsNyBAQCBTdHJpbmcgYXR0cmlidXRlVmFsdWVGb3JFbnRlcktleUhp
bnQoRW50ZXJLZXlIaW50IGhpbnQpCiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlByZXZpb3VzOgog
ICAgICAgICByZXR1cm4gInByZXZpb3VzIl9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpTZWFy
Y2g6Ci0gICAgICAgIHJldHVybiAic2VhcmNoIl9zOworICAgICAgICByZXR1cm4gc2VhcmNoQXRv
bSgpOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpTZW5kOgogICAgICAgICByZXR1cm4gInNlbmQi
X3M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXgg
YThjMDAzMjI5ZTQzMThiODc3NWU3MjY1OGIxMmFlYTA2MzMwMDMzMi4uOGViNmMzZWY4ZjMxMzRk
ODZiMzY4OTFjNWU0MDAxYmI2NDJkNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXVkaW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRp
b0VsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJIVE1MQXVkaW9FbGVt
ZW50LmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTU0LDcgKzU1
LDcgQEAgUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1M
QXVkaW9FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBzcmMpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3Jl
YXRlKGF1ZGlvVGFnLCBkb2N1bWVudCwgZmFsc2UpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIsICJhdXRvIl9zKTsKKyAgICBlbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCBhdXRv
QXRvbSgpKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHNyY0F0dHIsIHNyYyk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IDg3OTQ4NjdjNmUwNGQ1MDE2MTczYmY5N2Q3
MjMwMDdlOWRhZjFkZmQuLjljMzczMTVhY2I1NmJmMDBiYzk1ZTMyZDdhMDEzYTcyNTcxMTZiMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEJ1dHRvbkVsZW1lbnQu
aCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURh
dGEuaCIKICNpbmNsdWRlICJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKQEAgLTgyLDE2ICs4MywxMiBAQCBpbnQgSFRNTEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRUYWJJ
bmRleCgpIGNvbnN0CiBjb25zdCBBdG9tU3RyaW5nJiBIVE1MQnV0dG9uRWxlbWVudDo6Zm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNl
IFNVQk1JVDogewotICAgICAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBzdWJtaXQoInN1Ym1pdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBCVVRUT046Ci0gICAgICAgICAgICByZXR1cm4gSFRNTE5hbWVzOjpidXR0b25UYWct
PmxvY2FsTmFtZSgpOwotICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHJlc2V0KCJyZXNldCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgICAgIHJldHVybiBy
ZXNldDsKLSAgICAgICAgfQorICAgIGNhc2UgU1VCTUlUOgorICAgICAgICByZXR1cm4gc3VibWl0
QXRvbSgpOworICAgIGNhc2UgQlVUVE9OOgorICAgICAgICByZXR1cm4gSFRNTE5hbWVzOjpidXR0
b25UYWctPmxvY2FsTmFtZSgpOworICAgIGNhc2UgUkVTRVQ6CisgICAgICAgIHJldHVybiByZXNl
dEF0b20oKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKaW5kZXggOWMzOWM1NmQzNDE0MzhkMGUwOGI1NTEzZTY3MmI2OWE2
MDliMWIxZC4uOTAxMDUwNWRlMTUyOWRkNDk2ZDk0ZjhmMmMzMjc2MTU3MzIyMTcwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJD
U1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRPTVRva2Vu
TGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oIgpAQCAtNDE1LDEzICs0MTYsMTIgQEAgc3RhdGljIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0b1ZhbGlkRGlyVmFsdWUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBsdHJWYWx1ZSgibHRyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcnRsVmFs
dWUoInJ0bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9WYWx1ZSgiYXV0
byIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsdHIiKSkKICAgICAgICAgcmV0dXJuIGx0clZh
bHVlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInJ0bCIp
KQogICAgICAgICByZXR1cm4gcnRsVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHZhbHVlLCAiYXV0byIpKQotICAgICAgICByZXR1cm4gYXV0b1ZhbHVlOworICAg
ICAgICByZXR1cm4gYXV0b0F0b20oKTsKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIApAQCAt
NTc4LDE3ICs1NzgsMTEgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUoKSBj
b25zdAogICAgIGNhc2UgQ29udGVudEVkaXRhYmxlVHlwZTo6RmFsc2U6CiAgICAgICAgIHJldHVy
biBmYWxzZUF0b20oKTsKICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OlBsYWludGV4dE9u
bHk6Ci0gICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHkiX3M7CisgICAgICAgIHJldHVybiBw
bGFpbnRleHRPbmx5QXRvbSgpOwogICAgIH0KICAgICByZXR1cm4gImluaGVyaXQiX3M7CiB9CiAK
LXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5TmFtZSgpCi17Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFpbnRleHRP
bmx5VmFsdWUoInBsYWludGV4dC1vbmx5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBwbGFpbnRleHRPbmx5VmFsdWUuZ2V0KCk7Ci19Ci0KIEV4Y2VwdGlv
bk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBl
bmFibGVkKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVk
LCAidHJ1ZSIpKQpAQCAtNTk2LDcgKzU5MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVt
ZW50OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbmFibGVkKQogICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJmYWxzZSIpKQogICAg
ICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0
dHIsIGZhbHNlQXRvbSgpKTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShlbmFibGVkLCAicGxhaW50ZXh0LW9ubHkiKSkKLSAgICAgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCBwbGFpbnRleHRPbmx5TmFt
ZSgpKTsKKyAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50
ZWRpdGFibGVBdHRyLCBwbGFpbnRleHRPbmx5QXRvbSgpKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAiaW5oZXJpdCIpKQogICAgICAgICByZW1v
dmVBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0cik7CiAgICAgZWxzZQpAQCAtMTA2NCw5ICsx
MDU4LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdAogCiB2
b2lkIEhUTUxFbGVtZW50OjpzZXRBdXRvY29ycmVjdChib29sIGF1dG9jb3JyZWN0KQogewotICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb25OYW1l
KCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZk5hbWUoIm9mZiIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBvbk5hbWUuZ2V0
KCkgOiBvZmZOYW1lLmdldCgpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBvbkF0b20oKSA6IG9mZkF0b20oKSk7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4
IDE3ZTA4ZmZhOTNkNjFkMGRkODA5NzlkZGY4NGIxYzNjZjUyZDBlMDUuLjMyZTk3YWJjODcyOWY1
Y2NkYWYxYTQ3N2I5YTA2N2M2NDY3NjZmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNp
bmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTEwMTIsMTAgKzEwMTMsNyBAQCB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6c2V0QXV0b2NvbXBsZXRlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogCiBjb25z
dCBBdG9tU3RyaW5nJiBIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jb21wbGV0ZSgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvbigi
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvZmYoIm9mZiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLQotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvbXBsZXRlQXR0ciks
ICJvZmYiKSA/IG9mZiA6IG9uOworICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb21wbGV0ZUF0dHIpLCAi
b2ZmIikgPyBvZmZBdG9tKCkgOiBvbkF0b20oKTsKIH0KIAogUmVmUHRyPERPTUZvcm1EYXRhPiBI
VE1MRm9ybUVsZW1lbnQ6OmNvbnN0cnVjdEVudHJ5TGlzdChSZWY8RE9NRm9ybURhdGE+JiYgZG9t
Rm9ybURhdGEsIFN0cmluZ1BhaXJWZWN0b3IqIGZvcm1WYWx1ZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDFlODFmNTQyNWIwN2UyNGQ5YTljMTIwN2Vi
MzU1OTIxNzI0NjVjODQuLmYyOGU2ZDk2MTU2ZWFkYmQxMGFjNWMzOTkwYTAyYTMxYjVlY2Q4ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUg
IkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKQEAgLTE1Nyw5ICsxNTgsNyBAQCBjb25zdCBGZWF0dXJlUG9saWN5JiBIVE1MSUZy
YW1lRWxlbWVudDo6ZmVhdHVyZVBvbGljeSgpIGNvbnN0CiAKIGNvbnN0IEF0b21TdHJpbmcmIEhU
TUxJRnJhbWVFbGVtZW50Ojpsb2FkaW5nRm9yQmluZGluZ3MoKSBjb25zdAogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZWFnZXIoImVhZ2Vy
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbGF6eSgibGF6eSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omxv
YWRpbmdBdHRyKSwgImxhenkiKSA/IGxhenkgOiBlYWdlcjsKKyAgICByZXR1cm4gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmxvYWRpbmdBdHRyKSwgImxhenkiKSA/IGxhenlBdG9tKCkgOiBlYWdlckF0b20oKTsK
IH0KIAogdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6c2V0TG9hZGluZ0ZvckJpbmRpbmdzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKaW5kZXggMDBjZGQ2MmZlMDQ2Mzg2NDI0ZTU3ODE1OGEzY2M1ZGQ5OWM5NmJiYi4uOGM3MzUy
MGM1NGQ2N2JiYTIzOWE2NGVlN2Y4NzZjYmFmNTQ2MGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpA
QCAtNjc0LDcgKzY3NSw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZygpIGNv
bnN0CiAgICAgY2FzZSBEZWNvZGluZ01vZGU6OkF1dG86CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICByZXR1cm4gImF1dG8iX3M7CisgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiB9CiAKIERlY29k
aW5nTW9kZSBIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZ01vZGUoKSBjb25zdApAQCAtODk2LDEw
ICs4OTcsOCBAQCBzaXplX3QgSFRNTEltYWdlRWxlbWVudDo6cGVuZGluZ0RlY29kZVByb21pc2Vz
Q291bnRGb3JUZXN0aW5nKCkgY29uc3QKIAogY29uc3QgQXRvbVN0cmluZyYgSFRNTEltYWdlRWxl
bWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGxhenkoImxhenkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgYXV0byYgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6bG9hZGluZ0F0dHIpOwotICAgIHJldHVybiBo
YXNMYXp5TG9hZGFibGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVWYWx1ZSkgPyBsYXp5IDogZWFn
ZXI7CisgICAgcmV0dXJuIGhhc0xhenlMb2FkYWJsZUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZVZh
bHVlKSA/IGxhenlBdG9tKCkgOiBlYWdlckF0b20oKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjpzZXRMb2FkaW5nRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkNGMwMzZlMjliNzNhYTNm
YWE0YWQ3YzUyYjdhYTEwMTY0ZTEwZTYzLi5lYWJiNjU3ZTEzMTc2YjAyYmM4MmQwODNkMGNlYTZi
NjkzNTlkNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRv
bVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRSdWxl
TGlzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKQEAgLTM2
NDksMTYgKzM2NTAsMTYgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OnByZWxvYWQoKSBjb25z
dAogICAgIC8vIGh0dHA6Ly93M2MuZ2l0aHViLmlvL21lZGlhY2FwdHVyZS1tYWluLyNtZWRpYXN0
cmVhbXMtaW4tbWVkaWEtZWxlbWVudHMKICAgICAvLyAicHJlbG9hZCIgLSBPbiBnZXR0aW5nOiBu
b25lLiBPbiBzZXR0aW5nOiBpZ25vcmVkLgogICAgIGlmIChtX21lZGlhU3RyZWFtU3JjT2JqZWN0
KQotICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwog
I2VuZGlmCiAKICAgICBzd2l0Y2ggKG1fcHJlbG9hZCkgewogICAgIGNhc2UgTWVkaWFQbGF5ZXI6
OlByZWxvYWQ6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICAgICAgcmV0dXJu
IG5vbmVBdG9tKCk7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6TWV0YURhdGE6CiAg
ICAgICAgIHJldHVybiAibWV0YWRhdGEiX3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6UHJlbG9h
ZDo6QXV0bzoKLSAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgICAgICByZXR1cm4gYXV0b0F0
b20oKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNmZiMTBm
NjcxMjVkODczYjM3YWYyNTNmYTBlMDVmNWMyM2FkOGJmMy4uYWI4ZDZhMjk5ZWY2Y2NmMGExZDIx
MDAxMTM4NmIxYjlmM2E4ZTZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRWRpdGluZy5oIgogI2lu
Y2x1ZGUgIkVkaXRvci5oIgpAQCAtNDM0LDEzICs0MzUsMTIgQEAgdW5zaWduZWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAogCiBzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKFRleHRGaWVsZFNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBub25lKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gZm9yd2FyZCgiZm9yd2FyZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IGJhY2t3YXJkKCJiYWNrd2FyZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
IAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25IYXNOb0RpcmVj
dGlvbjoKLSAgICAgICAgcmV0dXJuIG5vbmU7CisgICAgICAgIHJldHVybiBub25lQXRvbSgpOwog
ICAgIGNhc2UgU2VsZWN0aW9uSGFzRm9yd2FyZERpcmVjdGlvbjoKICAgICAgICAgcmV0dXJuIGZv
cndhcmQ7CiAgICAgY2FzZSBTZWxlY3Rpb25IYXNCYWNrd2FyZERpcmVjdGlvbjoKQEAgLTQ0OCw3
ICs0NDgsNyBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKFRleHRG
aWVsZFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG5vbmU7CisgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiB9
CiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rp
b25EaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dE1vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dE1vZGUuY3BwCmluZGV4IDM0OWQ4
NWI1NjJlN2JiOWM1YWRmZWQ1MjcxMWY1MzA1YzQ3ZGU0OWUuLjdlODBjNzdmN2VmOTRjZjgwODAw
N2UwY2M0NmNmMDI2YmZmNDVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRNb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dE1vZGUuaCIK
IAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgyLDMyICs4MywyNyBAQCBuYW1l
c3BhY2UgSW5wdXRNb2RlTmFtZXMgewogCiBjb25zdCBBdG9tU3RyaW5nJiBub25lKCkKIHsKLSAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUo
Im5vbmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG1v
ZGU7CisgICAgcmV0dXJuIG5vbmVBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRleHQo
KQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gbW9kZSgidGV4dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBy
ZXR1cm4gbW9kZTsKKyAgICByZXR1cm4gdGV4dEF0b20oKTsKIH0KIAogY29uc3QgQXRvbVN0cmlu
ZyYgdGVsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IG1vZGUoInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICByZXR1cm4gbW9kZTsKKyAgICByZXR1cm4gdGVsQXRvbSgpOwogfQogCiBjb25zdCBBdG9t
U3RyaW5nJiB1cmwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gbW9kZSgidXJsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiB1cmxBdG9tKCk7CiB9CiAKIGNvbnN0
IEF0b21TdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vZGUoImVtYWlsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBtb2RlOworICAgIHJldHVybiBlbWFpbEF0b20oKTsK
IH0KIAogY29uc3QgQXRvbVN0cmluZyYgbnVtZXJpYygpCkBAIC0xMjQsOCArMTIwLDcgQEAgY29u
c3QgQXRvbVN0cmluZyYgZGVjaW1hbCgpCiAKIGNvbnN0IEF0b21TdHJpbmcmIHNlYXJjaCgpCiB7
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBt
b2RlKCJzZWFyY2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0
dXJuIG1vZGU7CisgICAgcmV0dXJuIHNlYXJjaEF0b20oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SW5wdXRNb2RlTmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
TmFtZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAKaW5kZXgg
NDUwMzY5ZWM4MWRjYmYxMDMzNjkwZDdmNjQzNzE2NWYxZWU4YzU2Zi4uNmZmYmNmNWNmMjI1Njkz
Mjc5OWYxYWVlM2ExYzQzYzUxYjUxZWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGVO
YW1lcy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbnB1dFR5cGVOYW1lcy5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApA
QCAtNjMsOCArNjQsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZWxvY2FsKCkKIAogY29u
c3QgQXRvbVN0cmluZyYgZW1haWwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZSgiZW1haWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIGVtYWlsQXRvbSgp
OwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBmaWxlKCkKQEAgLTExNywzMiArMTE3LDI3IEBAIGNv
bnN0IEF0b21TdHJpbmcmIHJhbmdlKCkKIAogY29uc3QgQXRvbVN0cmluZyYgcmVzZXQoKQogewot
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFt
ZSgicmVzZXQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJu
IG5hbWU7CisgICAgcmV0dXJuIHJlc2V0QXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBz
ZWFyY2goKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gbmFtZSgic2VhcmNoIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiBzZWFyY2hBdG9tKCk7CiB9CiAKIGNvbnN0
IEF0b21TdHJpbmcmIHN1Ym1pdCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKCJzdWJtaXQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIHN1Ym1pdEF0b20o
KTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgdGVsZXBob25lKCkKIHsKLSAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInRlbCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1
cm4gdGVsQXRvbSgpOwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0KCkKIHsKLSAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWUoInRleHQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIG5hbWU7Cisg
ICAgcmV0dXJuIHRleHRBdG9tKCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIHRpbWUoKQpAQCAt
MTUzLDggKzE0OCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIHRpbWUoKQogCiBjb25zdCBBdG9tU3Ry
aW5nJiB1cmwoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gbmFtZSgidXJsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiB1cmxBdG9tKCk7CiB9CiAKIGNvbnN0IEF0
b21TdHJpbmcmIHdlZWsoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggOTMwNDg0Yjg1YWIyNWFlNTQ3ZGY3
ZjMxZmQ3ZDIwYTVhYTJiZTZmYS4uN2Y0NzM1MDdmYmZhZGJlZjgzZDUxYzhmZjEwOWI5NjJhMTIz
ZGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIK
KyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNTAsOCArMTUx
LDcgQEAgUmVmPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGQKIAogdm9pZCBUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ6OnVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eUltcGwoYm9vbCBpc0Vk
aXRhYmxlLCBib29sIGluaXRpYWxpemF0aW9uKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcGxhaW5UZXh0T25seU5hbWUoInBsYWludGV4
dC1vbmx5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGNvbnN0IGF1
dG8mIHZhbHVlID0gaXNFZGl0YWJsZSA/IHBsYWluVGV4dE9ubHlOYW1lLmdldCgpIDogZmFsc2VB
dG9tKCk7CisgICAgY29uc3QgYXV0byYgdmFsdWUgPSBpc0VkaXRhYmxlID8gcGxhaW50ZXh0T25s
eUF0b20oKSA6IGZhbHNlQXRvbSgpOwogICAgIGlmIChpbml0aWFsaXphdGlvbikgewogICAgICAg
ICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzIHsgQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJs
ZUF0dHIsIHZhbHVlKSB9OwogICAgICAgICBwYXJzZXJTZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKaW5kZXggNjk5NGIxMTMx
ZTIzNDhlNGVlOWQyNWMwOWFjZDRkZjY1ODdjMTAzZi4uN2JhZWFhMDY1YzczNDA5OGUyYmEwM2Qz
MzMwOWUzMTg4MzllZDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
Y3BwCkBAIC0zOCwyOCArMzgsMTcgQEAKICNpbmNsdWRlICJBdWRpb1RyYWNrQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGUuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21TdHJp
bmcmIEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJu
YXRpdmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGFs
dGVybmF0aXZlOwotfQotCiBjb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlv
bktleXdvcmQoKQogewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gZGVzY3JpcHRpb24oImRlc2NyaXB0aW9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAotY29uc3QgQXRv
bVN0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWFpbigibWFpbiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gbWFpbjsKLX0KLQogY29uc3Qg
QXRvbVN0cmluZyYgQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkKIHsKICAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1haW5EZXNjKCJtYWlu
LWRlc2MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkBAIC03MiwxMiArNjEs
NiBAQCBjb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKQog
ICAgIHJldHVybiB0cmFuc2xhdGlvbjsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6Y29tbWVudGFyeUtleXdvcmQoKQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gY29tbWVudGFyeTsKLX0KLQog
QXVkaW9UcmFjazo6QXVkaW9UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBB
dWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogTWVkaWFUcmFja0Jhc2UoY29u
dGV4dCwgTWVkaWFUcmFja0Jhc2U6OkF1ZGlvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFj
a1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZh
dGUodHJhY2tQcml2YXRlKQpAQCAtMTIzLDEwICsxMDYsMTAgQEAgdm9pZCBBdWRpb1RyYWNrOjpz
ZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIAogYm9vbCBBdWRpb1RyYWNr
Ojppc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gdmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkKLSAgICAgICAgfHwgdmFsdWUgPT0gY29t
bWVudGFyeUtleXdvcmQoKQorICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUF0b20oKQor
ICAgICAgICB8fCB2YWx1ZSA9PSBjb21tZW50YXJ5QXRvbSgpCiAgICAgICAgIHx8IHZhbHVlID09
IGRlc2NyaXB0aW9uS2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IG1haW5LZXl3b3JkKCkK
KyAgICAgICAgfHwgdmFsdWUgPT0gbWFpbkF0b20oKQogICAgICAgICB8fCB2YWx1ZSA9PSBtYWlu
RGVzY0tleXdvcmQoKQogICAgICAgICB8fCB2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKTsK
IH0KQEAgLTIwOCwxMyArMTkxLDEzIEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2luZEZyb21Q
cml2YXRlKCkKIHsKICAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CiAgICAgY2FzZSBB
dWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6Ci0gICAgICAgIHNldEtpbmQoQXVkaW9UcmFj
azo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKGFsdGVybmF0aXZlQXRv
bSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6RGVzY3Jp
cHRpb246CiAgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluOgotICAg
ICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5k
KG1haW5BdG9tKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRl
OjpNYWluRGVzYzoKICAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQo
KSk7CkBAIC0yMjMsNyArMjA2LDcgQEAgdm9pZCBBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVBy
aXZhdGUoKQogICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFy
eToKLSAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAg
ICAgICAgc2V0S2luZChjb21tZW50YXJ5QXRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZToKICAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKaW5kZXggNGUxODZjMTY2MjA3
YjA3YTc4ZDBlNzZlYzRkM2RkMDkwOTk2MTcyOC4uYmRiN2YxYjIyYzAyMTkxNjljYzEzMjdmNDUz
NTE1MjFmZTdlN2JiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAg
LTQ2LDEyICs0Niw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+QXVkaW9UcmFjaygp
OwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGFsdGVybmF0aXZlS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkZXNjcmlwdGlvbktleXdvcmQoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbWFpbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgbWFpbkRlc2NLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIHRyYW5zbGF0aW9uS2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBj
b21tZW50YXJ5S2V5d29yZCgpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDEwZjRkMWRhZTBhOTkwMjVi
NWQ0MGYyMzhkZDU1ZWE2YzM2OWQ3MGIuLjkxNThhZTRkMzA0MTg3MGI1YjczODc5Zjg1ODE5Yjgw
MmQ5YzRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTUw
LDE4ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFRleHRUcmFjayk7CiAKLWNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6c3VidGl0
bGVzS2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBzdWJ0aXRsZXMoInN1YnRpdGxlcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gc3VidGl0bGVzOwotfQotCi1zdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNhcHRpb25zKCJjYXB0aW9ucyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0K
IHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkZXNjcmlwdGlvbnNLZXl3b3JkKCkKIHsKICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlc2NyaXB0
aW9ucygiZGVzY3JpcHRpb25zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpA
QCAtMTAzLDcgKzkxLDcgQEAgVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY28KICAgICAsIEFjdGl2ZURP
TU9iamVjdChjb250ZXh0KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsKLSAgICBpZiAoa2lu
ZCA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICBpZiAoa2luZCA9PSBjYXB0aW9uc0F0b20oKSkK
ICAgICAgICAgbV9raW5kID0gS2luZDo6Q2FwdGlvbnM7CiAgICAgZWxzZSBpZiAoa2luZCA9PSBj
aGFwdGVyc0tleXdvcmQoKSkKICAgICAgICAgbV9raW5kID0gS2luZDo6Q2hhcHRlcnM7CkBAIC0x
NjcsOSArMTU1LDkgQEAgYm9vbCBUZXh0VHJhY2s6OmVuYWJsZWQoKSBjb25zdAogCiBib29sIFRl
eHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewot
ICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgaWYgKHZhbHVlID09IHN1
YnRpdGxlc0F0b20oKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHZhbHVlID09IGNh
cHRpb25zS2V5d29yZCgpKQorICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0F0b20oKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uc0tleXdvcmQoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODcsNyArMTc1LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQp
IHsKICAgICBjYXNlIEtpbmQ6OkNhcHRpb25zOgotICAgICAgICByZXR1cm4gY2FwdGlvbnNLZXl3
b3JkKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9uc0F0b20oKTsKICAgICBjYXNlIEtpbmQ6OkNo
YXB0ZXJzOgogICAgICAgICByZXR1cm4gY2hhcHRlcnNLZXl3b3JkKCk7CiAgICAgY2FzZSBLaW5k
OjpEZXNjcmlwdGlvbnM6CkBAIC0xOTcsMTAgKzE4NSwxMCBAQCBjb25zdCBBdG9tU3RyaW5nJiBU
ZXh0VHJhY2s6OmtpbmRLZXl3b3JkKCkgY29uc3QKICAgICBjYXNlIEtpbmQ6Ok1ldGFkYXRhOgog
ICAgICAgICByZXR1cm4gbWV0YWRhdGFLZXl3b3JkKCk7CiAgICAgY2FzZSBLaW5kOjpTdWJ0aXRs
ZXM6Ci0gICAgICAgIHJldHVybiBzdWJ0aXRsZXNLZXl3b3JkKCk7CisgICAgICAgIHJldHVybiBz
dWJ0aXRsZXNBdG9tKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBzdWJ0aXRsZXNLZXl3b3JkKCk7CisgICAgcmV0dXJuIHN1YnRpdGxlc0F0b20oKTsKIH0K
IAogdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoS2luZCBuZXdLaW5kKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmgKaW5kZXggOTQwYzAyNDYyZTg2OTNjYjg4ODlkMDI3YjZjOWE4NmVm
MmU5MGNmNS4uMmI2Mjc0YzI1ZjQ1ZDY5NDIwYzk0MmIxNDJkYTMxMDEzMzM1NjVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0aWMg
VGV4dFRyYWNrJiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIFRleHRUcmFja0xpc3QqIHRl
eHRUcmFja0xpc3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRl
eCBhYmY3NTY5NjRjMzc5ZTg3NzRkYWNlYWI4MTIwZTI4ZmNkMTRhYTdjLi5lMjcyNWM4ZTg0ODA5
YWM2NzAyZTJlNjMzMjIwZGU4NDBjZmI4YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJp
bmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTEzNywxMiArMTM4LDYgQEAgc3RhdGlj
IGNvbnN0IFN0cmluZyYgbGluZVJpZ2h0S2V5d29yZCgpCiAgICAgcmV0dXJuIGxpbmVSaWdodDsK
IH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgYXV0b0tleXdvcmQoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGF1dG9YKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJhdXRvIikpOwotICAgIHJldHVybiBhdXRvWDsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBSZWY8VlRUQ3VlQm94PiBWVFRDdWVCb3g6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFZUVEN1ZSYgY3VlKQpAQCAtNDc3LDcgKzQ3Miw3IEBAIGNvbnN0IFN0cmluZyYg
VlRUQ3VlOjpwb3NpdGlvbkFsaWduKCkgY29uc3QKICAgICBjYXNlIFBvc2l0aW9uQWxpZ25tZW50
TGlnblJpZ2h0OgogICAgICAgICByZXR1cm4gbGluZVJpZ2h0S2V5d29yZCgpOwogICAgIGNhc2Ug
UG9zaXRpb25BbGlnbm1lbnRMaWduQXV0bzoKLSAgICAgICAgcmV0dXJuIGF1dG9LZXl3b3JkKCk7
CisgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTQ5Myw3
ICs0ODgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uQWxpZ24oY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQgPSBQb3NpdGlvbkFs
aWdubWVudExpZ25DZW50ZXI7CiAgICAgZWxzZSBpZiAodmFsdWUgPT0gbGluZVJpZ2h0S2V5d29y
ZCgpKQogICAgICAgICBwb3NpdGlvbkFsaWdubWVudCA9IFBvc2l0aW9uQWxpZ25tZW50TGlnblJp
Z2h0OwotICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9LZXl3b3JkKCkpCisgICAgZWxzZSBpZiAo
dmFsdWUgPT0gYXV0b0F0b20oKSkKICAgICAgICAgcG9zaXRpb25BbGlnbm1lbnQgPSBQb3NpdGlv
bkFsaWdubWVudExpZ25BdXRvOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEz
MjksMTMgKzEzMjQsMTMgQEAgdm9pZCBWVFRDdWU6OnRvSlNPTihKU09OOjpPYmplY3QmIG9iamVj
dCkgY29uc3QKICAgICBvYmplY3Quc2V0U3RyaW5nKCJ2ZXJ0aWNhbCJfcywgdmVydGljYWwoKSk7
CiAgICAgb2JqZWN0LnNldEJvb2xlYW4oInNuYXBUb0xpbmVzIl9zLCBzbmFwVG9MaW5lcygpKTsK
ICAgICBpZiAobV9saW5lUG9zaXRpb24pCi0gICAgICAgIG9iamVjdC5zZXRTdHJpbmcoImxpbmUi
X3MsICJhdXRvIl9zKTsKKyAgICAgICAgb2JqZWN0LnNldFN0cmluZygibGluZSJfcywgYXV0b0F0
b20oKSk7CiAgICAgZWxzZQogICAgICAgICBvYmplY3Quc2V0RG91YmxlKCJsaW5lIl9zLCAqbV9s
aW5lUG9zaXRpb24pOwogICAgIGlmIChtX3RleHRQb3NpdGlvbikKICAgICAgICAgb2JqZWN0LnNl
dERvdWJsZSgicG9zaXRpb24iX3MsICptX3RleHRQb3NpdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBvYmplY3Quc2V0U3RyaW5nKCJwb3NpdGlvbiJfcywgImF1dG8iX3MpOworICAgICAgICBvYmpl
Y3Quc2V0U3RyaW5nKCJwb3NpdGlvbiJfcywgYXV0b0F0b20oKSk7CiAgICAgb2JqZWN0LnNldElu
dGVnZXIoInNpemUiX3MsIG1fY3VlU2l6ZSk7CiAgICAgb2JqZWN0LnNldFN0cmluZygiYWxpZ24i
X3MsIGFsaWduKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
aW5kZXggNzNlOWQwZjE3YWY1NjViN2EyZDFkOTkzYzkyYzczN2Q3OTRmNDRhNy4uMDcxYTc3NDI2
ZGYwNGI1YzRmOTA4MjVjNTUyZTI5OWY2N2I3NWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8p
CiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tD
bGllbnQuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlZpZGVvVHJhY2tMaXN0LmgiCkBAIC00Niw0MiArNDcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQo
KQotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKLX0KLQotY29uc3QgQXRvbVN0cmluZyYg
VmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNhcHRpb25zKCJjYXB0aW9ucyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gY2FwdGlvbnM7Ci19Ci0K
LWNvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkKLXsKLSAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNhcHRpb25zKCJt
YWluIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjYXB0
aW9uczsKLX0KLQogY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKQog
ewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
c2lnbigic2lnbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gc2lnbjsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBzdWJ0aXRsZXMoInN1YnRpdGxlcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICByZXR1cm4gc3VidGl0bGVzOwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBW
aWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjb21tZW50YXJ5KCJjb21tZW50YXJ5Iiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBjb21tZW50YXJ5
OwotfQotCiBWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgOiBNZWRpYVRyYWNr
QmFzZShjb250ZXh0LCBNZWRpYVRyYWNrQmFzZTo6VmlkZW9UcmFjaywgdHJhY2tQcml2YXRlLmlk
KCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKICAgICAs
IG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCkBAIC0xMTgsMTIgKzg5LDEyIEBAIHZvaWQgVmlkZW9U
cmFjazo6c2V0UHJpdmF0ZShWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogCiBib29s
IFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKQotICAgICAgICB8fCB2
YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IGNhcHRpb25z
S2V5d29yZCgpCi0gICAgICAgIHx8IHZhbHVlID09IG1haW5LZXl3b3JkKCkKKyAgICByZXR1cm4g
dmFsdWUgPT0gYWx0ZXJuYXRpdmVBdG9tKCkKKyAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFy
eUF0b20oKQorICAgICAgICB8fCB2YWx1ZSA9PSBjYXB0aW9uc0F0b20oKQorICAgICAgICB8fCB2
YWx1ZSA9PSBtYWluQXRvbSgpCiAgICAgICAgIHx8IHZhbHVlID09IHNpZ25LZXl3b3JkKCkKLSAg
ICAgICAgfHwgdmFsdWUgPT0gc3VidGl0bGVzS2V5d29yZCgpOworICAgICAgICB8fCB2YWx1ZSA9
PSBzdWJ0aXRsZXNBdG9tKCk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQoY29u
c3QgYm9vbCBzZWxlY3RlZCkKQEAgLTI0MSwyMiArMjEyLDIyIEBAIHZvaWQgVmlkZW9UcmFjazo6
dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKIHsKICAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgp
KSB7CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6Ci0gICAgICAgIHNl
dEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5k
KGFsdGVybmF0aXZlQXRvbSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFj
a1ByaXZhdGU6OkNhcHRpb25zOgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25z
S2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChjYXB0aW9uc0F0b20oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgotICAgICAgICBzZXRLaW5k
KFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKG1haW5BdG9tKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKICAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKLSAgICAgICAgc2V0S2lu
ZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKHN1YnRp
dGxlc0F0b20oKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRl
OjpDb21tZW50YXJ5OgotICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3
b3JkKCkpOworICAgICAgICBzZXRLaW5kKGNvbW1lbnRhcnlBdG9tKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToKICAgICAgICAgc2V0S2luZChl
bXB0eVN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKaW5kZXgg
ZTFlMGU5YjAyNThkNTEyNzYyOTcwNmQwZWM0MjJhM2NiZDAzZjY5OS4uMWUyMmJiYjQ1MzcxMmY4
ZTJhOTExYjczODg5OWY0M2IzZGJkNjdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmgKQEAgLTQ5LDEyICs0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
VmlkZW9UcmFjaygpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGFsdGVybmF0aXZl
S2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQo
KTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbWFpbktleXdvcmQoKTsKICAgICBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgc2lnbktleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBjb21tZW50YXJ5S2V5d29yZCgpOwogCiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0ZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggZjhk
ZGJkMzgwNWI0NTgwYThkNzY0NDg5MTIzY2Q5MjFlYzI2MDVmNC4uYzY5NDQwMDM4NmRjYjlmMzc5
M2RiNzg3OGNmYjQxZmNlNDM5NzJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisj
aW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJU09WVFRDdWUuaCIKQEAgLTky
LDcgKzkzLDcgQEAgYm9vbCBXZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWVQ
YWlyKFZUVFNjYW5uZXImIHZhbHVlU2Nhbm5lciwgY2hhcgogCiBXZWJWVFRQYXJzZXI6OldlYlZU
VFBhcnNlcihXZWJWVFRQYXJzZXJDbGllbnQmIGNsaWVudCwgRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIFBBTDo6VVRGOEVuY29kaW5nKCkpKQorICAg
ICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSh0ZXh0UGxhaW5Db250ZW50
VHlwZUF0b20oKSwgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCiAgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCmluZGV4IGFlMDI5YmZiYmU5MzM4MjhiZGIwYzllYWI1OTkyZTAwNDk0
OTg1NjkuLjI0NDBlM2FiNzFhNjliMmMwYzgyMjkyNzE1M2Q5ODI3M2QyYzU0YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
QEAgLTc4Miw3ICs3ODMsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Y3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvYwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gc3R5bGVFbGVtZW50ID0gSFRNTFN0eWxlRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgQXRvbVN0cmluZygidGV4dC9jc3Mi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0eWxlRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnR5cGVBdHRyLCBj
c3NDb250ZW50VHlwZUF0b20oKSk7CiAKICAgICBDb250YWluZXJOb2RlKiB0YXJnZXROb2RlOwog
ICAgIC8vIEhFQUQgaXMgYWJzZW50IGluIEltYWdlRG9jdW1lbnRzLCBmb3IgZXhhbXBsZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDJjMDEyZmRlNWQ3Nzhi
MDY3YjVhNWE3ODg2ZDlmY2ZkM2NmMWU5MzAuLjlmYjAwNTI3YzkzNjU0MTk5Yzg3OTc5YTIyOTgz
ZjFhY2YxYTBjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvcm1TdWJt
aXNzaW9uLmgiCiAKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRJbmxpbmVzLmgiCkBAIC0xMDMsNyArMTA0LDcgQEAgU3RyaW5nIEZvcm1TdWJt
aXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJtdWx0aXBhcnQv
Zm9ybS1kYXRhIikpCiAgICAgICAgIHJldHVybiAibXVsdGlwYXJ0L2Zvcm0tZGF0YSJfczsKICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRleHQvcGxhaW4iKSkK
LSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOworICAgICAgICByZXR1cm4gdGV4dFBsYWlu
Q29udGVudFR5cGVBdG9tKCk7CiAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy
bGVuY29kZWQiX3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcAppbmRleCBmMDQzY2Q1OTcwNTQxOTc3NjM4YjZkZjQyMmZhMGZkMzk3ZWI3ZTFh
Li4yZDFhZGYzZjdlMDlmMDMzMDJiNjFkZmVmZDZiNzk5NmEwMmE5ZTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRl
ICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
TG9hZGVyLmgiCkBAIC0zNzcsNyArMzc4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvciB7IHVzZXJHZXN0dXJlVG9Gb3J3YXJk
KCkgfTsKIAotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2VtZW50UmVzcG9uc2UgeyBt
X29yaWdpbkRvY3VtZW50LnVybCgpLCAidGV4dC9wbGFpbiJfcywgMCwgIlVURi04Il9zIH07Cisg
ICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVwbGFjZW1lbnRSZXNwb25zZSB7IG1fb3JpZ2luRG9j
dW1lbnQudXJsKCksIHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpLCAwLCAiVVRGLTgiX3MgfTsK
ICAgICAgICAgU3Vic3RpdHV0ZURhdGEgcmVwbGFjZW1lbnREYXRhIHsgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSwgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgcmVwbGFjZW1lbnRSZXNwb25zZSwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1lbnQudXJs
KCksIGVtcHR5U3RyaW5nKCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWxvYWRJZ25v
cmluZ0NhY2hlRGF0YSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGNkZTdhZTRjYzEwZWVmNWE2YjM4NDgyNzEwNTdi
MzcwOGY1YjU3MzUuLmY1OWVjZmM2YzA5NmQ0NDAyMGVjZDMyNjJkY2EyZDI1NDIwZmFlMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoTUhUTUwpCiAjaW5jbHVkZSAiTUhU
TUxQYXJzZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
TUhUTUxBcmNoaXZlLmgiCiAjaW5jbHVkZSAiTUlNRUhlYWRlci5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKQEAgLTExOSw3ICsxMjAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBN
SFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiB2
b2lkIE1IVE1MUGFyc2VyOjphZGRSZXNvdXJjZVRvQXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqIHJl
c291cmNlLCBNSFRNTEFyY2hpdmUqIGFyY2hpdmUpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwotICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkgfHwgbWltZVR5cGUgPT0g
InRleHQvY3NzIikgeworICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEph
dmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkgfHwgbWltZVR5cGUgPT0gY3NzQ29udGVudFR5cGVB
dG9tKCkpIHsKICAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxNGNjZDJhM2I5ZjMxN2U1ZTI0YjZlZDdkNmUxNWM1
ZWNhNjllZDI5Li5mNTJhOTJkMDNlNTMyOGM2ZDk3YzUxYzBjNTEzNzhiZjYyYWRjOGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC00MCw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENv
b2tpZUphciogY29va2llSmFyKQogICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0
KSwgVHlwZTo6Q1NTU3R5bGVTaGVldCwgc2Vzc2lvbklELCBjb29raWVKYXIpCi0gICAgLCBtX2Rl
Y29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcywgcmVxdWVzdC5j
aGFyc2V0KCkpKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShj
c3NDb250ZW50VHlwZUF0b20oKSwgcmVxdWVzdC5jaGFyc2V0KCkpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKaW5k
ZXggYzE0NDMwMmYwM2JkOTU1NjljNmMyMDQ3NDNhZWRiOGJhZWFhZTMyOC4uYmI4YWUwNjNkMDdm
NWU4NTFiZDJlZTk3NWQxZDJlNjZkYWNjYTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaWYgRU5BQkxFKE1BVEhNTCkKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAj
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggMTI1M2I1ODAwNWI1
MmZiYTI0MTA4Mjg2MTI3YzRkMTMyZjBkMDQ1Yy4uOTQwM2U2NTJjOGIyOGM3NjFkNDg2MDIyZDcz
ZDI0ZmM0OTRjMmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCisjaW5j
bHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgpAQCAtNzMwLDcgKzczMSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmRE
aXNwbGF5TmFtZUlmTmVlZGVkKGNvbnN0IEF1ZGlvVHJhY2smIHRyYWNrLCBjb25zCiAgICAgaWYg
KCh0cmFjay5raW5kKCkgPT0gQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkgfHwgdHJh
Y2sua2luZCgpID09IEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKSAmJiAhdGV4dC5jb250
YWlucyhhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCkpKQogICAgICAgICBy
ZXR1cm4gYWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgodGV4dCk7CiAKLSAgICBp
ZiAodHJhY2sua2luZCgpID09IEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkgJiYgIXRl
eHQuY29udGFpbnMoYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKSkpCisgICAg
aWYgKHRyYWNrLmtpbmQoKSA9PSBjb21tZW50YXJ5QXRvbSgpICYmICF0ZXh0LmNvbnRhaW5zKGF1
ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURpc3BsYXlOYW1lKCkpKQogICAgICAgICByZXR1cm4gYWRk
QXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4KHRleHQpOwogCiAgICAgcmV0dXJuIHRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCA5MzU4Yjg0NjRiYjU5MzkxMDVhNjg5ODQ3NmZmNjkxYWVm
M2MzNzgwLi5iY2NkZTU4MTUxMGNhMmZiMWY2YzdmZDBkOGQ2NDQ2MDg1N2M3ZTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ29uc3RhbnRQcm9wZXJ0
eU1hcC5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGV4
dE1lbnVDb250cm9sbGVyLmgiCkBAIC0yMDY2LDcgKzIwNjcsNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBtX3VzZXJTdHlsZVNoZWV0OwogCi0gICAgbV91c2VyU3R5bGVTaGVldCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiX3MpLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgbV91c2VyU3R5bGVTaGVldCA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZShjc3NDb250ZW50VHlwZUF0b20oKSktPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA3ZjllMWI3YTI3MGQy
YjVkYjYxZmU5OGQ3YjEwNTAwYTdlNmNlZTE2Li41MDg5NGUwZDI5MGNkM2NlNWYyMThiYzZmMDgw
YmRmODg1OGI4NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJDU1NT
dHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNvbW1vbkF0
b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRWxl
bWVudElubGluZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjYwLDcgKzI2MSw3IEBAIHZv
aWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCog
c3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sg
d2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3Vu
ZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVT
aGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5n
LmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3Nz
Il9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9T
dHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAg
ICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGNzc0NvbnRlbnRUeXBlQXRvbSgpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFM
OjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNl
VVJMcy5hZGQodXJsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAK
aW5kZXggNDM3MTI4MDQxOWMyZWFhYjg5ODgyZjE0YTM0Y2E5MjU3OTI1ZmM5OC4uN2RiM2I5YmI2
MWZiZmY2YjkzMWNiYjU5N2U1OGVhYTViZWM0ZTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlByaW50Q29udGV4dC5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTM2Miw3ICszNjMsNyBAQCBTdHJpbmcgUHJpbnRDb250
ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUs
IGludCBwYQogICAgIC8vIEltcGxlbWVudCBmb3JtYXR0ZXJzIGZvciBwcm9wZXJ0aWVzIHdlIGNh
cmUgYWJvdXQuCiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibWFyZ2luLWxlZnQiKSkg
ewogICAgICAgICBpZiAoc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKLSAgICAgICAgICAg
IHJldHVybiAiYXV0byJfczsKKyAgICAgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwogICAgICAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPm1hcmdpbkxlZnQoKS52YWx1ZSgpKTsKICAg
ICB9CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibGluZS1oZWlnaHQiKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXggZGZhM2U4MmE2Mjg0YmJkYTEwNDIz
ODYyZTY1ZTJiOGJkMGZmZWNkMi4uZjJiMzFmZWQzZDg0NGU5OGZhYmJmNDYwYzNjMTgwMjE2YjZj
YTNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9jZXNzV2FybWluZy5oIgog
CisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgog
I2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKQEAgLTUwLDcgKzUxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFByb2Nlc3NXYXJtaW5nOjppbml0aWFsaXpl
TmFtZXMoKQogewotICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBpbml0aWFsaXplQ29tbW9u
QXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBRdWFsaWZpZWROYW1l
Ojppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbW1vbkF0b21TdHJpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTRhYzc3MTNh
M2U4M2U2NjMzNDdkYmRiZThlZTEwZjJlMGUwYzM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuY3BwCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIERFRklORV9DT01NT05f
QVRPTShhdG9tTmFtZSwgYXRvbVZhbHVlKSBcCisgICAgTWFpblRocmVhZExhenlOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBhdG9tTmFtZSAjIyBBdG9tRGF0YTsKKyNkZWZpbmUgSU5J
VElBTElaRV9DT01NT05fQVRPTShhdG9tTmFtZSwgYXRvbVZhbHVlKSBcCisgICAgYXRvbU5hbWUg
IyMgQXRvbURhdGEuY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKGF0b21WYWx1ZSwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCitXRUJDT1JFX0NPTU1PTl9BVE9NX1NUUklO
R1NfRk9SX0VBQ0hfS0VZV09SRChERUZJTkVfQ09NTU9OX0FUT00pCisKK3ZvaWQgaW5pdGlhbGl6
ZUNvbW1vbkF0b21TdHJpbmdzKCkKK3sKKyAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhy
ZWFkIHNhZmUsIHNvIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQgZmlyc3QuCisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXpl
S2V5LCBbXSB7CisgICAgICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKworICAgICAgICBXRUJDT1JF
X0NPTU1PTl9BVE9NX1NUUklOR1NfRk9SX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0NPTU1PTl9B
VE9NKQorICAgIH0pOworfQorCisjdW5kZWYgREVGSU5FX0NPTU1PTl9BVE9NCisjdW5kZWYgSU5J
VElBTElaRV9DT01NT05fQVRPTQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db21tb25BdG9tU3RyaW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWRlY2RmNGRi
YTY5ODVmZGM1ZjdlZGZhZTljMGI2ZWVlMDIyNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29tbW9uQXRvbVN0cmluZ3MuaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworI2RlZmluZSBXRUJDT1JFX0NPTU1PTl9BVE9NX1NUUklOR1NfRk9SX0VBQ0hfS0VZV09S
RChtYWNybykgXAorICAgIG1hY3JvKGFsdGVybmF0aXZlLCAiYWx0ZXJuYXRpdmUiKSBcCisgICAg
bWFjcm8oYXV0bywgImF1dG8iKSBcCisgICAgbWFjcm8oY2FwdGlvbnMsICJjYXB0aW9ucyIpIFwK
KyAgICBtYWNybyhjb21tZW50YXJ5LCAiY29tbWVudGFyeSIpIFwKKyAgICBtYWNybyhjc3NDb250
ZW50VHlwZSwgInRleHQvY3NzIikgXAorICAgIG1hY3JvKGVhZ2VyLCAiZWFnZXIiKSBcCisgICAg
bWFjcm8oZW1haWwsICJlbWFpbCIpIFwKKyAgICBtYWNybyhmYWxzZSwgImZhbHNlIikgXAorICAg
IG1hY3JvKGxhenksICJsYXp5IikgXAorICAgIG1hY3JvKG1haW4sICJtYWluIikgXAorICAgIG1h
Y3JvKG5vbmUsICJub25lIikgXAorICAgIG1hY3JvKG9mZiwgIm9mZiIpIFwKKyAgICBtYWNybyhv
biwgIm9uIikgXAorICAgIG1hY3JvKHBsYWludGV4dE9ubHksICJwbGFpbnRleHQtb25seSIpIFwK
KyAgICBtYWNybyhyZXNldCwgInJlc2V0IikgXAorICAgIG1hY3JvKHNlYXJjaCwgInNlYXJjaCIp
IFwKKyAgICBtYWNybyhzdWJtaXQsICJzdWJtaXQiKSBcCisgICAgbWFjcm8oc3VidGl0bGVzLCAi
c3VidGl0bGVzIikgXAorICAgIG1hY3JvKHRlbCwgInRlbCIpIFwKKyAgICBtYWNybyh0ZXh0LCAi
dGV4dCIpIFwKKyAgICBtYWNybyh0ZXh0UGxhaW5Db250ZW50VHlwZSwgInRleHQvcGxhaW4iKSBc
CisgICAgbWFjcm8odHJ1ZSwgInRydWUiKSBcCisgICAgbWFjcm8odXJsLCAidXJsIikKKworCisj
ZGVmaW5lIERFQ0xBUkVfQ09NTU9OX0FUT00oYXRvbU5hbWUsIGF0b21WYWx1ZSkgXAorICAgIGV4
dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGF0b21O
YW1lICMjIEF0b21EYXRhOyBcCisgICAgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGF0b21OYW1l
ICMjIEF0b20oKSB7IHJldHVybiBhdG9tTmFtZSAjIyBBdG9tRGF0YS5nZXQoKTsgfQorCitXRUJD
T1JFX0NPTU1PTl9BVE9NX1NUUklOR1NfRk9SX0VBQ0hfS0VZV09SRChERUNMQVJFX0NPTU1PTl9B
VE9NKQorCisjdW5kZWYgREVDTEFSRV9DT01NT05fQVRPTQorCitXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IGJhMTc4NzI0NzFhZTI4
NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5NTguLjQ1Y2NiNmIzOTY4ODJlMGVlYTI2YzExYmRmYjc2
ZTFmYTJkYzVlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5o
IgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgpAQCAtNDQsNyArNDUsNyBAQCBQYXN0ZWJvYXJkQnVmZmVyOjp+UGFzdGVib2Fy
ZEJ1ZmZlcigpID0gZGVmYXVsdDsKIAogYm9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09
ICJ0ZXh0L3BsYWluIiB8fCB0eXBlID09ICJ0ZXh0L2h0bWwiIHx8IHR5cGUgPT0gInRleHQvdXJp
LWxpc3QiOworICAgIHJldHVybiB0eXBlID09IHRleHRQbGFpbkNvbnRlbnRUeXBlQXRvbSgpIHx8
IHR5cGUgPT0gInRleHQvaHRtbCIgfHwgdHlwZSA9PSAidGV4dC91cmktbGlzdCI7CiB9CiAKIGJv
b2wgUGFzdGVib2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmls
ZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5
MWM3Yjc4OTQuLjVlYzJkOTA3MWIyZGQyZGVkZDYxYjQ4ZDQ4OWQ3MGZkYTdlY2UwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5o
IgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgU3Rh
dGljUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKIHZvaWQg
U3RhdGljUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFy
dFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3Bs
YWluIl9zLCB0ZXh0KTsKKyAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodGV4dFBsYWluQ29u
dGVudFR5cGVBdG9tKCksIHRleHQpOwogfQogCiB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKaW5kZXggYzcxMjAxNjEwOTU4N2FkNWRjNGM5ZTFjOWEz
NjFkYmU4ZjY5MzMyYS4uOTRmNDFmNzRmM2U2N2ZhM2YwZGNlOWE2YTdlOTBlYWFlMmE0MDhiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRp
b24uaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0x
MjksNyArMTMwLDcgQEAgYm9vbCBBbmltYXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmlt
YXRpb24mIG90aGVyLCBib29sIG1hdGNoUHJvcGVydGllcykgY28KIAogYXV0byBBbmltYXRpb246
OmluaXRpYWxOYW1lKCkgLT4gY29uc3QgTmFtZSYKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TmFtZT4gaW5pdGlhbFZhbHVlIHsgTmFtZSB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJu
b25lIiksIHRydWUgfSB9OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOYW1lPiBpbml0aWFs
VmFsdWUgeyBOYW1lIHsgbm9uZUF0b20oKSwgdHJ1ZSB9IH07CiAgICAgcmV0dXJuIGluaXRpYWxW
YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IGMwOGUxZmYxMWU3YjcxNWI3YjlmMDhmZmJkYTc1M2Q5MmY5Mjk4OTku
LjhhMDZhYzZiZDI4NTk3MTk1OGUyZGY0MjEzMzY1NDhhYWM0MGI5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdz
LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJGb3VyQ0MuaCIKQEAgLTMzMSwxMiArMzMyLDYgQEAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogICAgIHJldHVy
biBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
dGV4dFBsYWluKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRleHRQbGFpbigidGV4dC9wbGFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gdGV4dFBsYWluOwotfQotCiBjb25zdCBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwpAQCAtNDg1LDcgKzQ4MCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyCiAKICAgICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcg
b3IgaXMgbm90IG1lYW5pbmdmdWwsIHRyeSB0byBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4K
ICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5
cGUoKTsKLSAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9
PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4o
KSkgeworICAgIGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09
IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbkNv
bnRlbnRUeXBlQXRvbSgpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQog
ICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFV
UkwobV91cmwuc3RyaW5nKCkpKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggZWIyOWYyNThmZDE4M2U0
MDIwNTk1ZWY2YWQ4NzExNDcwYzQ3MTk0Zi4uYmVjYTEyODJhMWFhZTBiM2NlOTY4MjYyNDcxMzBh
ODJhNjYxZTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAorI2ltcG9ydCAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgi
CiAjaW1wb3J0ICJGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaCIKQEAgLTY5MSw3ICs2OTIsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdl
YlRocmVhZCgpCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCiAgICAgLy8gSW5p
dGlhbGl6ZSBBdG9tU3RyaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICBXVEY6OkF0b21TdHJp
bmc6OmluaXQoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsK
IAogICAgIC8vIEluaXRpYWxpemUgVGhyZWFkR2xvYmFsRGF0YSBvbiB0aGUgbWFpbiBVSSB0aHJl
YWQgc28gdGhhdCB0aGUgV2ViQ29yZSB0aHJlYWQKICAgICAvLyBjYW4gbGF0ZXIgc2V0IGl0J3Mg
dGhyZWFkLXNwZWNpZmljIGRhdGEgdG8gcG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0cy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNjY3
MDhlYzAwMTRlMGUwMjcyOTg1ODBjODdkMDc5Yzg2YjdkMzg1Yi4uMjJkYWJlYjQyYTA0OGJmNmQ0
ZWM4ZDkzNTUyZTU0Y2FiZDM1MGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyRmllbGQuaCIKICNpbmNsdWRlICJIVFRQSGVh
ZGVyTmFtZXMuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlYWJsZS5jcHAKaW5kZXggYzg0ZDQ5MGMzMmQ4Y2NjN2I3NGY0NDdiZmIwOTc2NTAyN2Jh
NzdkOC4uYzQ0NDEyYWQ5NGE1OTlhYzYwMzFmMWJiZmNjMzg2YTIwZTYzNGE3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZWFibGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ1NTQW5p
bWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlBbmltYXRpb24uaCIKICNpbmNsdWRlICJD
U1NUcmFuc2l0aW9uLmgiCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRl
ICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRUaW1lbGluZS5oIgpAQCAtMjU3LDcgKzI1OCw3IEBAIGJvb2wgU3R5bGVhYmxl
OjphbmltYXRpb25MaXN0Q29udGFpbnNOZXdseVZhbGlkQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlv
bkxpc3QmIGFuCiAKICAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IGFuaW1hdGlvbnMpIHsKICAg
ICAgICAgYXV0byYgbmFtZSA9IGFuaW1hdGlvbi0+bmFtZSgpLnN0cmluZzsKLSAgICAgICAgaWYg
KG5hbWUgIT0gIm5vbmUiICYmICFuYW1lLmlzRW1wdHkoKSAmJiBrZXlmcmFtZUVmZmVjdFN0YWNr
LmNvbnRhaW5zSW52YWxpZENTU0FuaW1hdGlvbk5hbWUobmFtZSkgJiYga2V5ZnJhbWVzUnVsZUV4
aXN0c0ZvckFuaW1hdGlvbihlbGVtZW50LCBhbmltYXRpb24uZ2V0KCksIG5hbWUpKQorICAgICAg
ICBpZiAobmFtZSAhPSBub25lQXRvbSgpICYmICFuYW1lLmlzRW1wdHkoKSAmJiBrZXlmcmFtZUVm
ZmVjdFN0YWNrLmNvbnRhaW5zSW52YWxpZENTU0FuaW1hdGlvbk5hbWUobmFtZSkgJiYga2V5ZnJh
bWVzUnVsZUV4aXN0c0ZvckFuaW1hdGlvbihlbGVtZW50LCBhbmltYXRpb24uZ2V0KCksIG5hbWUp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zMDIsNyArMzAzLDcgQEAg
dm9pZCBTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgYXV0byYgYW5pbWF0aW9uTmFtZSA9IGN1cnJlbnRBbmltYXRpb24tPm5hbWUoKS5z
dHJpbmc7Ci0gICAgICAgICAgICBpZiAoYW5pbWF0aW9uTmFtZSA9PSAibm9uZSIgfHwgYW5pbWF0
aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoYW5pbWF0aW9uTmFtZSA9PSBub25l
QXRvbSgpIHx8IGFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBpZiAoIWtleWZyYW1lc1J1bGVFeGlzdHNGb3JBbmltYXRpb24o
ZWxlbWVudCwgY3VycmVudEFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9uTmFtZSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDRiNmM1
MzBiZTlkY2QwZWY0ZTUyMGE4ZjEwZjJiYzQ2YTEzNWZkYWIuLmE2NWVjMWM4ZTgxM2U0NjJhZjlj
ZTQxNDExZTkyMjgwMGNhMDBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKQEAgLTExMCwxMCArMTExLDkgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXQKICAgICAKIFNW
R0FuaW1hdGVNb3Rpb25FbGVtZW50OjpSb3RhdGVNb2RlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
Ojpyb3RhdGVNb2RlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGF1dG9WYWwoImF1dG8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBhdXRvUmV2ZXJzZSgiYXV0by1yZXZlcnNlIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvdGF0ZSA9IGdldEF0
dHJpYnV0ZShTVkdOYW1lczo6cm90YXRlQXR0cik7Ci0gICAgaWYgKHJvdGF0ZSA9PSBhdXRvVmFs
KQorICAgIGF1dG8mIHJvdGF0ZSA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6cm90YXRlQXR0cik7
CisgICAgaWYgKHJvdGF0ZSA9PSBhdXRvQXRvbSgpKQogICAgICAgICByZXR1cm4gUm90YXRlQXV0
bzsKICAgICBpZiAocm90YXRlID09IGF1dG9SZXZlcnNlKQogICAgICAgICByZXR1cm4gUm90YXRl
QXV0b1JldmVyc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAK
aW5kZXggNTMyMTQ5N2FkMTBiNzAzZjM5MTJiY2IwZmY2ZDE2MGUyMDQ2MTg0ZS4uZTc3YTE1NzMz
MzRkNDMzYjRkY2FmYTYwMTgwN2YzMTNkNmNlNjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAtMzE5LDE4ICszMTksMjIgQEAgU3RyaW5nIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OmZyb21WYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmZyb21BdHRyKTsKIH0KIAotYm9vbCBTVkdB
bmltYXRpb25FbGVtZW50Ojppc0FkZGl0aXZlKCkgY29uc3QKK3N0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBzdW1BdG9tKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHN1bSgic3VtIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBzdW07Cit9CisKK2Jvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNB
ZGRpdGl2ZSgpIGNvbnN0Cit7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjphZGRpdGl2ZUF0dHIpOwotICAgIHJl
dHVybiB2YWx1ZSA9PSBzdW0gfHwgYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OkJ5
OworICAgIHJldHVybiB2YWx1ZSA9PSBzdW1BdG9tKCkgfHwgYW5pbWF0aW9uTW9kZSgpID09IEFu
aW1hdGlvbk1vZGU6OkJ5OwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWNjdW11
bGF0ZWQoKSBjb25zdAogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gc3VtKCJzdW0iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFNWR05hbWVzOjphY2N1bXVsYXRlQXR0cik7Ci0gICAgcmV0dXJuIHZhbHVlID09
IHN1bSAmJiBhbmltYXRpb25Nb2RlKCkgIT0gQW5pbWF0aW9uTW9kZTo6VG87CisgICAgcmV0dXJu
IHZhbHVlID09IHN1bUF0b20oKSAmJiBhbmltYXRpb25Nb2RlKCkgIT0gQW5pbWF0aW9uTW9kZTo6
VG87CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQ
cm9wZXJ0eShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAKaW5kZXggZjNhZDE1NzAxMTZjZTJhMDdlNTE0MTAxMTBiNmRiYWQyMjg3
OTc4My4uN2MxNjY0M2VlOWQ2OTdkMTBkNGQ2Mzc4MWYxY2UzOGY1MmQ2ZWU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0y
MSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5j
bHVkZSAiRkVDb252b2x2ZU1hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5oCmluZGV4IDlhZDFlNGMzOGFlNTdkYmQ4ZWYzZjJjZDRmYjZl
NjlkZDlkMjQyYmIuLjg5OTJlYzk5MzY4ZGUzYmFjZDU3ODg2ZjM4ZDBiZjNlODFiNGM5NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCkBA
IC0yMCw2ICsyMCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0
cmluZ3MuaCIKICNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKQEAgLTQwLDcgKzQxLDcgQEAgc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlwZT4gewogICAgICAgICBjYXNlIEVkZ2VN
b2RlVHlwZTo6V3JhcDoKICAgICAgICAgICAgIHJldHVybiAid3JhcCJfczsKICAgICAgICAgY2Fz
ZSBFZGdlTW9kZVR5cGU6Ok5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAg
ICAgICAgICByZXR1cm4gbm9uZUF0b20oKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNTMsNyArNTQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
RWRnZU1vZGVUeXBlPiB7CiAgICAgICAgICAgICByZXR1cm4gRWRnZU1vZGVUeXBlOjpEdXBsaWNh
dGU7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAid3JhcCIpCiAgICAgICAgICAgICByZXR1cm4gRWRn
ZU1vZGVUeXBlOjpXcmFwOwotICAgICAgICBpZiAodmFsdWUgPT0gIm5vbmUiKQorICAgICAgICBp
ZiAodmFsdWUgPT0gbm9uZUF0b20oKSkKICAgICAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5cGU6
Ok5vbmU7CiAgICAgICAgIHJldHVybiBFZGdlTW9kZVR5cGU6OlVua25vd247CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlclR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaAppbmRleCAwNjcwMzQxNWU4OTk1ZDhlYjQ1OTgwMzBi
N2IzMGZjMTQ5Yjk4ZDAwLi5hZjk2M2MyOGQwNmQ1OWZjNDc3NzgyMGMwNWQzNTM0NmIzN2RkMWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyVHlwZXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
U1ZHQW5nbGVWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAKQEAgLTc1
LDExICs3Niw2IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJVbml0c1R5cGU+
IHsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVu
dFR5cGU+IHsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGF1dG9TdHJpbmcoKQotICAgIHsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYXV0b1N0cmluZyA9IE1B
S0VfU1RBVElDX1NUUklOR19JTVBMKCJhdXRvIik7Ci0gICAgICAgIHJldHVybiBhdXRvU3RyaW5n
OwotICAgIH0KICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGF1dG9TdGFydFJldmVyc2VTdHJpbmco
KQogICAgIHsKICAgICAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYXV0
b1N0YXJ0UmV2ZXJzZVN0cmluZyA9IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJhdXRvLXN0YXJ0
LXJldmVyc2UiKTsKQEAgLTg4LDcgKzg0LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R01hcmtlck9yaWVudFR5cGU+IHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGlnaGVzdEVudW1WYWx1
ZSgpIHsgcmV0dXJuIFNWR01hcmtlck9yaWVudEFuZ2xlOyB9CiAgICAgc3RhdGljIFNWR01hcmtl
ck9yaWVudFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAg
ICAgIGlmIChzdHJpbmcgPT0gYXV0b1N0cmluZygpKQorICAgICAgICBpZiAoc3RyaW5nID09IGF1
dG9BdG9tKCkpCiAgICAgICAgICAgICByZXR1cm4gU1ZHTWFya2VyT3JpZW50QXV0bzsKICAgICAg
ICAgaWYgKHN0cmluZyA9PSBhdXRvU3RhcnRSZXZlcnNlU3RyaW5nKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gU1ZHTWFya2VyT3JpZW50QXV0b1N0YXJ0UmV2ZXJzZTsKQEAgLTk3LDcgKzkzLDcgQEAg
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+IHsKICAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKFNWR01hcmtlck9yaWVudFR5cGUgdHlwZSkKICAgICB7CiAgICAg
ICAgIGlmICh0eXBlID09IFNWR01hcmtlck9yaWVudEF1dG8pCi0gICAgICAgICAgICByZXR1cm4g
YXV0b1N0cmluZygpOworICAgICAgICAgICAgcmV0dXJuIGF1dG9BdG9tKCk7CiAgICAgICAgIGlm
ICh0eXBlID09IFNWR01hcmtlck9yaWVudEF1dG9TdGFydFJldmVyc2UpCiAgICAgICAgICAgICBy
ZXR1cm4gYXV0b1N0YXJ0UmV2ZXJzZVN0cmluZygpOwogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggMDhjZjRiMDNj
MjUxNWI2MjA4MDAwNTcyNWYwMjI5MjNiNGQ2YjdhYi4uNmEwMzFiMGJjNGIyNGE1ZGI3NDgzOGU3
YWYwMDVkOTUxMDZjNDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAK
QEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkNTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudElubGluZXMuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgpAQCAtNjUsOSArNjYsOCBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6
c2V0RGlzYWJsZWQoYm9vbCBzZXREaXNhYmxlZCkKIAogY29uc3QgQXRvbVN0cmluZyYgU1ZHU3R5
bGVFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGRlZmF1bHRWYWx1ZSgidGV4dC9jc3MiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgbiA9IGdl
dEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOwotICAgIHJldHVybiBuLmlzTnVsbCgpID8g
ZGVmYXVsdFZhbHVlLmdldCgpIDogbjsKKyAgICBhdXRvJiB0eXBlVmFsdWUgPSBnZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6OnR5cGVBdHRyKTsKKyAgICByZXR1cm4gdHlwZVZhbHVlLmlzTnVsbCgpID8g
Y3NzQ29udGVudFR5cGVBdG9tKCkgOiB0eXBlVmFsdWU7CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVt
ZW50OjpzZXRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmgKaW5kZXggNmEyMjQ4YzdmODVhNjA0NDRkNjdkYjdhOTFhN2Q4ZWI5
YmNjMWYwMC4uNWRjZWRlMzEzMzNlMDI4M2MyY2Y2MDAwMjk5OGU1YzFiYzM1NzMwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaApAQCAtMjAsNiArMjAsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbW1vbkF0b21TdHJpbmdzLmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdUZXh0Q29udGVudEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdVUklSZWZlcmVuY2UuaCIKQEAgLTc3LDcgKzc4LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5
VHJhaXRzPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+IHsKICAgICAgICAgY2FzZSBTVkdUZXh0UGF0
aFNwYWNpbmdVbmtub3duOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgIGNhc2UgU1ZHVGV4dFBhdGhTcGFjaW5nQXV0bzoKLSAgICAgICAgICAgIHJldHVybiAiYXV0
byJfczsKKyAgICAgICAgICAgIHJldHVybiBhdXRvQXRvbSgpOwogICAgICAgICBjYXNlIFNWR1Rl
eHRQYXRoU3BhY2luZ0V4YWN0OgogICAgICAgICAgICAgcmV0dXJuICJleGFjdCJfczsKICAgICAg
ICAgfQpAQCAtODgsNyArODksNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBh
dGhTcGFjaW5nVHlwZT4gewogCiAgICAgc3RhdGljIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlID09
ICJhdXRvIikKKyAgICAgICAgaWYgKHZhbHVlID09IGF1dG9BdG9tKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gU1ZHVGV4dFBhdGhTcGFjaW5nQXV0bzsKICAgICAgICAgaWYgKHZhbHVlID09ICJleGFj
dCIpCiAgICAgICAgICAgICByZXR1cm4gU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDE2ZWFi
NjUyMGU4OGJjY2MzNTM3NDBiNzc3MTdhZDZlMTk3ZDM2MjUuLjRjYzVkZDcyM2I4YmE5MThjMWU1
Njk1ZjI4NjdjY2ZjN2U5ZWM2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCBzdGF0aWMgU01JTEV2ZW50
U2VuZGVyJiBzbWlsRW5kRXZlbnRTZW5kZXIoKQogICAgIHJldHVybiBzZW5kZXI7CiB9CiAKK3N0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbmRlZmluaXRlQXRvbSgpCit7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUo
ImluZGVmaW5pdGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIGluZGVmaW5pdGVWYWx1ZTsKK30KKwogLy8gVGhpcyBpcyB1c2VkIGZvciBkdXJhdGlvbiB0
eXBlIHRpbWUgdmFsdWVzIHRoYXQgY2FuJ3QgYmUgbmVnYXRpdmUuCiBzdGF0aWMgY29uc3QgZG91
YmxlIGludmFsaWRDYWNoZWRUaW1lID0gLTEuOwogICAgIApAQCAtMzM4LDkgKzM0NCw3IEBAIFNN
SUxUaW1lIFNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUoU3RyaW5nVmlldyBkYXRhKQog
ICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAogICAgIGF1dG8gcGFyc2Ug
PSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgpOwotCi0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUoImluZGVmaW5pdGUiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaWYgKHBhcnNlID09IGluZGVm
aW5pdGVWYWx1ZS5nZXQoKSkKKyAgICBpZiAocGFyc2UgPT0gaW5kZWZpbml0ZUF0b20oKSkKICAg
ICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAKICAgICBkb3VibGUgcmVzdWx0
ID0gMDsKQEAgLTY5OCw4ICs3MDIsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cmVwZWF0
Q291bnQoKSBjb25zdAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFNN
SUxUaW1lOjp1bnJlc29sdmVkKCk7CiAKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAodmFsdWUgPT0gaW5kZWZpbml0
ZVZhbHVlKQorICAgIGlmICh2YWx1ZSA9PSBpbmRlZmluaXRlQXRvbSgpKQogICAgICAgICByZXR1
cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKICAgICBib29sIG9rOwogICAgIGRvdWJsZSByZXN1
bHQgPSB2YWx1ZS5zdHJpbmcoKS50b0RvdWJsZSgmb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKaW5kZXggZTc3NjVhY2NlODQ4MzMx
NWQzYjc0NDJjODAwOWQ5M2JkOTI3MjQwYi4uNjBhNjk5MGIyZGQ1MDhhNzk3NWNlYzEzNjFlNmE5
ZDdkYjAxZjIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlUcmFpdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRyYWl0cy5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRpb24uaCIKKyNp
bmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGExNmRmYzRhMjJkYjAyMzU2MjBhN2I5ZjdlOWM3OGQx
OTdiYjkwNzYuLmY4YzBiYjg0OWI5MTFiMWI4NDY0ZGZhZWUwN2VkOTliMGRjODA2YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKQEAgLTExMyw3ICsxMTQsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2
aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLAog
ICAgICwgbV9ub3RpZmljYXRpb25DbGllbnQoV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXRvbVN0cmluZzo6aW5pdCgpOwor
ICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjp+U2VydmljZVdvcmtlclRocmVhZCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZh
bHVlLmNwcAppbmRleCBkMjI5NTRiYmEzZjFjZTBiOGExZGU5NmJhNjAyMTY5M2Y0ODEzMzkxLi5j
MzA1YmMwYjVlMjc4NDc1YWJiYzI0NzZiOGIyMjJjZjQ5ZWJkYzFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiWFBhdGhWYWx1ZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNp
bmNsdWRlICJYUGF0aEV4cHJlc3Npb25Ob2RlLmgiCiAjaW5jbHVkZSAiWFBhdGhVdGlsLmgiCiAj
aW5jbHVkZSA8bGltaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmlu
ZGV4IDE2NThmYzAwMGQxZjc4MDc1Mjk2ZTg4MzA2NTE5NDFmNjI2YzIwYzYuLmY5MThhOTk1N2Iy
NTg2ZDhkNjAxY2NmMzM2ODg1MmFkNzE1MDQ2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5n
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVt
b3J5UmVsZWFzZS5oPgpAQCAtMjI2LDcgKzIyNyw3IEBAIHZvaWQgR1BVUHJvY2Vzczo6aW5pdGlh
bGl6ZUdQVVByb2Nlc3MoR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgYXBwbHlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMuYXV4aWxpYXJ5
UHJvY2Vzc1BhcmFtZXRlcnMpOwogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQVVBy
b2Nlc3M6OmluaXRpYWxpemVHUFVQcm9jZXNzOiIsIHRoaXMpOwogICAgIFdURjo6VGhyZWFkOjpz
ZXRDdXJyZW50VGhyZWFkSXNVc2VySW5pdGlhdGVkKCk7Ci0gICAgQXRvbVN0cmluZzo6aW5pdCgp
OworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogCiAgICAgYXV0
byYgbWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0
b24oKTsKICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbdGhp
c10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyYzhi
MjQ1OWNiYjA0MDcwZDY1Y2YzMmFjN2FhMjU0NzUxMDdmODA4Li40ZmQ2ZDBjZDBhZTg2MTlkMDUy
YzE0YzE4NTM1NDU0ZDI2ZjI1MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1v
bkF0b21TdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ROUy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzLmg+CkBAIC0zMTcsNyArMzE4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKICAgICBw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIAogICAgIFdURjo6
VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW5pdGlhdGVkKCk7Ci0gICAgQXRvbVN0cmlu
Zzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwog
CiAgICAgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciA9IHBhcmFtZXRlcnMuc2hvdWxk
U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXI7CiAgICAgaWYgKCFtX3N1cHByZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQppbmRleCBjMjgwY2ZmZTM5ODNmZmM5ZGZjYzVmNTE2
NGIzNGM2NDRiMzJhZjZmLi41NWE0ODAwYzRlMWFlZjZkM2Y2ODkzNDc4NzI2YWZmOTMyZGIwZWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFs
aXplQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYktpdDJJbml0aWFsaXpl
LmgiCiAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUpJVE9wZXJhdGlvbnMuaD4KICNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0dlbmVy
YXRlUHJvZmlsZXMuaD4KQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgcnVuSW5pdGlhbGl6
YXRpb25Db2RlKHZvaWQqID0gbnVsbHB0cikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01F
U1NBR0UoW05TVGhyZWFkIGlzTWFpblRocmVhZF0sICJJbml0aWFsaXplV2ViS2l0MiBzaG91bGQg
YmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCIpOwogCi0gICAgQXRvbVN0cmluZzo6aW5pdCgp
OworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgSW5pdFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UoKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxp
emUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCmluZGV4
IGU1YzA5NmYyOGQyOGFiZmY0M2M5MzcxNGY2NWRlN2JmMzJhMzJjZGEuLjVmZGMzNmRkMzUyODEx
OTQxYTMwYzk1NGM5MzU4ZWI5ZTg4YWE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJL
aXQySW5pdGlhbGl6ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkxvZ0luaXRp
YWxpemF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSklU
T3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9HZW5lcmF0ZVByb2ZpbGVzLmg+CkBAIC00NCw3
ICs0NSw3IEBAIHZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQogewogICAgIEpTQzo6aW5pdGlhbGl6
ZSgpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICBBdG9tU3RyaW5nOjpp
bml0KCk7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiAKICAg
ICBXVEY6OlJlZkNvdW50ZWRCYXNlOjplbmFibGVUaHJlYWRpbmdDaGVja3NHbG9iYWxseSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcAppbmRleCA3ZjY4ZmQzMjM2N2U5NWI5N2M1MzUzZmYyOGJjY2MxZDlmMTU4
OGQ1Li42YWI5MDExODRmMDY2NDI2NWEzNDcwYzNlMjI5OWM2ODZlMjg0ZmI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vbkF0b21TdHJpbmdzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVu
dEV4dGVuc2lvblBhcnNlci5oPgpAQCAtNTQ1LDcgKzU0Niw3IEBAIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBsZXRp
b25IYW5kCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0
KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29k
ZSk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25B
dG9tU3RyaW5ncygpOwogICAgIFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICAK
ICAgICBhdXRvIHBhcnNlZFJ1bGVzID0gV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnBhcnNl
UnVsZUxpc3QoanNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5j
cHAKaW5kZXggODc1NTQ4YmM0ZmE1YzYyY2RiMjAzYWNhOWUxYzVjYjdiZTUyNDViYS4uOWFiOTdi
M2M4NjJmNDIxMTgwOGU4OWI4MTRiYWM3OGUzYWI2NzY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
b250RGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgpAQCAt
NDYsNyArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIEZvbnRDYXNj
YWRlIG1ha2VGb250KGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7Ci0g
ICAgQXRvbVN0cmluZzo6aW5pdCgpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21tb25BdG9t
U3RyaW5ncygpOwogCiAgICAgU3RyaW5nIGZvbnRGYW1pbHlTdHJpbmcoZGVzY3JpcHRpb24uZmFt
aWx5LCBkZXNjcmlwdGlvbi5mYW1pbHlMZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGI1NjhlMjY5NDliYTgwMmY4NGNlMDU1MDZk
ZGY2ZWIyMTMzOGVjYy4uYmRlZWU5YmZiNTlmM2E1ZGIxNmJmNmE2YWVjNmEzYzBlOTIxZDkzMSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIyLTA0LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBnbG9iYWwgQXRvbVN0cmluZ3MgdG8gYSBjb21tb24gaGVhZGVyIHRvIHBy
b21vdGUgcmV1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuIGFuZCBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0
ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlQmFja2VuZCk6CisKIDIw
MjItMDQtMjIgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIEFkZCBmaW5kIGludGVyYWN0aW9uIEFQSSB0byBXS1dlYlZpZXcKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3Bw
CmluZGV4IDdiNjg2OTdlNjRmZWRmZTg2OWM3MTg5OGJkZjNlM2U0YmI2MjlkNDkuLjI3N2ZhMjM4
NGM3ZWIzNTRkOWNmYWI3ODAyMmM5NWY1ODAzYWMyODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbWJpbmVkVVJM
RmlsdGVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uQXRvbVN0cmluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25FcnJvci5oPgpAQCAtMjEyLDcgKzIxMyw3IEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRJ
bmZvIHJlcXVlc3RJblRvcEFuZEZyYW1lVVJMcyhBU0NJSUxpdGVyYWwgdXJsLCBBU0NJSUxpdGVy
YWwKIAogQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBtYWtlQmFj
a2VuZChTdHJpbmcmJiBqc29uKQogewotICAgIEF0b21TdHJpbmc6OmluaXQoKTsKKyAgICBXZWJD
b3JlOjppbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICAgICBhdXRvIGV4dGVuc2lvbiA9
IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShqc29uKSk7
CiAgICAgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBiYWNrZW5k
OwogICAgIGJhY2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbigidGVzdEZpbHRlciJfcywgV1RGTW92
ZShleHRlbnNpb24pLCB7IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZvbnRTaGFkb3dUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRm9udFNoYWRvd1Rlc3RzLmNwcAppbmRleCAwZGUzODg1NjVkNzAyY2ExYmFjMjVi
NGU4NTA4NDVkMTJkOGY2Yjg4Li45MjYwM2I5NzUyNjc0YWYzZmZkOTVmODZjYThjMzkxNjUwZjRk
ZWExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRm9udFNo
YWRvd1Rlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRm9u
dFNoYWRvd1Rlc3RzLmNwcApAQCAtMjYsMTMgKzI2LDIzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25BdG9tU3RyaW5n
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNoYWRvdy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAotVEVTVChGb250U2hhZG93LCBJbnZhbGlkQ29sb3IpCitjbGFzcyBG
b250U2hhZG93VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OmluaXRpYWxpemVDb21t
b25BdG9tU3RyaW5ncygpOworICAgIH0KK307CisKK1RFU1RfRihGb250U2hhZG93VGVzdCwgSW52
YWxpZENvbG9yKQogewogICAgIEZvbnRTaGFkb3cgZm9udFNoYWRvdzsKICAgICBmb250U2hhZG93
Lm9mZnNldCA9IHsgMS4xLCAyLjIgfTsKQEAgLTQyLDcgKzUyLDcgQEAgVEVTVChGb250U2hhZG93
LCBJbnZhbGlkQ29sb3IpCiAgICAgRVhQRUNUX0VRKHNlcmlhbGl6YXRpb25Gb3JDU1MoZm9udFNo
YWRvdyksICJub25lIik7CiB9CiAKLVRFU1QoRm9udFNoYWRvdywgTm9PZmZzZXRPckJsdXJSYWRp
dXMpCitURVNUX0YoRm9udFNoYWRvd1Rlc3QsIE5vT2Zmc2V0T3JCbHVyUmFkaXVzKQogewogICAg
IEZvbnRTaGFkb3cgZm9udFNoYWRvdzsKICAgICBmb250U2hhZG93LmNvbG9yID0gQ29sb3I6OnJl
ZDsKQEAgLTUzLDcgKzYzLDcgQEAgVEVTVChGb250U2hhZG93LCBOb09mZnNldE9yQmx1clJhZGl1
cykKICAgICBFWFBFQ1RfRVEoc2VyaWFsaXphdGlvbkZvckNTUyhmb250U2hhZG93KSwgIm5vbmUi
KTsKIH0KIAotVEVTVChGb250U2hhZG93LCBOb09mZnNldCkKK1RFU1RfRihGb250U2hhZG93VGVz
dCwgTm9PZmZzZXQpCiB7CiAgICAgRm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFk
b3cuY29sb3IgPSBDb2xvcjo6cmVkOwpAQCAtNjMsNyArNzMsNyBAQCBURVNUKEZvbnRTaGFkb3cs
IE5vT2Zmc2V0KQogICAgIEVYUEVDVF9FUShzZXJpYWxpemF0aW9uRm9yQ1NTKGZvbnRTaGFkb3cp
LCAiMHB4IDBweCByZ2IoMjU1LCAwLCAwKSAzLjNweCIpOwogfQogCi1URVNUKEZvbnRTaGFkb3cs
IE5lZ2F0aXZlT2Zmc2V0KQorVEVTVF9GKEZvbnRTaGFkb3dUZXN0LCBOZWdhdGl2ZU9mZnNldCkK
IHsKICAgICBGb250U2hhZG93IGZvbnRTaGFkb3c7CiAgICAgZm9udFNoYWRvdy5jb2xvciA9IENv
bG9yOjpyZWQ7CkBAIC03Miw3ICs4Miw3IEBAIFRFU1QoRm9udFNoYWRvdywgTmVnYXRpdmVPZmZz
ZXQpCiAgICAgRVhQRUNUX0VRKHNlcmlhbGl6YXRpb25Gb3JDU1MoZm9udFNoYWRvdyksICItMS4x
cHggLTIuMnB4IHJnYigyNTUsIDAsIDApIDMuM3B4Iik7CiB9CiAKLVRFU1QoRm9udFNoYWRvdywg
Tm9CbHVyUmFkaXVzKQorVEVTVF9GKEZvbnRTaGFkb3dUZXN0LCBOb0JsdXJSYWRpdXMpCiB7CiAg
ICAgRm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFkb3cuY29sb3IgPSBDb2xvcjo6
cmVkOwpAQCAtODIsNyArOTIsNyBAQCBURVNUKEZvbnRTaGFkb3csIE5vQmx1clJhZGl1cykKICAg
ICBFWFBFQ1RfRVEoc2VyaWFsaXphdGlvbkZvckNTUyhmb250U2hhZG93KSwgIjEuMXB4IDIuMnB4
IHJnYigyNTUsIDAsIDApIik7CiB9CiAKLVRFU1QoRm9udFNoYWRvdywgTmVnYXRpdmVCbHVyUmFk
aXVzKQorVEVTVF9GKEZvbnRTaGFkb3dUZXN0LCBOZWdhdGl2ZUJsdXJSYWRpdXMpCiB7CiAgICAg
Rm9udFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFkb3cuY29sb3IgPSBDb2xvcjo6cmVk
OwpAQCAtOTEsNyArMTAxLDcgQEAgVEVTVChGb250U2hhZG93LCBOZWdhdGl2ZUJsdXJSYWRpdXMp
CiAgICAgRVhQRUNUX0VRKHNlcmlhbGl6YXRpb25Gb3JDU1MoZm9udFNoYWRvdyksICIxLjFweCAy
LjJweCByZ2IoMjU1LCAwLCAwKSAtMy4zcHgiKTsKIH0KIAotVEVTVChGb250U2hhZG93LCBBbGxO
ZWdhdGl2ZSkKK1RFU1RfRihGb250U2hhZG93VGVzdCwgQWxsTmVnYXRpdmUpCiB7CiAgICAgRm9u
dFNoYWRvdyBmb250U2hhZG93OwogICAgIGZvbnRTaGFkb3cuY29sb3IgPSBDb2xvcjo6cmVkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>