<?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>230874</bug_id>
          
          <creation_ts>2021-09-27 18:45:03 -0700</creation_ts>
          <short_desc>Adopt presentationSceneIdentifierForPaymentAuthorizationController delegate call from PassKit</short_desc>
          <delta_ts>2021-09-30 10:49:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>eddy_wong</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797733</commentid>
    <comment_count>0</comment_count>
      <attachid>439424</attachid>
    <who name="">eddy_wong</who>
    <bug_when>2021-09-27 18:45:03 -0700</bug_when>
    <thetext>Created attachment 439424
Proposed patch

PassKit offers presentationSceneIdentifierForPaymentAuthorizationController delegate call, but WebKit made no effort to respond to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797747</commentid>
    <comment_count>1</comment_count>
      <attachid>439424</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-27 20:20:00 -0700</bug_when>
    <thetext>Comment on attachment 439424
Proposed patch

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

awesome work!  the core logic looks good =D

tho in order to land this you&apos;ll need to add a ChangeLog entry by running `./path/to/WebKit/Tools/Scripts/prepare-ChangeLog -o` and include some info about why the change is being made as well as explaining what&apos;s being changed

also FYI many of the comments below also apply to more than just that one place in your patch, so please keep that in mind :)

&gt; Source/WTF/wtf/PlatformEnableCocoa.h:90
&gt; +#if !defined(ENABLE_APPLE_PAY_REMOTE_UI_USES_SCENE) &amp;&amp; defined(ENABLE_APPLE_PAY_REMOTE_UI) &amp;&amp; HAVE(UIKIT_WEBKIT_INTERNALS)

I don&apos;t think we have any `ENABLE_*` flags that depend on and/or are defined by other `ENABLE_*` flags 🤔

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:359
&gt; +    void paymentCoordinatorPresentingWindowSceneIdentifier(WebKit::WebPageProxyIdentifier, CompletionHandler&lt;void(String)&gt;&amp;&amp;) final;

this (along with almost everything else in this patch) should be guarded by `ENABLE(APPLE_PAY_REMOTE_UI_USES_SCENE)`

also, you dont need the `WebKit::` since we&apos;re already in the `WebKit` namespace  (ditto in most places that `WebKit::` can be found in the rest of this patch)

&gt; Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h:89
&gt; +    virtual void presentInSceneIdentifiedBy(String, CompletionHandler&lt;void(bool)&gt;&amp;&amp;) = 0;

We usually try not to leave trailing prepositions, so I&apos;d just name it `virtual void presentInScene(const String&amp; sceneIdentifier, CompletionHandler&lt;void(bool)&gt;&amp;&amp;) = 0;`.

You should also make the first argument `const String&amp;`.  When used as a return/parameter type, it should almost always be `const String&amp;` (or `String&amp;&amp;` if you&apos;re moving it).  (ditto in most places that `String,` or `(String` can be found in the rest of this patch)

&gt; Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h:90
&gt; +    String sceneIdentifier() { return m_sceneIdentifier; }

you can add a bunch of `const` here
```
    const String&amp; sceneIdentifier() const { return m_sceneIdentifier; }
```

&gt; Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h:101
&gt;      virtual WKPaymentAuthorizationDelegate *platformDelegate() = 0;
&gt; +#if PLATFORM(IOS_FAMILY) &amp;&amp; ENABLE(APPLE_PAY_REMOTE_UI)

Style: I&apos;d add a newline between these since one is a method and the other is a member variable (and they&apos;re unrelated to eachother)

&gt; Source/WebKit/Platform/ios/PaymentAuthorizationController.mm:111
&gt; +    String sceneID = _presenter-&gt;sceneIdentifier();
&gt; +    return sceneID.isEmpty() ? nil : static_cast&lt;NSString *&gt;(sceneID);

you can use `nsStringNilIfEmpty` to do all this in one go instead :)
```
    if (!_presenter)
        return nil;
    return nsStringNilIfEmpty(_presenter-&gt;sceneIdentifier());
```

&gt; Source/WebKit/Platform/ios/PaymentAuthorizationController.mm:159
&gt; +    present(nullptr, WTFMove(completionHandler));

NIT: the first argument should probably be `nil` since it&apos;s an ObjC type

&gt; Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:59
&gt; +    m_client.paymentCoordinatorPresentingWindowSceneIdentifier(webPageProxyID, [this, completionHandler = WTFMove(completionHandler)](String sceneID) mutable {

since this involves an IPC roundtrip, you&apos;ll want to add `weakThis = makeWeakPtr(*this)` to the capture list and then check `if (!weakThis)`

&gt; Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:60
&gt; +        this-&gt;m_authorizationPresenter-&gt;presentInSceneIdentifiedBy(sceneID, WTFMove(completionHandler));

you can drop the `this-&gt;` since you&apos;re capturing `this`

&gt; Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:64
&gt; +#endif

you should add a `UNUSED_PARAM(webPageProxyID);` above this so that when `ENABLE(APPLE_PAY_REMOTE_UI_USES_SCENE)` is not true you wont get an error about an unused variable

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1188
&gt; +    auto sceneID = page-&gt;pageClient().sceneID();
&gt; +    completionHandler(sceneID);

NIT: I&apos;d just inline this and avoid creating a variable

&gt; Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:1028
&gt; +    NSString *sceneID = [m_contentView window].windowScene._persistenceIdentifier;

I think in order to get this to build in OpenSource you&apos;ll need to add a stub for it in `Source/WebKit/Platform/spi/ios/UIKitSPI.h` (and include the file above)
```
    @interface UIScene ()
    @property (nullable, nonatomic, readonly) NSString *_persistenceIdentifier;
    @end
```

On a related note, why this instead of just `_sceneIdentifier`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798191</commentid>
    <comment_count>2</comment_count>
      <attachid>439570</attachid>
    <who name="">eddy_wong</who>
    <bug_when>2021-09-28 23:14:48 -0700</bug_when>
    <thetext>Created attachment 439570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798202</commentid>
    <comment_count>3</comment_count>
      <attachid>439570</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-29 00:14:06 -0700</bug_when>
    <thetext>Comment on attachment 439570
Patch

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        (WebKit::PaymentAuthorizationPresenter::sceneIdentifier const): Holds temporarily the scene ID we&apos;d like to use when presenting the payme
&gt; +nt sheet, to be read by WKPaymentAuthorizationControllerDelegate.

oops?

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:359
&gt; +    void paymentCoordinatorPresentingWindowSceneIdentifier(WebPageProxyIdentifier, CompletionHandler&lt;void(String)&gt;&amp;&amp;) final;

the `String` should probably be a `const String&amp;` (or `String&amp;&amp;`)

&gt; Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:162
&gt; +    void platformShowPaymentUI(const WebPageProxyIdentifier&amp;, const URL&amp; originatingURL, const Vector&lt;URL&gt;&amp; linkIconURLs, const WebCore::ApplePaySessionPaymentRequest&amp;, CompletionHandler&lt;void(bool)&gt;&amp;&amp;);

I don&apos;t think `WebPageProxyIdentifier` needs/wants to be `const` or `&amp;`

&gt; Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:61
&gt; +            weakThis-&gt;m_authorizationPresenter-&gt;presentInScene(sceneID, WTFMove(completionHandler));

this should also check that `m_authorizationPresenter` is valid too
```
    Ref strongThis = weakThis.get();
    if (!strongThis) {
        completionHandler(false);
        return;
    }

    if (!strongThis-&gt;m_authorizationPresenter) {
        completionHandler(false);
        return;
    }

    strongThis-&gt;m_authorizationPresenter-&gt;presentInScene(sceneID, WTFMove(completionHandler));
```

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:81
&gt; +    PaymentCoordinatorPresentingWindowSceneIdentifier(WebKit::WebPageProxyIdentifier webPageProxyIdentifier) -&gt; (String sceneID) Async

NIT: I&apos;d rename this to something more &quot;verb-y&quot; like `GetWindowSceneIdentifierForPaymentPresentation`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798473</commentid>
    <comment_count>4</comment_count>
      <attachid>439632</attachid>
    <who name="">eddy_wong</who>
    <bug_when>2021-09-29 11:31:49 -0700</bug_when>
    <thetext>Created attachment 439632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798608</commentid>
    <comment_count>5</comment_count>
      <attachid>439632</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-29 15:24:30 -0700</bug_when>
    <thetext>Comment on attachment 439632
Patch

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

&gt; Source/WebKit/Platform/ios/PaymentAuthorizationController.h:54
&gt; +    void presentInScene(const String&amp;, CompletionHandler&lt;void(bool)&gt;&amp;&amp;) final;

NIT: this should above any member variables, probably right below `present`

&gt; Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:96
&gt; +        virtual void paymentCoordinatorPresentingWindowSceneIdentifier(WebPageProxyIdentifier, CompletionHandler&lt;void(const String&amp;)&gt;&amp;&amp;) = 0;

NIT: I&apos;d also rename this to `getWindowSceneIdentifierForPaymentPresentation` so that it makes code searching easier (e.g. same method name in the NetworkProcess code and UIProcess code) and for the same reason as the last patch

&gt; Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:61
&gt; +            weakThis-&gt;m_authorizationPresenter-&gt;presentInScene(sceneID, WTFMove(completionHandler));

see my comment on your last patch about this

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:261
&gt; +    void getWindowSceneIdentifierForPaymentPresentation(WebPageProxyIdentifier, CompletionHandler&lt;void(String)&gt;&amp;&amp;);

Can we `const String&amp;`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798681</commentid>
    <comment_count>6</comment_count>
      <attachid>439684</attachid>
    <who name="">eddy_wong</who>
    <bug_when>2021-09-29 16:56:51 -0700</bug_when>
    <thetext>Created attachment 439684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798714</commentid>
    <comment_count>7</comment_count>
      <attachid>439684</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-29 18:14:56 -0700</bug_when>
    <thetext>Comment on attachment 439684
Patch

r=me awesome work! =D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798948</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-30 10:48:26 -0700</bug_when>
    <thetext>Committed r283320 (242345@main): &lt;https://commits.webkit.org/242345@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439684.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798949</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-30 10:49:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/83727523&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439424</attachid>
            <date>2021-09-27 18:45:03 -0700</date>
            <delta_ts>2021-09-28 23:14:45 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>25583</size>
            <attacher>eddy_wong</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCBjZGY0MjY5MThmYWUuLmY1N2Q3
YTFjNWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtODcsNiArODcs
MTAgQEAKICNkZWZpbmUgRU5BQkxFX0FQUExFX1BBWV9SRU1PVEVfVUkgMQogI2VuZGlmCiAKKyNp
ZiAhZGVmaW5lZChFTkFCTEVfQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKSAmJiBkZWZp
bmVkKEVOQUJMRV9BUFBMRV9QQVlfUkVNT1RFX1VJKSAmJiBIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCisjZGVmaW5lIEVOQUJMRV9BUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUgMQor
I2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVjExKSAmJiAo
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAz
MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDE0MDUwMCkpCiAjZGVmaW5lIEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMTEgMQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZTk4YTJlNWRhMTVmLi5mZjBiNDg1Zjg5
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1Niw2ICszNTYsNyBAQCBwcml2YXRl
OgogICAgIC8vIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQKICAgICBJUEM6OkNv
bm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdX
aW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYg
cGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRv
clNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5t
bQppbmRleCBkY2JjNTNlZDZiYmMuLjZkYTYzOTE1NmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NJT1MubW0KQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2ltcG9ydCAi
TmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCkBAIC01Miw2ICs1MywxMSBAQCBVSVZpZXdDb250cm9sbGVyICpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZQogICAgIHJldHVy
biBuaWw7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBuZXR3b3JrUHJvY2Vz
cygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRv
d1NjZW5lSWRlbnRpZmllcih3ZWJQYWdlUHJveHlJZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3Qg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
c3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlci5oCmluZGV4IDJlZmNiMjAwZTgwNC4uNzY3MWMyNTQ3ZGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC04NSw2ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc21pc3MoKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
aXJ0dWFsIHZvaWQgcHJlc2VudChVSVZpZXdDb250cm9sbGVyICosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpID0gMDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJlc2VudEluU2NlbmVJZGVudGlmaWVkQnkoU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgU3RyaW5nIHNjZW5lSWRlbnRpZmll
cigpIHsgcmV0dXJuIG1fc2NlbmVJZGVudGlmaWVyOyB9CisjZW5kaWYKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6CkBAIC05NCw2ICs5OCw5IEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICB2aXJ0dWFs
IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAqcGxhdGZvcm1EZWxlZ2F0ZSgpID0gMDsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkK
KyAgICBTdHJpbmcgbV9zY2VuZUlkZW50aWZpZXI7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBD
bGllbnQmIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaAppbmRleCBh
N2NhN2NhNzk0MjUuLjVmM2UzMmExMzdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyLmgKQEAgLTQ5LDYgKzQ5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3MoKSBmaW5h
bDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcHJlc2VudChVSVZpZXdDb250
cm9sbGVyICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworI2lmIEVO
QUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQorICAgIHZvaWQgcHJlc2VudEluU2NlbmVJZGVudGlm
aWVkQnkoU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNl
bmRpZgogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyLm1tCmluZGV4IDVlNzI1MDEyZDAzNC4uNDM2NTk0NjYwOTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyLm1tCkBAIC0xNTMsNiArMTUzLDE0IEBAIHZvaWQgUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cHJlc2VudChVSVZpZXdDb250cm9sbGVyICpwcmVz
ZW50aW5nVmllCiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX1JFTU9URV9VSSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjo6cHJlc2VudEluU2NlbmVJZGVudGlmaWVkQnkoU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKK30KKyNlbmRpZgorCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaAppbmRl
eCA2NmJmNzBlMTMxN2YuLmFhOWM4MTEwNDhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5o
CkBAIC01MSw2ICs1MSw3IEBAIHVzaW5nIERpZENoYW5nZUNvdXBvbkNvZGVDb21wbGV0aW9uID0g
QmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0Q291cG9uQ29kZVVwCiAKIEBpbnRlcmZhY2Ug
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgewogICAgIFJldGFpblB0
cjxQS1BheW1lbnRSZXF1ZXN0PiBfcmVxdWVzdDsKKyAgICBXZWFrUHRyPFdlYktpdDo6UGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IF9wcmVzZW50ZXI7CiB9CiAKIC0gKGluc3RhbmNldHlw
ZSlpbml0IE5TX1VOQVZBSUxBQkxFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQppbmRleCA1
OGRkYzA4NjNlYWUuLmE5NWJmNDM0ODRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0K
QEAgLTM3LDcgKzM3LDYgQEAgQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZSB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4+
IF9zdW1tYXJ5SXRlbXM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAq
Pj4gX3NoaXBwaW5nTWV0aG9kczsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Nlc3Npb25FcnJv
cjsKLSAgICBXZWFrUHRyPFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IF9w
cmVzZW50ZXI7CiAgICAgV2ViS2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiBfZGlk
QXV0aG9yaXplUGF5bWVudENvbXBsZXRpb247CiAgICAgV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uQ29tcGxldGlvbiBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb247
CiAgICAgV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0
UGF5bWVudE1ldGhvZENvbXBsZXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5oCmluZGV4IDY2Njdh
ODA4ZGIyNC4uMWVjYjViNWIxYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIuaApAQCAtNDksNiAr
NDksMTAgQEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxQS1BheW1lbnRBdXRob3JpemF0aW9u
Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3Jp
emF0aW9uQ29udHJvbGxlckRlbGVnYXRlPiBtX2RlbGVnYXRlOworCisjaWYgRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUkpCisgICAgdm9pZCBwcmVzZW50SW5TY2VuZUlkZW50aWZpZWRCeShTdHJp
bmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQppbmRleCBkZjk5
Nzc1NTg1MzEuLjhhYTc0YTM5M2U3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQpAQCAtMTA1
LDYgKzEwNSwxMiBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjooUEtQ
YXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgKiljb250cgogICAgIFtzZWxmIF9kaWRSZXF1
ZXN0TWVyY2hhbnRTZXNzaW9uOnNlc3Npb25CbG9ja107CiB9CiAKKy0gKE5TU3RyaW5nICopcHJl
c2VudGF0aW9uU2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBT
dHJpbmcgc2NlbmVJRCA9IF9wcmVzZW50ZXItPnNjZW5lSWRlbnRpZmllcigpOworICAgIHJldHVy
biBzY2VuZUlELmlzRW1wdHkoKSA/IG5pbCA6IHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KHNjZW5l
SUQpOworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTMxLDYgKzEzNyw5IEBA
IHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpkaXNtaXNzKCkKICAgICBtX2Nv
bnRyb2xsZXIgPSBuaWw7CiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiAgICAgbV9kZWxl
Z2F0ZSA9IG5pbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKKyAgICBtX3NjZW5l
SWRlbnRpZmllciA9IG51bGxTdHJpbmcoKTsKKyNlbmRpZgogfQogCiB2b2lkIFBheW1lbnRBdXRo
b3JpemF0aW9uQ29udHJvbGxlcjo6cHJlc2VudChVSVZpZXdDb250cm9sbGVyICosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNDMsNiArMTUy
LDE0IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpwcmVzZW50KFVJVmll
d0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsCiAgICAgfSkuZ2V0KCldOwogfQogCisjaWYg
RU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uQ29u
dHJvbGxlcjo6cHJlc2VudEluU2NlbmVJZGVudGlmaWVkQnkoU3RyaW5nIHNjZW5lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBtX3NjZW5lSWRlbnRpZmllciA9IHNjZW5lSWRlbnRpZmllcjsKKyAgICBwcmVzZW50KG51
bGxwdHIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShQQVNTS0lUKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGVhNDg2ZDMwYmViOC4uNTQ5YjAx
ODEzYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5n
JiBtZXJjaGFudElkZW50aWZpCiAgICAgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKG1lcmNoYW50
SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgZGVzdGluYXRpb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8mIGNvb3Jk
aW5hdG9yID0gYWN0aXZlUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKSkKICAgICAgICAgY29vcmRp
bmF0b3ItPmRpZFJlYWNoRmluYWxTdGF0ZSgpOwpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIGRlc3RpbmF0aQogICAgIGZvciAoY29uc3QgYXV0byYgbGlua0ljb25VUkxTdHJpbmcgOiBs
aW5rSWNvblVSTFN0cmluZ3MpCiAgICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoVVJMKFVSTCgp
LCBsaW5rSWNvblVSTFN0cmluZykpOwogCi0gICAgcGxhdGZvcm1TaG93UGF5bWVudFVJKG9yaWdp
bmF0aW5nVVJMLCBsaW5rSWNvblVSTHMsIHBheW1lbnRSZXF1ZXN0LCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgcmVzdWx0KSB7CisgICAgcGxhdGZvcm1TaG93UGF5
bWVudFVJKHdlYlBhZ2VQcm94eUlELCBvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxzLCBwYXlt
ZW50UmVxdWVzdCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIHJl
c3VsdCkgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaAppbmRleCBmNGUyN2ZmZWE4NDkuLmMxODgxZDA1YTBmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BheW1lbnRIZWFkZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTkxLDYgKzky
LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgSVBDOjpSZWNl
aXZlck5hbWUpID0gMDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB2aXJ0dWFs
IFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX1JFTU9URV9VSSkKKyAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4mJikgPSAwOworI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBw
YXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRo
b3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50
UmVxdWVzdCAqKSA9IDA7CiAjZW5kaWYKQEAgLTEyNyw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJj
aGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmlu
ZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5n
VVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uJik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVw
ZGF0ZT4mJik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsKQEAg
LTE1NSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAo
Y29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2
b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciYsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBs
aW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24mKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYp
OwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2Q4OWE1YjExM2U5Li4y
NGQxM2UxNGQ5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zMCw3ICszMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBt
ZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9vbCBjYW5NYWtlUGF5
bWVudHMpIEFzeW5jCiAgICAgT3BlblBheW1lbnRTZXR1cChTdHJpbmcgbWVyY2hhbnRJZGVudGlm
aWVyLCBTdHJpbmcgZG9tYWluTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogCi0gICAgU2hv
d1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBTdHJpbmcg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZl
Y3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKICAgICBDb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiAgICAgQ29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+IHVwZGF0ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggNDEwODQwMGQxNmZi
Li5iMmY3NjQzOTk3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
YW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmlu
Z3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciYgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFVS
TCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3Ms
IGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gcGF5bWVudFJlcXVlc3QgPSBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KG9yaWdpbmF0aW5n
VVJMLCBsaW5rSWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCkBAIC01NSw3ICs1NSwxMyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogICAgIGlmICghbV9hdXRob3JpemF0aW9uUHJlc2VudGVy
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCisjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICBtX2NsaWVudC5wYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKHdlYlBhZ2VQcm94eUlELCBb
dGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3Ry
aW5nIHNjZW5lSUQpIG11dGFibGUgeworICAgICAgICB0aGlzLT5tX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXItPnByZXNlbnRJblNjZW5lSWRlbnRpZmllZEJ5KHNjZW5lSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNlCiAgICAgbV9hdXRob3JpemF0aW9uUHJlc2Vu
dGVyLT5wcmVzZW50KG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcigqdGhpcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgogfQog
CiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUhpZGVQYXltZW50VUko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
bWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGRjNjNiZGYxMjAwYy4u
YTRmNDAzMTUzNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC00
Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2Fu
TWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXImLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIVBBTDo6aXNQYXNz
S2l0RnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxY2RjZmNlMDZmOTUuLjIwMmIyMWZmOTRmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpZiBIQVZFKFNF
Q19LRVlfUFJPWFkpCiAjaW5jbHVkZSAiU2VjS2V5UHJveHlTdG9yZS5oIgpAQCAtMTE3NCw2ICsx
MTc1LDIwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3NpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShBUFBMRV9QQVkpICYmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVu
dGlmaWVyKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlUHJv
eHlJZGVudGlmaWVyKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobnVsbFN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRv
IHNjZW5lSUQgPSBwYWdlLT5wYWdlQ2xpZW50KCkuc2NlbmVJRCgpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKHNjZW5lSUQpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2Fu
U2VuZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2OTlhODI1OWVmYWQuLmEzNWY1MjAzMmE4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKQEAgLTI1Nyw2ICsyNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRB
cHBCb3VuZERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQVBQTEVfUEFZKSAmJiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKKyAgICB2b2lk
IHBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYpOworI2VuZGlmCiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAogICAgIHZvaWQgc2Vu
ZFByZXBhcmVUb1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZDY3NDkyNWM1ODFkLi4yYmIxYjM3MWJjNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTc2LDQgKzc2LDggQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgVVNFKFNPVVApCiAgICAgRGlkRXhj
ZWVkTWVtb3J5TGltaXQoKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBFTkFC
TEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKKyAgICBQYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
V2luZG93U2NlbmVJZGVudGlmaWVyKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQ
YWdlUHJveHlJZGVudGlmaWVyKSAtPiAoU3RyaW5nIHNjZW5lSUQpIEFzeW5jCisjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA1OTk4Yzk0MzQwY2QuLjdhMWEz
ODc2ZjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDk4LDYgKzQ5
OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250
ZW50Vmlld0JhY2tncm91bmRDb2xvcigpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzY2VuZUlE
KCkgPSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0NDE3MTQ0MzFhNC4uNWRkZDk1
YjlmYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjQ4OCw2
ICsyNDg4LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5h
dG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JikgZmluYWw7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCisgICAgdm9pZCBw
YXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYm
KSBmaW5hbDsKKyNlbmRpZgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1RE
YXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA3
Zjk3MDllM2M5N2MuLjBjZThlZmYzNGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigp
IGZpbmFsOworICAgIFN0cmluZyBzY2VuZUlEKCkgZmluYWw7CiAKICAgICBXZWFrT2JqQ1B0cjxX
S0NvbnRlbnRWaWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9U
YXJnZXQ+IG1fdW5kb1RhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA2ZjM4YzM5NTgxODIuLmVlMTYxM2Q4YmRmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtMTAyMyw2ICsxMDIzLDEyIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RTY3JvbGxU
b1JlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hCiAgICAgW21fY29u
dGVudFZpZXcgX3Njcm9sbFRvUmVjdDp0YXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIG1pbmlt
dW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KIAorU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpzY2VuZUlE
KCkKK3sKKyAgICBOU1N0cmluZyAqc2NlbmVJRCA9IFttX2NvbnRlbnRWaWV3IHdpbmRvd10ud2lu
ZG93U2NlbmUuX3BlcnNpc3RlbmNlSWRlbnRpZmllcjsKKyAgICByZXR1cm4gc2NlbmVJRCA/IFN0
cmluZyhzY2VuZUlEKSA6IG51bGxTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNmY0ZGJlM2EzODcyLi5lOWY1NTUz
M2JjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtMTIzOCw2ICsxMjM4LDE0IEBAIFVJVmlld0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0CiAgICAg
cmV0dXJuIHVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CiB9CiAKKyNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKGVtcHR5U3RyaW5nKCkpOworfQorI2VuZGlmCisKIGNvbnN0IFN0cmluZyYgV2ViUGFn
ZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29u
c3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIHJldHVybiB3ZWJzaXRlRGF0
YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5jcHAKaW5kZXggMmIwODBjOTEzYmZiLi40NjE2ZDEyYTI5NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBXZWJQYXltZW50Q29v
cmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
VmVjdG8KICAgICAgICAgbGlua0ljb25VUkxTdHJpbmdzLmFwcGVuZChsaW5rSWNvblVSTC5zdHJp
bmcoKSk7CiAKICAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6U2hvd1BheW1lbnRVSShtX3dlYlBhZ2UuaWRlbnRp
ZmllcigpLCBvcmlnaW5hdGluZ1VSTC5zdHJpbmcoKSwgbGlua0ljb25VUkxTdHJpbmdzLCBwYXlt
ZW50UmVxdWVzdCksIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6U2hvd1Bh
eW1lbnRVSTo6UmVwbHkocmVzdWx0KSkpCisgICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OlNob3dQYXltZW50VUkobV93ZWJQYWdlLmlkZW50aWZp
ZXIoKSwgbV93ZWJQYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgb3JpZ2luYXRpbmdVUkwu
c3RyaW5nKCksIGxpbmtJY29uVVJMU3RyaW5ncywgcGF5bWVudFJlcXVlc3QpLCBNZXNzYWdlczo6
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OlNob3dQYXltZW50VUk6OlJlcGx5KHJlc3VsdCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439570</attachid>
            <date>2021-09-28 23:14:48 -0700</date>
            <delta_ts>2021-09-29 11:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230874-20210928231448.patch</filename>
            <type>text/plain</type>
            <size>32098</size>
            <attacher>eddy_wong</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE1ZTJlY2RiNDU1Y2E2NWU2MDZkOWM1
ZmIzMjNiNWFmNTdjMDcyMWEuLjM4N2QwOWY4MjM3MWNjM2Q4N2EyZDY2NTFlYTVjMmJlZjhhMDg3
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMjggIEVkZHkgV29uZyAgPGVkZHlfd29u
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVy
Rm9yUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyIGRlbGVnYXRlIGNhbGwgZnJvbSBQYXNz
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA4
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6IERlZmluZXMgbmV3IGZsYWcgRU5BQkxFX0FQUExFX1BB
WV9SRU1PVEVfVUlfVVNFU19TQ0VORQorCiAyMDIxLTA5LTI3ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgVm9yYmlzIGRlY29kZXIgY2FuJ3QgYmUgaW5zdGFu
dGlhdGVkIC0gUmVtb3ZlIHdvcmthcm91bmQgYWRkZWQgaW4gYnVnIDIyODEzOQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1OTc4NDdmMTQ2NDNlZGJiM2I0NGYxZGQyZDk0MzE2MmE1ZWEwY2M1Li5jMzQ0N2QwZjZkMTVk
NjNmZGQ1ZDFkNDY0M2NmYzNjNzhkODUwYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisy
MDIxLTA5LTI4ICBFZGR5IFdvbmcgIDxlZGR5X3dvbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFk
b3B0IHByZXNlbnRhdGlvblNjZW5lSWRlbnRpZmllckZvclBheW1lbnRBdXRob3JpemF0aW9uQ29u
dHJvbGxlciBkZWxlZ2F0ZSBjYWxsIGZyb20gUGFzc0tpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOiBEZWZpbmVzIG5ldyBmdW5jdGlvbiBwYXltZW50Q29vcmRpbmF0
b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKCkKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06ICAgICAgICAgCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKTogSW1wbGVtZW50cyBwYXlt
ZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKCkgYnkgYXNraW5n
IHBhcmVudCBwcm9jZXNzIGZvciBzY2VuZSBJRCB2aWEgbmV3IFhQQyBtZXNzYWdlLgorICAgICAg
ICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpzY2VuZUlkZW50aWZp
ZXIgY29uc3QpOiBIb2xkcyB0ZW1wb3JhcmlseSB0aGUgc2NlbmUgSUQgd2UnZCBsaWtlIHRvIHVz
ZSB3aGVuIHByZXNlbnRpbmcgdGhlIHBheW1lCitudCBzaGVldCwgdG8gYmUgcmVhZCBieSBXS1Bh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlckRlbGVnYXRlLgorICAgICAgICAqIFBsYXRmb3Jt
L2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDogRGVjbGFyZXMgcHJl
c2VudEluU2NlbmUoKSB3aGljaCBpcyBqdXN0IGZvciBjb25mb3JtYW5jZSB0byBQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OnByZXNlbnRJblNjZW5lKTogUHJvdmlkZXMgYSBkdW1t
eSBpbXBsZW1lbnRhdGlvbiBmb3IgcHJlc2VudEluU2NlbmUoKSBmb3IgY29uZm9ybWFuY2UuCisg
ICAgICAgICogUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmg6
IFN1cmZhY2VzIF9wcmVzZW50ZXIgZm9yIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJ3Mg
dXNlLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5tbTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0
aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFBsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXph
dGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25Db250
cm9sbGVyRGVsZWdhdGUgcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudEF1dGhv
cml6YXRpb25Db250cm9sbGVyOl0pOiBJbXBsZW1lbnRzIHRoZSBuZXcgUGFzc0tpdCBkZWxlZ2F0
ZSBjYWxsIHJldHVybmluZyB0aGUgc2NlbmUgSUQgZm9yIHRoZSBVSVByb2Nlc3MuCisgICAgICAg
IChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6ZGlzbWlzcyk6IEhvdXNl
IGtlZXBpbmcuCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
cjo6cHJlc2VudEluU2NlbmUpOiBTdG9yZXMgdGhlIHNjZW5lIElEIGZyb20gdGhlIGNhbGxlciBm
b3IgV0tQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZSB0byByZWFkIGZyb20u
CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cDogCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5
bWVudFVJKTogUmVsYXlzIHdlYlBhZ2VQcm94eUlEIGZvciB1c2UgYnkgVUlQcm9jZXNzIHVsdGlt
YXRlbHkgdG8gbG9vayB1cCB0aGUgY29ycmVjdCBXZWJQYWdlUHJveHkuCisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6IERpdHRvLgorICAgICAg
ICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bjogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IFByZXNlbnRzIHBheW1lbnQgc2hlZXQgd2l0
aCBzY2VuZSBJRCBpZiBhcHBsaWNhYmxlLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBTaWduYXR1cmUg
Y2hhbmdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKTogTG9va3MgdXAgdGhlIGNvcnJl
Y3QgV2ViUGFnZVByb3h5IGFuZCByZXRyaWV2ZSB0aGUgc2NlbmUgSUQgZm9yIHRoZSBjYWxsZXIg
KE5ldHdvcmtQcm9jZXNzKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Q2xpZW50Lmg6IEFkZHMgYWJpbGl0eSB0byByZXRyaWV2ZSBzY2VuZSBJRC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2NlbmVJRCk6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5k
b3dTY2VuZUlkZW50aWZpZXIpOiBEdW1teSBpbXBsZW1lbnRhdGlvbiBmb3IgY29uZm9ybWFuY2Ug
dG8gV2ViUGFnZVByb3h5LiBXZWJQcm9jZXNzIGRvZXMgbm90IHRhbGsgdG8gVUlQcm9jZXNzIGRp
cmVjdGx5IGZvciB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENv
b3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKTogUGFzc2VzIHRoZSBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIGFsb25nLgorCisKIDIwMjEtMDktMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBWb3JiaXMgZGVjb2RlciBjYW4ndCBiZSBpbnN0YW50aWF0ZWQgLSBS
ZW1vdmUgd29ya2Fyb3VuZCBhZGRlZCBpbiBidWcgMjI4MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmgKaW5kZXggNzZmNzk3NmZiZWVkMDFkMzhlY2NmMjYwNzgzMjAwYTFlZmMyOGM3
MC4uODdiMmIxY2NlY2I5NWU2ZWEyMjY3Y2IzNWJmNmExMmUyZTZhNzU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtODMsMTAgKzgzLDE4IEBACiAjZGVmaW5lIEVOQUJM
RV9BUFBMRV9QQVlfUkVDVVJSSU5HX0xJTkVfSVRFTSAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVk
KEVOQUJMRV9BUFBMRV9QQVlfUkVNT1RFX1VJKSAmJiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVU
VikKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFU
Rk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKworI2lmICFkZWZpbmVkKEVOQUJM
RV9BUFBMRV9QQVlfUkVNT1RFX1VJKQogI2RlZmluZSBFTkFCTEVfQVBQTEVfUEFZX1JFTU9URV9V
SSAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBMRV9QQVlfUkVNT1RFX1VJX1VT
RVNfU0NFTkUpICYmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNkZWZpbmUgRU5BQkxF
X0FQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSAxCisjZW5kaWYKKworI2VuZGlmIC8vICFQ
TEFURk9STShNQUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdBVENI
T1MpICYmICFQTEFURk9STShBUFBMRVRWKQorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FQUExFX1BB
WV9TRVNTSU9OX1YxMSkgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDA1MDApKQogI2RlZmluZSBFTkFCTEVfQVBQTEVfUEFZ
X1NFU1NJT05fVjExIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQxNjFj
Zjk2YzRjNWQ5YWQxMzA5NDk2MmUxOTkxYTVmNGVmZDgwYjQuLmYwZDhjMGNhYzI2MjU0NmQwMzdj
NzMxYjc0NjExZjgwZjBiYWVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1NSw2
ICszNTUsOSBAQCBwcml2YXRlOgogICAgIC8vIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpD
bGllbnQKICAgICBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24o
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBVSVZpZXdDb250
cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3Qg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
X1JFTU9URV9VSV9VU0VTX1NDRU5FKQorICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUHJlc2Vu
dGluZ1dpbmRvd1NjZW5lSWRlbnRpZmllcihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGZpbmFsOworI2VuZGlmCiAgICAgY29uc3QgU3Ry
aW5nJiBwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1l
bnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
SU9TLm1tCmluZGV4IGRjYmM1M2VkNmJiYzEzYjNmYThlODJmZWIxZmNkMWI0OTFkNDU5M2QuLmFl
ZmI0MTE5MGQ0OTA3NjY1NmQxODg5MTkwYzgyNDBkYjVmZWFjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbXBv
cnQgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIApAQCAtNTIsNiArNTMsMTMgQEAgVUlWaWV3Q29udHJvbGxlciAqTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWUKICAgICBy
ZXR1cm4gbmlsOwogfQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VO
RSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRv
clByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIo
d2ViUGFnZVByb3h5SWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
KyNlbmRpZgorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
YXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nh
c3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlci5oCmluZGV4IDJlZmNiMjAwZTgwNDU2N2JlNTMyMDkyMGI3MWIzYzU2ZjZiMjAwNjUu
LjA3MmUxZGI4NzcxZjA5MWJjNTA0NzhjYzY1OTY3NTQzZTMxODU3NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyLmgKQEAgLTg1LDYgKzg1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzbWlzcygpID0gMDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9p
ZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJikgPSAwOworI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCisg
ICAgdmlydHVhbCB2b2lkIHByZXNlbnRJblNjZW5lKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICBjb25zdCBTdHJpbmcmIHNjZW5lSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NlbmVJZGVudGlmaWVyOyB9CisjZW5kaWYKICNlbmRp
ZgogCiBwcm90ZWN0ZWQ6CkBAIC05NSw2ICs5OSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0
dWFsIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAqcGxhdGZvcm1EZWxlZ2F0ZSgpID0g
MDsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RF
X1VJX1VTRVNfU0NFTkUpCisgICAgU3RyaW5nIG1fc2NlbmVJZGVudGlmaWVyOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgQ2xpZW50JiBtX2NsaWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5oCmluZGV4IGE3Y2E3Y2E3OTQyNWE4YjQ3YjBmYjBjYjQxNTM4NWRmMDZjZTE4
YjcuLjJmMjM4ZGU2MWZkOGVlM2Q5MmYwOTBjZGQzNDU0YWM3MDQ5Mjc4NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC00OSw2ICs0OSw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNtaXNzKCkgZmluYWw7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQor
ICAgIHZvaWQgcHJlc2VudEluU2NlbmUoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CisjZW5kaWYKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJvbGxlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbQppbmRleCA1ZTcyNTAxMmQwMzQwZDAyZDIy
ZTA5OWQ5ZTg5NWZlOTBkODNkYzM0Li4zOWFhNDJhZWY1OWMzOGZmMjY4N2I5MTE3NzVmYmRkMDdl
MzYxNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCkBAIC0xNTMsNiAr
MTUzLDE0IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cHJlc2Vu
dChVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmllCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQor
dm9pZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpwcmVzZW50SW5TY2VuZShj
b25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKK30KKyNlbmRpZgorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaAppbmRleCA2NmJmNzBlMTMxN2YyZDM5MjExMzgzYjdm
YTUxY2Y2ZTIxNjkzODQ5Li5hYTljODExMDQ4YmE5OGQ2OTQzMGVjMzc0OGMxZTEyNGJlNmZkYjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgKQEAgLTUxLDYgKzUxLDcgQEAgdXNpbmcgRGlk
Q2hhbmdlQ291cG9uQ29kZUNvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVl
c3RDb3Vwb25Db2RlVXAKIAogQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUgOiBOU09iamVjdCB7CiAgICAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IF9yZXF1ZXN0
OworICAgIFdlYWtQdHI8V2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gX3By
ZXNlbnRlcjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tCmluZGV4IDU4ZGRjMDg2M2VhZTdmNDUxNzczZmMwODUwODAz
OGIwZmQ0ODBkMDkuLmE5NWJmNDM0ODRhZjc0MGE0ODlmMDBiZjczNGEwMjExNDE4YTVjMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCkBAIC0zNyw3ICszNyw2IEBACiAgICAgUmV0YWlu
UHRyPE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4+IF9zdW1tYXJ5SXRlbXM7CiAgICAg
UmV0YWluUHRyPE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPj4gX3NoaXBwaW5nTWV0aG9kczsK
ICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Nlc3Npb25FcnJvcjsKLSAgICBXZWFrUHRyPFdlYktp
dDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IF9wcmVzZW50ZXI7CiAgICAgV2ViS2l0
OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiBfZGlkQXV0aG9yaXplUGF5bWVudENvbXBs
ZXRpb247CiAgICAgV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiBf
ZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb247CiAgICAgV2ViS2l0OjpEaWRTZWxl
Y3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9y
aXphdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRB
dXRob3JpemF0aW9uQ29udHJvbGxlci5oCmluZGV4IDY2NjdhODA4ZGIyNDQzZTc1NmZhODE1MDNm
OTU5NTkwZTc5MGEyOTAuLmZjMjdjZGYyOWUxYzVjNDkwYjk3ZTY3NDI3MjRiODNlZTFhZmYzMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0
aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRB
dXRob3JpemF0aW9uQ29udHJvbGxlci5oCkBAIC00OSw2ICs0OSwxMCBAQCBwcml2YXRlOgogCiAg
ICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPiBtX2NvbnRyb2xs
ZXI7CiAgICAgUmV0YWluUHRyPFdLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyRGVsZWdh
dGU+IG1fZGVsZWdhdGU7CisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1ND
RU5FKQorICAgIHZvaWQgcHJlc2VudEluU2NlbmUoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1
dGhvcml6YXRpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5
bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tCmluZGV4IGRmOTk3NzU1ODUzMWFhMTU3OWMw
ZDk0YWFkYzExMzFkMzFlNzY5N2IuLjg1NDY4Y2NkZTg2ZDJmYWE1NDUyNTE2OWQ5MjBhNjYzZWZl
MDU3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRo
b3JpemF0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9Q
YXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KQEAgLTEwNSw2ICsxMDUsMTUgQEAKICAg
ICBbc2VsZiBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpzZXNzaW9uQmxvY2tdOwogfQogCisj
aWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKy0gKE5TU3RyaW5nICop
cHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9s
bGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAg
ICBpZiAoIV9wcmVzZW50ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIG5zU3Ry
aW5nTmlsSWZFbXB0eShfcHJlc2VudGVyLT5zY2VuZUlkZW50aWZpZXIoKSk7Cit9CisjZW5kaWYK
KwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzMSw2ICsxNDAsOSBAQCB2b2lkIFBh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6ZGlzbWlzcygpCiAgICAgbV9jb250cm9sbGVy
ID0gbmlsOwogICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwogICAgIG1fZGVsZWdhdGUgPSBu
aWw7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICBtX3Nj
ZW5lSWRlbnRpZmllciA9IG51bGxTdHJpbmcoKTsKKyNlbmRpZgogfQogCiB2b2lkIFBheW1lbnRB
dXRob3JpemF0aW9uQ29udHJvbGxlcjo6cHJlc2VudChVSVZpZXdDb250cm9sbGVyICosIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNDMsNiAr
MTU1LDE0IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpwcmVzZW50KFVJ
Vmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsCiAgICAgfSkuZ2V0KCldOwogfQogCisj
aWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKK3ZvaWQgUGF5bWVudEF1
dGhvcml6YXRpb25Db250cm9sbGVyOjpwcmVzZW50SW5TY2VuZShjb25zdCBTdHJpbmcmIHNjZW5l
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBtX3NjZW5lSWRlbnRpZmllciA9IHNjZW5lSWRlbnRpZmllcjsKKyAgICBw
cmVzZW50KG5pbCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKFBBU1NLSVQpICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggZWE0ODZkMzBiZWI4MTI5
NmE2Njg1ODE5MzMwZWJkMzEwYWEzNTIzMi4uYzFlYzgzNmE4NjU4ODc0YTRjNGJjM2QyOTczOTYz
ODIwY2M2OGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChtZXJj
aGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0
aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVl
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYgY29vcmRpbmF0
b3IgPSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBjb29yZGluYXRv
ci0+ZGlkUmVhY2hGaW5hbFN0YXRlKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
ZGVzdGluYXRpCiAgICAgZm9yIChjb25zdCBhdXRvJiBsaW5rSWNvblVSTFN0cmluZyA6IGxpbmtJ
Y29uVVJMU3RyaW5ncykKICAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChVUkwoVVJMKCksIGxp
bmtJY29uVVJMU3RyaW5nKSk7CiAKLSAgICBwbGF0Zm9ybVNob3dQYXltZW50VUkob3JpZ2luYXRp
bmdVUkwsIGxpbmtJY29uVVJMcywgcGF5bWVudFJlcXVlc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oYm9vbCByZXN1bHQpIHsKKyAgICBwbGF0Zm9ybVNob3dQYXltZW50
VUkod2ViUGFnZVByb3h5SUQsIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVSTHMsIHBheW1lbnRS
ZXF1ZXN0LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgcmVzdWx0
KSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IGY0ZTI3ZmZlYTg0OWJiYmJjNjkzNmM5ZjQ0ZTk0MWIwYmI3ZGZk
MGEuLjNjM2RmMGUxMTE2NzI3MGZiZjUyM2NjMjQ0MTM3MWMyZjk4NzVjNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXlt
ZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC05MSw2ICs5Miw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIElQQzo6UmVjZWl2ZXJO
YW1lKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmlydHVhbCBVSVZp
ZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisjaWYgRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSA9IDA7CisjZW5kaWYK
ICAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckNURGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0g
MDsKICAgICAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXI+IHBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopID0gMDsKICNlbmRpZgpA
QCAtMTI3LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNX
aXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2
b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
Ci0gICAgdm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBX
ZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGlu
Z01ldGhvZFVwZGF0ZT4mJik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmKTsKQEAgLTE1NSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1DYW5N
YWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBw
bGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXlt
ZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXImLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYg
bGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1D
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYm
KTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdkODlhNWIxMTNlOTQ0
OGU2YTIzZTlkNGE3NWFhMzkxYTVjOTFmYTkuLjI0ZDEzZTE0ZDk3YzVhZWU5NmJiNWQzMzA2ZDU3
OWNmNWQ4MGU5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zMCw3ICszMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBt
ZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9vbCBjYW5NYWtlUGF5
bWVudHMpIEFzeW5jCiAgICAgT3BlblBheW1lbnRTZXR1cChTdHJpbmcgbWVyY2hhbnRJZGVudGlm
aWVyLCBTdHJpbmcgZG9tYWluTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogCi0gICAgU2hv
d1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBTdHJpbmcg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZl
Y3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKICAgICBDb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiAgICAgQ29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+IHVwZGF0ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggNDEwODQwMGQxNmZi
MGMxNWFiOGViZjA4YzQyMDJkZmE4ZGE5NTg1NC4uMWJmMDc4YTdlOTMzNGQ4N2Y0NjJkOGFkMDli
NTQ1NGMyZTc0YjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNh
bk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIH0pOwogfQogCi12b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3Qg
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5n
cywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3Qg
V2ViUGFnZVByb3h5SWRlbnRpZmllciYgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFVSTCYgb3JpZ2lu
YXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGF5
bWVudFJlcXVlc3QgPSBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KG9yaWdpbmF0aW5nVVJMLCBsaW5r
SWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCkBAIC01NSw3ICs1NSwxNSBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBv
cmlnaW5hdGluZ1VSTAogICAgIGlmICghbV9hdXRob3JpemF0aW9uUHJlc2VudGVyKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCisjaWYgRU5BQkxFKEFQUExFX1BB
WV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JQ
cmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKHdlYlBhZ2VQcm94eUlELCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFN0cmluZyBzY2VuZUlEKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPm1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+cHJl
c2VudEluU2NlbmUoc2NlbmVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0p
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0od2ViUGFnZVByb3h5SUQpOwogICAgIG1fYXV0aG9y
aXphdGlvblByZXNlbnRlci0+cHJlc2VudChtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JQcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIoKnRoaXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1I
aWRlUGF5bWVudFVJKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCBk
YzYzYmRmMTIwMGNkMmQ3ZTllNTZiY2UxMzY5YmExNTBmY2UwNjFlLi5lZTAxMTBjNjI0OGEyMDQy
NDhhOTc3OWE2ZTVjMDk3YTI2OWYxMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1l
bnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0lj
b25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1l
bnRVSShjb25zdCBXZWJQYWdlUHJveHlJZGVudGlmaWVyJiwgY29uc3QgVVJMJiBvcmlnaW5hdGlu
Z1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFQQUw6Omlz
UGFzc0tpdEZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzY1YTYxOWQ3YThhZTgxYTYwMzNiMDY3
MTE0N2UwMWFjY2RkNDE3Zi4uY2NmNDA1ZGM2MTg4YjdmYmY1MTM5NDcwOGQ3YWFkODE0ZWEwMzQz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpZiBIQVZF
KFNFQ19LRVlfUFJPWFkpCiAjaW5jbHVkZSAiU2VjS2V5UHJveHlTdG9yZS5oIgpAQCAtMTE3NCw2
ICsxMTc1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3NpCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIo
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byog
cGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlUHJveHlJZGVudGlmaWVyKTsK
KyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbFN0cmluZygp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihwYWdlLT5w
YWdlQ2xpZW50KCkuc2NlbmVJRCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDYwZmIzMmU4MTBlMmZmYjJj
NDliODU4OTc5MjYzNmI3YmVhMGQ4YS4uYWYzMzNhM2MzOWY0ZjZjNGI5OTIwMTU1NDA0NDYxYzJm
OTllODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI1Nyw2ICsyNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQorICAgIHZvaWQgcGF5
bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvd1NjZW5lSWRlbnRpZmllcihXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOworI2VuZGlm
CiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAogICAgIHZvaWQgc2VuZFByZXBhcmVUb1N1
c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZDY3NDkyNWM1ODFkYmQ5ZjBhNzY5YTY3MDAzNmQ5YzZkZWYzNDA3MS4uYjQ0MTRkYmY2
N2EwZTgzNWMxMDMzYjk0ZGEzYmE2ZWY2YzAzNzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNzYsNCArNzYsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBVU0UoU09VUCkKICAgICBEaWRFeGNlZWRNZW1vcnlMaW1p
dCgpCiAjZW5kaWYKKworI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUp
CisgICAgUGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvd1NjZW5lSWRlbnRpZmllcihX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SWRlbnRpZmllcikgLT4g
KFN0cmluZyBzY2VuZUlEKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggNTk5OGM5NDM0MGNkNTkzNmRjMGVjMjJhNzEwM2U4MDM2ZTdmN2E4Zi4u
N2ExYTM4NzZmMWI3NzA4MWYxYmQyMjgxOTVkNjk4ZmEwZmZjZDgwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDk4LDYgKzQ5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigp
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzY2VuZUlEKCkgPSAwOwogI2VuZGlmCiAKICAgICAv
LyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IGJlMTAxMDVmMTYxM2JjYzQ5ZTc3MjVlODE4NTUxZTNiNWU0MGNlZjMuLjhk
MjMwODU5Y2EwODI5ODVkMzMxMDRkM2FmMjJmMDgxNTNiYmM3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNDg5LDYgKzI0ODksOSBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBV
SVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQorICAgIHZvaWQgcGF5bWVudENvb3JkaW5h
dG9yUHJlc2VudGluZ1dpbmRvd1NjZW5lSWRlbnRpZmllcihXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGZpbmFsOworI2VuZGlmCiAgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRDb29yZGluYXRv
ckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQS1Bh
eW1lbnRSZXF1ZXN0ICopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDdmOTcwOWUzYzk3YzhiYTA2NGVlYzg3
ZmJmMGNjMDkxNDM1NzBiZDMuLjBjZThlZmYzNGY3ZjcyMGU2ODA4MGI1MDZlMzkwNDk2MzMzYzY5
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCkBAIC0zMDAsNiArMzAwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6
Q29sb3IgY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IoKSBmaW5hbDsKKyAgICBTdHJpbmcgc2Nl
bmVJRCgpIGZpbmFsOwogCiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50
VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5k
ZXggNmYzOGMzOTU4MTgyMmQxMDY3YjFhZjViNzQyYTg4M2RmZjkxYjhkMC4uOWMzMjQzNGI4MDEz
YjlmYzNmYmE4Yjk0NjlkNjY4NjIzMTlmYTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTAyMyw2ICsxMDIzLDExIEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RTY3JvbGxUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBGbG9hCiAgICAgW21fY29udGVudFZpZXcgX3Njcm9sbFRvUmVjdDp0
YXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0K
IAorU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpzY2VuZUlEKCkKK3sKKyAgICByZXR1cm4gW21fY29u
dGVudFZpZXcgd2luZG93XS53aW5kb3dTY2VuZS5fc2NlbmVJZGVudGlmaWVyOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2ZjRk
YmUzYTM4NzJiNjcxMzEwMmY5OTE1OGY4ODRkZTc0NGViNGYzLi5jNzM5ZGY4ZGNjM2VkYWU3MWFi
YmUyMDA4NThkOTZlOGJjOGFhM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEyMzgsNiArMTIzOCwxNCBAQCBVSVZpZXdDb250cm9s
bGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcihjb25zdAogICAgIHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cigpOwogfQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJ
ZGVudGlmaWVyKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihudWxsU3RyaW5nKCkpOworfQorI2VuZGlmCisKIGNv
bnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0
aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAg
IHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLmRhdGFDb25uZWN0aW9u
U2VydmljZVR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggMmIwODBjOTEzYmZiNTBk
NDc2OWMyNWY0ODBlNjA5OTZiNjQzZDEzZi4uNDYxNmQxMmEyOTYyMGY5MGQwYjRjYzZjY2ZkNTBm
Mjg5MWViNmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBi
b29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6c2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdp
bmF0aW5nVVJMLCBjb25zdCBWZWN0bwogICAgICAgICBsaW5rSWNvblVSTFN0cmluZ3MuYXBwZW5k
KGxpbmtJY29uVVJMLnN0cmluZygpKTsKIAogICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpTaG93UGF5bWVudFVJ
KG1fd2ViUGFnZS5pZGVudGlmaWVyKCksIG9yaWdpbmF0aW5nVVJMLnN0cmluZygpLCBsaW5rSWNv
blVSTFN0cmluZ3MsIHBheW1lbnRSZXF1ZXN0KSwgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpTaG93UGF5bWVudFVJOjpSZXBseShyZXN1bHQpKSkKKyAgICBpZiAoIXNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6U2hvd1BheW1lbnRVSSht
X3dlYlBhZ2UuaWRlbnRpZmllcigpLCBtX3dlYlBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigp
LCBvcmlnaW5hdGluZ1VSTC5zdHJpbmcoKSwgbGlua0ljb25VUkxTdHJpbmdzLCBwYXltZW50UmVx
dWVzdCksIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6U2hvd1BheW1lbnRV
STo6UmVwbHkocmVzdWx0KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439632</attachid>
            <date>2021-09-29 11:31:49 -0700</date>
            <delta_ts>2021-09-29 16:56:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230874-20210929113148.patch</filename>
            <type>text/plain</type>
            <size>32687</size>
            <attacher>eddy_wong</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE1ZTJlY2RiNDU1Y2E2NWU2MDZkOWM1
ZmIzMjNiNWFmNTdjMDcyMWEuLjM4N2QwOWY4MjM3MWNjM2Q4N2EyZDY2NTFlYTVjMmJlZjhhMDg3
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMjggIEVkZHkgV29uZyAgPGVkZHlfd29u
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVy
Rm9yUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyIGRlbGVnYXRlIGNhbGwgZnJvbSBQYXNz
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA4
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6IERlZmluZXMgbmV3IGZsYWcgRU5BQkxFX0FQUExFX1BB
WV9SRU1PVEVfVUlfVVNFU19TQ0VORQorCiAyMDIxLTA5LTI3ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgVm9yYmlzIGRlY29kZXIgY2FuJ3QgYmUgaW5zdGFu
dGlhdGVkIC0gUmVtb3ZlIHdvcmthcm91bmQgYWRkZWQgaW4gYnVnIDIyODEzOQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1OTc4NDdmMTQ2NDNlZGJiM2I0NGYxZGQyZDk0MzE2MmE1ZWEwY2M1Li41Mzg1ODAzNmFmY2E4
NmQzYTE3Y2Q4NWRkNGNhMGM5OTMwZDI0Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisy
MDIxLTA5LTI4ICBFZGR5IFdvbmcgIDxlZGR5X3dvbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFk
b3B0IHByZXNlbnRhdGlvblNjZW5lSWRlbnRpZmllckZvclBheW1lbnRBdXRob3JpemF0aW9uQ29u
dHJvbGxlciBkZWxlZ2F0ZSBjYWxsIGZyb20gUGFzc0tpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOiBEZWZpbmVzIG5ldyBmdW5jdGlvbiBwYXltZW50Q29vcmRpbmF0
b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKCkKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06ICAgICAgICAgCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKTogSW1wbGVtZW50cyBwYXlt
ZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKCkgYnkgYXNraW5n
IHBhcmVudCBwcm9jZXNzIGZvciBzY2VuZSBJRCB2aWEgbmV3IFhQQyBtZXNzYWdlLgorICAgICAg
ICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpzY2VuZUlkZW50aWZp
ZXIgY29uc3QpOiBIb2xkcyB0ZW1wb3JhcmlseSB0aGUgc2NlbmUgSUQgd2UnZCBsaWtlIHRvIHVz
ZSB3aGVuIHByZXNlbnRpbmcgdGhlIHBheW1lbnQgc2hlZXQsIHRvIGJlIHJlYWQgYnkgV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKiBQbGF0Zm9ybS9j
b2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmg6IERlY2xhcmVzIHByZXNl
bnRJblNjZW5lKCkgd2hpY2ggaXMganVzdCBmb3IgY29uZm9ybWFuY2UgdG8gUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOjpwcmVzZW50SW5TY2VuZSk6IFByb3ZpZGVzIGEgZHVtbXkg
aW1wbGVtZW50YXRpb24gZm9yIHByZXNlbnRJblNjZW5lKCkgZm9yIGNvbmZvcm1hbmNlLgorICAg
ICAgICAqIFBsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOiBT
dXJmYWNlcyBfcHJlc2VudGVyIGZvciBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcidzIHVz
ZS4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUubW06IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlv
bkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRp
b25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJv
bGxlckRlbGVnYXRlIHByZXNlbnRhdGlvblNjZW5lSWRlbnRpZmllckZvclBheW1lbnRBdXRob3Jp
emF0aW9uQ29udHJvbGxlcjpdKTogSW1wbGVtZW50cyB0aGUgbmV3IFBhc3NLaXQgZGVsZWdhdGUg
Y2FsbCByZXR1cm5pbmcgdGhlIHNjZW5lIElEIGZvciB0aGUgVUlQcm9jZXNzLgorICAgICAgICAo
V2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI6OmRpc21pc3MpOiBIb3VzZSBr
ZWVwaW5nLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI6
OnByZXNlbnRJblNjZW5lKTogU3RvcmVzIHRoZSBzY2VuZSBJRCBmcm9tIHRoZSBjYWxsZXIgZm9y
IFdLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyRGVsZWdhdGUgdG8gcmVhZCBmcm9tLgor
ICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6
IAorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1l
bnRVSSk6IFJlbGF5cyB3ZWJQYWdlUHJveHlJRCBmb3IgdXNlIGJ5IFVJUHJvY2VzcyB1bHRpbWF0
ZWx5IHRvIGxvb2sgdXAgdGhlIGNvcnJlY3QgV2ViUGFnZVByb3h5LgorICAgICAgICAqIFNoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOiBEaXR0by4KKyAgICAgICAg
KiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46
IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBQcmVzZW50cyBwYXltZW50IHNoZWV0IHdpdGgg
c2NlbmUgSUQgaWYgYXBwbGljYWJsZS4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKTogU2lnbmF0dXJlIGNo
YW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0V2luZG93U2NlbmVJ
ZGVudGlmaWVyRm9yUGF5bWVudFByZXNlbnRhdGlvbik6IExvb2tzIHVwIHRoZSBjb3JyZWN0IFdl
YlBhZ2VQcm94eSBhbmQgcmV0cmlldmUgdGhlIHNjZW5lIElEIGZvciB0aGUgY2FsbGVyIChOZXR3
b3JrUHJvY2VzcykuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOiBBZGRzIGFiaWxpdHkgdG8gcmV0cmlldmUgc2NlbmUgSUQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNjZW5lSUQpOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2Nl
bmVJZGVudGlmaWVyKTogRHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIGNvbmZvcm1hbmNlIHRvIFdl
YlBhZ2VQcm94eS4gV2ViUHJvY2VzcyBkb2VzIG5vdCB0YWxrIHRvIFVJUHJvY2VzcyBkaXJlY3Rs
eSBmb3IgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvcjo6c2hvd1BheW1lbnRVSSk6IFBhc3NlcyB0aGUgV2ViUGFnZVByb3h5SWRlbnRpZmllciBh
bG9uZy4KKworCiAyMDIxLTA5LTI3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CiAKICAgICAgICAgVm9yYmlzIGRlY29kZXIgY2FuJ3QgYmUgaW5zdGFudGlhdGVkIC0gUmVtb3Zl
IHdvcmthcm91bmQgYWRkZWQgaW4gYnVnIDIyODEzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVD
b2NvYS5oCmluZGV4IDc2Zjc5NzZmYmVlZDAxZDM4ZWNjZjI2MDc4MzIwMGExZWZjMjhjNzAuLjg3
YjJiMWNjZWNiOTVlNmVhMjI2N2NiMzViZjZhMTJlMmU2YTc1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKQEAgLTgzLDEwICs4MywxOCBAQAogI2RlZmluZSBFTkFCTEVfQVBQ
TEVfUEFZX1JFQ1VSUklOR19MSU5FX0lURU0gMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFC
TEVfQVBQTEVfUEFZX1JFTU9URV9VSSkgJiYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisj
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0o
V0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVBQ
TEVfUEFZX1JFTU9URV9VSSkKICNkZWZpbmUgRU5BQkxFX0FQUExFX1BBWV9SRU1PVEVfVUkgMQog
I2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1ND
RU5FKSAmJiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjZGVmaW5lIEVOQUJMRV9BUFBM
RV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUgMQorI2VuZGlmCisKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBMRV9QQVlfU0VT
U0lPTl9WMTEpICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTQwNTAwKSkKICNkZWZpbmUgRU5BQkxFX0FQUExFX1BBWV9TRVNT
SU9OX1YxMSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBkMTYxY2Y5NmM0
YzVkOWFkMTMwOTQ5NjJlMTk5MWE1ZjRlZmQ4MGI0Li5lYmJmNmY1ZTEyM2RmZDhkNWM3NTVhMWU5
YWI4OGMyMmQxNGNhNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zNTUsNiArMzU1
LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgVUlWaWV3Q29udHJvbGxl
ciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1P
VEVfVUlfVVNFU19TQ0VORSkKKyAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdX
aW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CisjZW5kaWYKICAgICBjb25zdCBT
dHJpbmcmIHBheW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5
bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NJT1MubW0KaW5kZXggZGNiYzUzZWQ2YmJjMTNiM2ZhOGU4MmZlYjFmY2QxYjQ5MWQ0NTkzZC4u
Nzg0YTNhYmI0MDEyZGNhOTdkMmE0NThiNDZjOTBmODA3YjU4ZjRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2lt
cG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCkBAIC01Miw2ICs1MywxMyBAQCBVSVZpZXdDb250cm9sbGVyICpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZQogICAg
IHJldHVybiBuaWw7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1ND
RU5FKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5h
dG9yUHJlc2VudGluZ1dpbmRvd1NjZW5lSWRlbnRpZmllcihXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbmV0d29ya1Byb2Nlc3MoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkdldFdpbmRvd1NjZW5lSWRlbnRpZmllckZvclBheW1lbnRQcmVzZW50
YXRpb24od2ViUGFnZVByb3h5SWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKyNlbmRpZgorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3Rh
dGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KG5ldHdvcmtTZXNzaW9uKCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlci5oCmluZGV4IDJlZmNiMjAwZTgwNDU2N2JlNTMyMDkyMGI3MWIzYzU2ZjZi
MjAwNjUuLjA3MmUxZGI4NzcxZjA5MWJjNTA0NzhjYzY1OTY3NTQzZTMxODU3NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgKQEAgLTg1LDYgKzg1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzbWlzcygpID0gMDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1
YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgPSAwOworI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NF
TkUpCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnRJblNjZW5lKGNvbnN0IFN0cmluZyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICBjb25zdCBTdHJpbmcmIHNjZW5l
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NlbmVJZGVudGlmaWVyOyB9CisjZW5kaWYK
ICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC05NSw2ICs5OSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2aXJ0dWFsIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAqcGxhdGZvcm1EZWxlZ2F0
ZSgpID0gMDsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBUFBMRV9QQVlf
UkVNT1RFX1VJX1VTRVNfU0NFTkUpCisgICAgU3RyaW5nIG1fc2NlbmVJZGVudGlmaWVyOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgQ2xpZW50JiBtX2NsaWVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlci5oCmluZGV4IGE3Y2E3Y2E3OTQyNWE4YjQ3YjBmYjBjYjQxNTM4NWRm
MDZjZTE4YjcuLjJmMjM4ZGU2MWZkOGVlM2Q5MmYwOTBjZGQzNDU0YWM3MDQ5Mjc4NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC00OSw2ICs0OSw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1ND
RU5FKQorICAgIHZvaWQgcHJlc2VudEluU2NlbmUoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisjZW5kaWYKICNlbmRpZgogCiAgICAgUmV0YWlu
UHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJvbGxl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbQppbmRleCA1ZTcyNTAxMmQwMzQw
ZDAyZDIyZTA5OWQ5ZTg5NWZlOTBkODNkYzM0Li4zOWFhNDJhZWY1OWMzOGZmMjY4N2I5MTE3NzVm
YmRkMDdlMzYxNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCkBAIC0x
NTMsNiArMTUzLDE0IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6
cHJlc2VudChVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmllCiAgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1ND
RU5FKQordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpwcmVzZW50SW5T
Y2VuZShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKK30KKyNlbmRpZgorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9X
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaAppbmRleCA2NmJmNzBlMTMxN2YyZDM5MjEx
MzgzYjdmYTUxY2Y2ZTIxNjkzODQ5Li5hYTljODExMDQ4YmE5OGQ2OTQzMGVjMzc0OGMxZTEyNGJl
NmZkYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgKQEAgLTUxLDYgKzUxLDcgQEAgdXNp
bmcgRGlkQ2hhbmdlQ291cG9uQ29kZUNvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVu
dFJlcXVlc3RDb3Vwb25Db2RlVXAKIAogQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUgOiBOU09iamVjdCB7CiAgICAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IF9y
ZXF1ZXN0OworICAgIFdlYWtQdHI8V2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cj4gX3ByZXNlbnRlcjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCmluZGV4IDU4ZGRjMDg2M2VhZTdmNDUxNzczZmMw
ODUwODAzOGIwZmQ0ODBkMDkuLmE5NWJmNDM0ODRhZjc0MGE0ODlmMDBiZjczNGEwMjExNDE4YTVj
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCkBAIC0zNyw3ICszNyw2IEBACiAgICAg
UmV0YWluUHRyPE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4+IF9zdW1tYXJ5SXRlbXM7
CiAgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPj4gX3NoaXBwaW5nTWV0
aG9kczsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Nlc3Npb25FcnJvcjsKLSAgICBXZWFrUHRy
PFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IF9wcmVzZW50ZXI7CiAgICAg
V2ViS2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiBfZGlkQXV0aG9yaXplUGF5bWVu
dENvbXBsZXRpb247CiAgICAgV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxl
dGlvbiBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb247CiAgICAgV2ViS2l0OjpE
aWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENv
bXBsZXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9QYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1Bh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5oCmluZGV4IDY2NjdhODA4ZGIyNDQzZTc1NmZh
ODE1MDNmOTU5NTkwZTc5MGEyOTAuLmZjMjdjZGYyOWUxYzVjNDkwYjk3ZTY3NDI3MjRiODNlZTFh
ZmYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRo
b3JpemF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1Bh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5oCkBAIC00OSw2ICs0OSwxMCBAQCBwcml2YXRl
OgogCiAgICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPiBtX2Nv
bnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFdLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVy
RGVsZWdhdGU+IG1fZGVsZWdhdGU7CisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9V
U0VTX1NDRU5FKQorICAgIHZvaWQgcHJlc2VudEluU2NlbmUoY29uc3QgU3RyaW5nJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5
bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9p
b3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tCmluZGV4IGRmOTk3NzU1ODUzMWFh
MTU3OWMwZDk0YWFkYzExMzFkMzFlNzY5N2IuLjg1NDY4Y2NkZTg2ZDJmYWE1NDUyNTE2OWQ5MjBh
NjYzZWZlMDU3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1l
bnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KQEAgLTEwNSw2ICsxMDUsMTUg
QEAKICAgICBbc2VsZiBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpzZXNzaW9uQmxvY2tdOwog
fQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKy0gKE5TU3Ry
aW5nICopcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudEF1dGhvcml6YXRpb25D
b250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIK
K3sKKyAgICBpZiAoIV9wcmVzZW50ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
IG5zU3RyaW5nTmlsSWZFbXB0eShfcHJlc2VudGVyLT5zY2VuZUlkZW50aWZpZXIoKSk7Cit9Cisj
ZW5kaWYKKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzMSw2ICsxNDAsOSBAQCB2
b2lkIFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6ZGlzbWlzcygpCiAgICAgbV9jb250
cm9sbGVyID0gbmlsOwogICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwogICAgIG1fZGVsZWdh
dGUgPSBuaWw7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAg
ICBtX3NjZW5lSWRlbnRpZmllciA9IG51bGxTdHJpbmcoKTsKKyNlbmRpZgogfQogCiB2b2lkIFBh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6cHJlc2VudChVSVZpZXdDb250cm9sbGVyICos
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
NDMsNiArMTU1LDE0IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpwcmVz
ZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsCiAgICAgfSkuZ2V0KCldOwog
fQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKK3ZvaWQgUGF5
bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpwcmVzZW50SW5TY2VuZShjb25zdCBTdHJpbmcm
IHNjZW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBtX3NjZW5lSWRlbnRpZmllciA9IHNjZW5lSWRlbnRpZmllcjsK
KyAgICBwcmVzZW50KG5pbCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKFBBU1NLSVQpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCmluZGV4IDcxZDU5ZDY3ODkxY2RhZGY5OTJjNmYxMTIwNTA2ODE5MGFjNGI2ODYuLjhmYmNl
MzI0ZmU5YTJhMDFkZDczMDYzMGI4N2I3NzQzMGY5YzNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0xMjkxLDYgKzEyOTEsMTAgQEAgdHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiBAZW5kCiAjZW5kaWYK
IAorQGludGVyZmFjZSBVSVNjZW5lICgpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TU3RyaW5nICpfc2NlbmVJZGVudGlmaWVyOworQGVuZAorCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAogI2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2VkVGV4dFJl
Y3RzICgxIDw8IDUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggZWE0ODZkMzBiZWI4MTI5
NmE2Njg1ODE5MzMwZWJkMzEwYWEzNTIzMi4uYzFlYzgzNmE4NjU4ODc0YTRjNGJjM2QyOTczOTYz
ODIwY2M2OGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChtZXJj
aGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0
aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVl
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYgY29vcmRpbmF0
b3IgPSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBjb29yZGluYXRv
ci0+ZGlkUmVhY2hGaW5hbFN0YXRlKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
ZGVzdGluYXRpCiAgICAgZm9yIChjb25zdCBhdXRvJiBsaW5rSWNvblVSTFN0cmluZyA6IGxpbmtJ
Y29uVVJMU3RyaW5ncykKICAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChVUkwoVVJMKCksIGxp
bmtJY29uVVJMU3RyaW5nKSk7CiAKLSAgICBwbGF0Zm9ybVNob3dQYXltZW50VUkob3JpZ2luYXRp
bmdVUkwsIGxpbmtJY29uVVJMcywgcGF5bWVudFJlcXVlc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oYm9vbCByZXN1bHQpIHsKKyAgICBwbGF0Zm9ybVNob3dQYXltZW50
VUkod2ViUGFnZVByb3h5SUQsIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVSTHMsIHBheW1lbnRS
ZXF1ZXN0LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgcmVzdWx0
KSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IGY0ZTI3ZmZlYTg0OWJiYmJjNjkzNmM5ZjQ0ZTk0MWIwYmI3ZGZk
MGEuLjc1ZTc1ZGQ0M2MxY2RiOTUzM2MyODg5NDBkNDYyMmRlZmI3YzE5MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXlt
ZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC05MSw2ICs5Miw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIElQQzo6UmVjZWl2ZXJO
YW1lKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmlydHVhbCBVSVZp
ZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisjaWYgRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdXaW5kb3dTY2VuZUlkZW50aWZpZXIoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwor
I2VuZGlmCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JD
VERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVy
KFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSA9IDA7CiAj
ZW5kaWYKQEAgLTEyNyw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5h
dGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5n
VVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5
U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFVwZGF0ZT4mJik7CkBAIC0xNTUsNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtQ2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcm
IG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1P
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyJiwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9y
PFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHBs
YXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1l
cmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVw
ZGF0ZT4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3ZDg5YTVi
MTEzZTk0NDhlNmEyM2U5ZDRhNzVhYTM5MWE1YzkxZmE5Li4yNGQxM2UxNGQ5N2M1YWVlOTZiYjVk
MzMwNmQ1NzljZjVkODBlOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChT
dHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyLCBTdHJpbmcgZG9tYWluTmFtZSkgLT4gKGJvb2wgY2Fu
TWFrZVBheW1lbnRzKSBBc3luYwogICAgIE9wZW5QYXltZW50U2V0dXAoU3RyaW5nIG1lcmNoYW50
SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAot
ICAgIFNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzdGluYXRpb25JRCwg
U3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0
cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1
ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5
bmNocm9ub3VzCiAgICAgQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogICAgIENvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBw
aW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0
ZT4gdXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9z
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDQxMDg0
MDBkMTZmYjBjMTVhYjhlYmYwOGM0MjAyZGZhOGRhOTU4NTQuLjk5NTUyNzgxMDNmYjE3YjVkMDY3
NDg4MDg0MDRmZmEyNjVmNWU0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1DYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVS
TFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBy
ZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KGNvbnN0IFdlYlBhZ2VQcm94eUlkZW50aWZpZXImIHdlYlBhZ2VQcm94eUlELCBjb25zdCBVUkwm
IG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvIHBheW1lbnRSZXF1ZXN0ID0gcGxhdGZvcm1QYXltZW50UmVxdWVzdChvcmlnaW5hdGluZ1VS
TCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIApAQCAtNTUsNyArNTUsMTUgQEAgdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwKICAgICBpZiAoIW1fYXV0aG9yaXphdGlvblByZXNlbnRlcikK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIAorI2lmIEVOQUJMRShB
UFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCisgICAgbV9jbGllbnQucGF5bWVudENvb3Jk
aW5hdG9yUHJlc2VudGluZ1dpbmRvd1NjZW5lSWRlbnRpZmllcih3ZWJQYWdlUHJveHlJRCwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBTdHJpbmcmIHNjZW5lSUQpIG11dGFibGUgeworICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9hdXRob3JpemF0aW9u
UHJlc2VudGVyLT5wcmVzZW50SW5TY2VuZShzY2VuZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh3ZWJQYWdlUHJveHlJRCk7
CiAgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5wcmVzZW50KG1fY2xpZW50LnBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUhpZGVQYXltZW50VUkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tCmluZGV4IGRjNjNiZGYxMjAwY2QyZDdlOWU1NmJjZTEzNjliYTE1MGZjZTA2MWUuLmVl
MDExMGM2MjQ4YTIwNDI0OGE5Nzc5YTZlNWMwOTdhMjY5ZjExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3Rv
cjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYlBhZ2VQcm94eUlkZW50aWZpZXImLCBjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIVBBTDo6aXNQYXNzS2l0RnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNjVhNjE5ZDdh
OGFlODFhNjAzM2IwNjcxMTQ3ZTAxYWNjZGQ0MTdmLi5kM2UyNjZkNWY2YTkyYTY2MTllNTAxYTk4
ZDk4OTRmZDE3ODhmODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKICNpbmNsdWRlICJTZWNLZXlQcm94eVN0b3Jl
LmgiCkBAIC0xMTc0LDYgKzExNzUsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2kKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0V2luZG93U2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudFBy
ZXNlbnRhdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
dWxsU3RyaW5nKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5k
bGVyKHBhZ2UtPnBhZ2VDbGllbnQoKS5zY2VuZUlEKCkpOworfQorI2VuZGlmCisKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJv
b2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0NjBmYjMy
ZTgxMGUyZmZiMmM0OWI4NTg5NzkyNjM2YjdiZWEwZDhhLi44YTRhYmUwZGMwNTJhM2JmODYyYmZj
N2EwNDg2OTA4YzFhOGE3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjU3LDYgKzI1Nyw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldEFwcEJvdW5kRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCisg
ICAgdm9pZCBnZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXltZW50UHJlc2VudGF0aW9uKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7
CisjZW5kaWYKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CiAgICAgdm9pZCBzZW5kUHJl
cGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBkNjc0OTI1YzU4MWRiZDlmMGE3NjlhNjcwMDM2ZDljNmRlZjM0MDcxLi43
OWU4NmRlOThjMDRiZGRiZmQzZTVmMjBhYjMxMTk5MjJlZjE2ZDAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCkBAIC03Niw0ICs3Niw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFVTRShTT1VQKQogICAgIERpZEV4Y2VlZE1l
bW9yeUxpbWl0KCkKICNlbmRpZgorCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNF
U19TQ0VORSkKKyAgICBHZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXltZW50UHJlc2VudGF0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJZGVudGlmaWVy
KSAtPiAoU3RyaW5nIHNjZW5lSUQpIEFzeW5jCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAppbmRleCA1OTk4Yzk0MzQwY2Q1OTM2ZGMwZWMyMmE3MTAzZTgwMzZlN2Y3
YThmLi43YTFhMzg3NmYxYjc3MDgxZjFiZDIyODE5NWQ2OThmYTBmZmNkODA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00OTgsNiArNDk4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbnRlbnRWaWV3QmFja2dyb3VuZENv
bG9yKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHNjZW5lSUQoKSA9IDA7CiAjZW5kaWYKIAog
ICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggYmUxMDEwNWYxNjEzYmNjNDllNzcyNWU4MTg1NTFlM2I1ZTQwY2Vm
My4uMTljZDNlN2M3YmE4YjY3OTU3MzY3ODc3YjRjODAzNzQyNWYyZDA0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI0ODksNiArMjQ4OSw5IEBAIHByaXZhdGU6
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworI2lmIEVO
QUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCisgICAgdm9pZCBwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nV2luZG93U2NlbmVJZGVudGlmaWVyKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwor
I2VuZGlmCiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0
aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1l
bnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDdmOTcwOWUzYzk3
YzhiYTA2NGVlYzg3ZmJmMGNjMDkxNDM1NzBiZDMuLjBjZThlZmYzNGY3ZjcyMGU2ODA4MGI1MDZl
MzkwNDk2MzMzYzY5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCkBAIC0zMDAsNiArMzAwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgV2ViQ29yZTo6Q29sb3IgY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IoKSBmaW5hbDsKKyAg
ICBTdHJpbmcgc2NlbmVJRCgpIGZpbmFsOwogCiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmll
dz4gbV9jb250ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3Vu
ZG9UYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KaW5kZXggNmYzOGMzOTU4MTgyMmQxMDY3YjFhZjViNzQyYTg4M2RmZjkxYjhkMC4u
OWMzMjQzNGI4MDEzYjlmYzNmYmE4Yjk0NjlkNjY4NjIzMTlmYTNjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTAyMyw2ICsx
MDIzLDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RTY3JvbGxUb1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hCiAgICAgW21fY29udGVudFZpZXcgX3Nj
cm9sbFRvUmVjdDp0YXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIG1pbmltdW1TY3JvbGxEaXN0
YW5jZTowXTsKIH0KIAorU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpzY2VuZUlEKCkKK3sKKyAgICBy
ZXR1cm4gW21fY29udGVudFZpZXcgd2luZG93XS53aW5kb3dTY2VuZS5fc2NlbmVJZGVudGlmaWVy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQppbmRleCA2ZjRkYmUzYTM4NzJiNjcxMzEwMmY5OTE1OGY4ODRkZTc0NGViNGYzLi4zMTIyY2E1
NWVhODQxMGQ2YzFmZTg0MGRmOWUzNWJhODY3M2FmMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEyMzgsNiArMTIzOCwxNCBAQCBV
SVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcihjb25zdAogICAgIHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcigpOwogfQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNF
U19TQ0VORSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
V2luZG93U2NlbmVJZGVudGlmaWVyKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbFN0cmluZygp
KTsKK30KKyNlbmRpZgorCiBjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikKIHsKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRp
b24oKS5kYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDJiMDgwYzkxM2JmYjUwZDQ3NjljMjVmNDgwZTYwOTk2YjY0M2QxM2YuLjQ2MTZkMTJhMjk2
MjBmOTBkMGI0Y2M2Y2NmZDUwZjI4OTFlYjZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50
VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG8KICAgICAgICAgbGlua0lj
b25VUkxTdHJpbmdzLmFwcGVuZChsaW5rSWNvblVSTC5zdHJpbmcoKSk7CiAKICAgICBib29sIHJl
c3VsdDsKLSAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6U2hvd1BheW1lbnRVSShtX3dlYlBhZ2UuaWRlbnRpZmllcigpLCBvcmlnaW5hdGluZ1VS
TC5zdHJpbmcoKSwgbGlua0ljb25VUkxTdHJpbmdzLCBwYXltZW50UmVxdWVzdCksIE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6U2hvd1BheW1lbnRVSTo6UmVwbHkocmVzdWx0
KSkpCisgICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OlNob3dQYXltZW50VUkobV93ZWJQYWdlLmlkZW50aWZpZXIoKSwgbV93ZWJQYWdlLndlYlBh
Z2VQcm94eUlkZW50aWZpZXIoKSwgb3JpZ2luYXRpbmdVUkwuc3RyaW5nKCksIGxpbmtJY29uVVJM
U3RyaW5ncywgcGF5bWVudFJlcXVlc3QpLCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OlNob3dQYXltZW50VUk6OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439684</attachid>
            <date>2021-09-29 16:56:51 -0700</date>
            <delta_ts>2021-09-30 10:48:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230874-20210929165650.patch</filename>
            <type>text/plain</type>
            <size>32925</size>
            <attacher>eddy_wong</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE1ZTJlY2RiNDU1Y2E2NWU2MDZkOWM1
ZmIzMjNiNWFmNTdjMDcyMWEuLjM4N2QwOWY4MjM3MWNjM2Q4N2EyZDY2NTFlYTVjMmJlZjhhMDg3
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMjggIEVkZHkgV29uZyAgPGVkZHlfd29u
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVy
Rm9yUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyIGRlbGVnYXRlIGNhbGwgZnJvbSBQYXNz
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA4
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6IERlZmluZXMgbmV3IGZsYWcgRU5BQkxFX0FQUExFX1BB
WV9SRU1PVEVfVUlfVVNFU19TQ0VORQorCiAyMDIxLTA5LTI3ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgVm9yYmlzIGRlY29kZXIgY2FuJ3QgYmUgaW5zdGFu
dGlhdGVkIC0gUmVtb3ZlIHdvcmthcm91bmQgYWRkZWQgaW4gYnVnIDIyODEzOQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1OTc4NDdmMTQ2NDNlZGJiM2I0NGYxZGQyZDk0MzE2MmE1ZWEwY2M1Li4xYjM3OTU4OWU3MTQ0
MmJkNmI1MTNiMmZkYjEzM2U4MmUwZWE5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisy
MDIxLTA5LTI4ICBFZGR5IFdvbmcgIDxlZGR5X3dvbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFk
b3B0IHByZXNlbnRhdGlvblNjZW5lSWRlbnRpZmllckZvclBheW1lbnRBdXRob3JpemF0aW9uQ29u
dHJvbGxlciBkZWxlZ2F0ZSBjYWxsIGZyb20gUGFzc0tpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbTogICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFdpbmRvd1NjZW5lSWRlbnRpZmllckZv
clBheW1lbnRQcmVzZW50YXRpb24pOiBJbXBsZW1lbnRzIGdldFdpbmRvd1NjZW5lSWRlbnRpZmll
ckZvclBheW1lbnRQcmVzZW50YXRpb24oKSBieSBhc2tpbmcgcGFyZW50IHByb2Nlc3MgKFVJUHJv
Y2VzcykgZm9yIHNjZW5lIElEIHZpYSBuZXcgWFBDIG1lc3NhZ2UuCisgICAgICAgICogUGxhdGZv
cm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaDoKKyAgICAgICAgKFdlYktp
dDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OnNjZW5lSWRlbnRpZmllciBjb25zdCk6
IEhvbGRzIHRlbXBvcmFyaWx5IHRoZSBzY2VuZSBJRCB3ZSdkIGxpa2UgdG8gdXNlIHdoZW4gcHJl
c2VudGluZyB0aGUgcGF5bWVudCBzaGVldCwgdG8gYmUgcmVhZCBieSBXS1BheW1lbnRBdXRob3Jp
emF0aW9uQ29udHJvbGxlckRlbGVnYXRlLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDogRGVjbGFyZXMgcHJlc2VudEluU2NlbmUo
KSB3aGljaCBpcyBqdXN0IGZvciBjb25mb3JtYW5jZSB0byBQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlcgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6OnByZXNlbnRJblNjZW5lKTogUHJvdmlkZXMgYSBkdW1teSBpbXBsZW1lbnRh
dGlvbiBmb3IgcHJlc2VudEluU2NlbmUoKSBmb3IgY29uZm9ybWFuY2UuCisgICAgICAgICogUGxh
dGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmg6IFN1cmZhY2VzIF9w
cmVzZW50ZXIgZm9yIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJ3MgdXNlLgorICAgICAg
ICAqIFBsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbTogRGl0
dG8uCisgICAgICAgICogUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyRGVsZWdh
dGUgcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudEF1dGhvcml6YXRpb25Db250
cm9sbGVyOl0pOiBJbXBsZW1lbnRzIHRoZSBuZXcgUGFzc0tpdCBkZWxlZ2F0ZSBjYWxsIHJldHVy
bmluZyB0aGUgc2NlbmUgSUQgZm9yIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OlBh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6ZGlzbWlzcyk6IEhvdXNlIGtlZXBpbmcuCisg
ICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6cHJlc2VudElu
U2NlbmUpOiBTdG9yZXMgdGhlIHNjZW5lIElEIGZyb20gdGhlIGNhbGxlciBmb3IgV0tQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZSB0byByZWFkIGZyb20uCisgICAgICAgICog
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDogCisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKTogUmVs
YXlzIHdlYlBhZ2VQcm94eUlEIGZvciB1c2UgYnkgVUlQcm9jZXNzIHVsdGltYXRlbHkgdG8gbG9v
ayB1cCB0aGUgY29ycmVjdCBXZWJQYWdlUHJveHkuCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisg
ICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSSk6IFByZXNlbnRzIHBheW1lbnQgc2hlZXQgd2l0aCBzY2VuZSBJRCBp
ZiBhcHBsaWNhYmxlLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBTaWduYXR1cmUgY2hhbmdlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJG
b3JQYXltZW50UHJlc2VudGF0aW9uKTogTG9va3MgdXAgdGhlIGNvcnJlY3QgV2ViUGFnZVByb3h5
IGFuZCByZXRyaWV2ZSB0aGUgc2NlbmUgSUQgZm9yIHRoZSBjYWxsZXIgKE5ldHdvcmtQcm9jZXNz
KS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6IEFkZHMg
YWJpbGl0eSB0byByZXRyaWV2ZSBzY2VuZSBJRC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2NlbmVJRCk6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFdpbmRvd1NjZW5lSWRlbnRpZmllckZvclBheW1lbnRQcmVzZW50YXRpb24p
OiBEdW1teSBpbXBsZW1lbnRhdGlvbiBmb3IgY29uZm9ybWFuY2UgdG8gV2ViUGFnZVByb3h5LiBX
ZWJQcm9jZXNzIGRvZXMgbm90IHRhbGsgdG8gVUlQcm9jZXNzIGRpcmVjdGx5IGZvciB0aGlzIGZ1
bmN0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5
bWVudFVJKTogUGFzc2VzIHRoZSBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGFsb25nLgorCisKIDIw
MjEtMDktMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBW
b3JiaXMgZGVjb2RlciBjYW4ndCBiZSBpbnN0YW50aWF0ZWQgLSBSZW1vdmUgd29ya2Fyb3VuZCBh
ZGRlZCBpbiBidWcgMjI4MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXgg
NzZmNzk3NmZiZWVkMDFkMzhlY2NmMjYwNzgzMjAwYTFlZmMyOGM3MC4uODdiMmIxY2NlY2I5NWU2
ZWEyMjY3Y2IzNWJmNmExMmUyZTZhNzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaApAQCAtODMsMTAgKzgzLDE4IEBACiAjZGVmaW5lIEVOQUJMRV9BUFBMRV9QQVlfUkVDVVJS
SU5HX0xJTkVfSVRFTSAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBMRV9QQVlf
UkVNT1RFX1VJKSAmJiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYm
ICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikKKworI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBMRV9QQVlfUkVNT1RF
X1VJKQogI2RlZmluZSBFTkFCTEVfQVBQTEVfUEFZX1JFTU9URV9VSSAxCiAjZW5kaWYKIAorI2lm
ICFkZWZpbmVkKEVOQUJMRV9BUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpICYmIEhBVkUo
VUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNkZWZpbmUgRU5BQkxFX0FQUExFX1BBWV9SRU1PVEVf
VUlfVVNFU19TQ0VORSAxCisjZW5kaWYKKworI2VuZGlmIC8vICFQTEFURk9STShNQUMpICYmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShB
UFBMRVRWKQorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YxMSkgJiYg
KChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxNDA1MDApKQogI2RlZmluZSBFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVjExIDEKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQxNjFjZjk2YzRjNWQ5YWQxMzA5NDk2
MmUxOTkxYTVmNGVmZDgwYjQuLmNhZTU0YTZlM2JiYTAwYTYxM2U1ZDhkMzM4Nzg5Y2FhMzIwMzRl
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1NSw2ICszNTUsOSBAQCBwcml2YXRl
OgogICAgIC8vIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQKICAgICBJUEM6OkNv
bm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1ND
RU5FKQorICAgIHZvaWQgZ2V0V2luZG93U2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudFByZXNlbnRh
dGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKSBmaW5hbDsKKyNlbmRpZgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JD
VERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQppbmRleCBk
Y2JjNTNlZDZiYmMxM2IzZmE4ZTgyZmViMWZjZDFiNDkxZDQ1OTNkLi5lNTA3ODIzMzlhOTcxMGE1
ZTc0ZDJlM2YyYWMxZDcxYmRkNzExMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0lPUy5tbQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKQEAgLTUy
LDYgKzUzLDEzIEBAIFVJVmlld0NvbnRyb2xsZXIgKk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmllCiAgICAgcmV0dXJuIG5pbDsKIH0K
IAorI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXlt
ZW50UHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBuZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6R2V0
V2luZG93U2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudFByZXNlbnRhdGlvbih3ZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlmCisKIGNv
bnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGlu
YXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvbkNvY29hKj4obmV0d29ya1Nlc3Npb24oKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgKaW5k
ZXggMmVmY2IyMDBlODA0NTY3YmU1MzIwOTIwYjcxYjNjNTZmNmIyMDA2NS4uMDcyZTFkYjg3NzFm
MDkxYmM1MDQ3OGNjNjU5Njc1NDNlMzE4NTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaApA
QCAtODUsNiArODUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzKCkgPSAw
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHByZXNlbnQoVUlW
aWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Cisj
aWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICB2aXJ0dWFsIHZv
aWQgcHJlc2VudEluU2NlbmUoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgPSAwOworICAgIGNvbnN0IFN0cmluZyYgc2NlbmVJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zY2VuZUlkZW50aWZpZXI7IH0KKyNlbmRpZgogI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKQEAgLTk1LDYgKzk5LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgPSAwOwogCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VO
RSkKKyAgICBTdHJpbmcgbV9zY2VuZUlkZW50aWZpZXI7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBDbGllbnQmIG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgK
aW5kZXggYTdjYTdjYTc5NDI1YThiNDdiMGZiMGNiNDE1Mzg1ZGYwNmNlMThiNy4uMmYyMzhkZTYx
ZmQ4ZWUzZDkyZjA5MGNkZDM0NTRhYzcwNDkyNzg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyLmgKQEAgLTQ5LDYgKzQ5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3Mo
KSBmaW5hbDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcHJlc2VudChVSVZp
ZXdDb250cm9sbGVyICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwor
I2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCisgICAgdm9pZCBwcmVz
ZW50SW5TY2VuZShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBmaW5hbDsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8UEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLm1tCmluZGV4IDVlNzI1MDEyZDAzNDBkMDJkMjJlMDk5ZDllODk1ZmU5
MGQ4M2RjMzQuLjM5YWE0MmFlZjU5YzM4ZmYyNjg3YjkxMTc3NWZiZGQwN2UzNjE2YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KQEAgLTE1Myw2ICsxNTMsMTQgQEAgdm9p
ZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpwcmVzZW50KFVJVmlld0NvbnRy
b2xsZXIgKnByZXNlbnRpbmdWaWUKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAor
I2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCit2b2lkIFBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OnByZXNlbnRJblNjZW5lKGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
fQorI2VuZGlmCisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5oCmluZGV4IDY2YmY3MGUxMzE3ZjJkMzkyMTEzODNiN2ZhNTFjZjZlMjE2OTM4
NDkuLmFhOWM4MTEwNDhiYTk4ZDY5NDMwZWMzNzQ4YzFlMTI0YmU2ZmRiMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUuaApAQCAtNTEsNiArNTEsNyBAQCB1c2luZyBEaWRDaGFuZ2VDb3Vwb25D
b2RlQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdENvdXBvbkNvZGVV
cAogCiBAaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0
IHsKICAgICBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gX3JlcXVlc3Q7CisgICAgV2Vha1B0
cjxXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBfcHJlc2VudGVyOwogfQog
CiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0KaW5kZXggNThkZGMwODYzZWFlN2Y0NTE3NzNmYzA4NTA4MDM4YjBmZDQ4MGQwOS4u
YTk1YmY0MzQ4NGFmNzQwYTQ4OWYwMGJmNzM0YTAyMTE0MThhNWMwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUubW0KQEAgLTM3LDcgKzM3LDYgQEAKICAgICBSZXRhaW5QdHI8TlNBcnJheTxQ
S1BheW1lbnRTdW1tYXJ5SXRlbSAqPj4gX3N1bW1hcnlJdGVtczsKICAgICBSZXRhaW5QdHI8TlNB
cnJheTxQS1NoaXBwaW5nTWV0aG9kICo+PiBfc2hpcHBpbmdNZXRob2RzOwogICAgIFJldGFpblB0
cjxOU0Vycm9yPiBfc2Vzc2lvbkVycm9yOwotICAgIFdlYWtQdHI8V2ViS2l0OjpQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcj4gX3ByZXNlbnRlcjsKICAgICBXZWJLaXQ6OkRpZEF1dGhvcml6
ZVBheW1lbnRDb21wbGV0aW9uIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbjsKICAgICBX
ZWJLaXQ6OkRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uIF9kaWRSZXF1ZXN0TWVy
Y2hhbnRTZXNzaW9uQ29tcGxldGlvbjsKICAgICBXZWJLaXQ6OkRpZFNlbGVjdFBheW1lbnRNZXRo
b2RDb21wbGV0aW9uIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25D
b250cm9sbGVyLmgKaW5kZXggNjY2N2E4MDhkYjI0NDNlNzU2ZmE4MTUwM2Y5NTk1OTBlNzkwYTI5
MC4uZTY2NzBjZWQyMmJkOTM2NDVmOGYwZTg5M2MxYmY2NDY1NjNiNTJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25D
b250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDkgQEAgcHJpdmF0ZToKICAgICBXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgKnBsYXRmb3JtRGVsZWdhdGUoKSBmaW5hbDsKICAgICB2b2lkIGRp
c21pc3MoKSBmaW5hbDsKICAgICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
X1JFTU9URV9VSV9VU0VTX1NDRU5FKQorICAgIHZvaWQgcHJlc2VudEluU2NlbmUoY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisjZW5kaWYKIAog
ICAgIFJldGFpblB0cjxQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4gbV9jb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlckRlbGVn
YXRlPiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3Mv
UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tCmluZGV4IGRmOTk3NzU1ODUz
MWFhMTU3OWMwZDk0YWFkYzExMzFkMzFlNzY5N2IuLjg1NDY4Y2NkZTg2ZDJmYWE1NDUyNTE2OWQ5
MjBhNjYzZWZlMDU3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1Bh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KQEAgLTEwNSw2ICsxMDUs
MTUgQEAKICAgICBbc2VsZiBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpzZXNzaW9uQmxvY2td
OwogfQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKy0gKE5T
U3RyaW5nICopcHJlc2VudGF0aW9uU2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudEF1dGhvcml6YXRp
b25Db250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xs
ZXIKK3sKKyAgICBpZiAoIV9wcmVzZW50ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIG5zU3RyaW5nTmlsSWZFbXB0eShfcHJlc2VudGVyLT5zY2VuZUlkZW50aWZpZXIoKSk7Cit9
CisjZW5kaWYKKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzMSw2ICsxNDAsOSBA
QCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6ZGlzbWlzcygpCiAgICAgbV9j
b250cm9sbGVyID0gbmlsOwogICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwogICAgIG1fZGVs
ZWdhdGUgPSBuaWw7CisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkK
KyAgICBtX3NjZW5lSWRlbnRpZmllciA9IG51bGxTdHJpbmcoKTsKKyNlbmRpZgogfQogCiB2b2lk
IFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcjo6cHJlc2VudChVSVZpZXdDb250cm9sbGVy
ICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0xNDMsNiArMTU1LDE0IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpw
cmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsCiAgICAgfSkuZ2V0KCld
OwogfQogCisjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKK3ZvaWQg
UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyOjpwcmVzZW50SW5TY2VuZShjb25zdCBTdHJp
bmcmIHNjZW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3NjZW5lSWRlbnRpZmllciA9IHNjZW5lSWRlbnRpZmll
cjsKKyAgICBwcmVzZW50KG5pbCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKFBBU1NLSVQpICYm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtp
dFNQSS5oCmluZGV4IDcxZDU5ZDY3ODkxY2RhZGY5OTJjNmYxMTIwNTA2ODE5MGFjNGI2ODYuLjhm
YmNlMzI0ZmU5YTJhMDFkZDczMDYzMGI4N2I3NzQzMGY5YzNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0xMjkxLDYgKzEyOTEsMTAgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TVUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiBAZW5kCiAjZW5k
aWYKIAorQGludGVyZmFjZSBVSVNjZW5lICgpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TU3RyaW5nICpfc2NlbmVJZGVudGlmaWVyOworQGVuZAorCiAjZW5kaWYgLy8gVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKIAogI2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2VkVGV4
dFJlY3RzICgxIDw8IDUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggZWE0ODZkMzBiZWI4
MTI5NmE2Njg1ODE5MzMwZWJkMzEwYWEzNTIzMi4uYzFlYzgzNmE4NjU4ODc0YTRjNGJjM2QyOTcz
OTYzODIwY2M2OGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0
IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cCht
ZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBjb25zdCBTdHJpbmcmIG9yaWdp
bmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJl
cXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYgY29vcmRp
bmF0b3IgPSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBjb29yZGlu
YXRvci0+ZGlkUmVhY2hGaW5hbFN0YXRlKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgZGVzdGluYXRpCiAgICAgZm9yIChjb25zdCBhdXRvJiBsaW5rSWNvblVSTFN0cmluZyA6IGxp
bmtJY29uVVJMU3RyaW5ncykKICAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChVUkwoVVJMKCks
IGxpbmtJY29uVVJMU3RyaW5nKSk7CiAKLSAgICBwbGF0Zm9ybVNob3dQYXltZW50VUkob3JpZ2lu
YXRpbmdVUkwsIGxpbmtJY29uVVJMcywgcGF5bWVudFJlcXVlc3QsIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0oYm9vbCByZXN1bHQpIHsKKyAgICBwbGF0Zm9ybVNob3dQYXlt
ZW50VUkod2ViUGFnZVByb3h5SUQsIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVSTHMsIHBheW1l
bnRSZXF1ZXN0LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgcmVz
dWx0KSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCmluZGV4IGY0ZTI3ZmZlYTg0OWJiYmJjNjkzNmM5ZjQ0ZTk0MWIwYmI3
ZGZkMGEuLmMzYmNmMTQyNjgwNDgwMWNhZDVhZDc2MzgzNDFkNWNhM2JjZTQ3ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC05MSw2ICs5Miw5
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIElQQzo6UmVjZWl2
ZXJOYW1lKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmlydHVhbCBV
SVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKKyAgICAgICAgdmlydHVhbCB2b2lkIGdldFdp
bmRvd1NjZW5lSWRlbnRpZmllckZvclBheW1lbnRQcmVzZW50YXRpb24oV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwor
I2VuZGlmCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JD
VERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVy
KFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSA9IDA7CiAj
ZW5kaWYKQEAgLTEyNyw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5h
dGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5n
VVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5
U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFVwZGF0ZT4mJik7CkBAIC0xNTUsNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtQ2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcm
IG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1P
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYg
bGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1D
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYm
KTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdkODlhNWIxMTNlOTQ0
OGU2YTIzZTlkNGE3NWFhMzkxYTVjOTFmYTkuLjI0ZDEzZTE0ZDk3YzVhZWU5NmJiNWQzMzA2ZDU3
OWNmNWQ4MGU5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zMCw3ICszMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBt
ZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9vbCBjYW5NYWtlUGF5
bWVudHMpIEFzeW5jCiAgICAgT3BlblBheW1lbnRTZXR1cChTdHJpbmcgbWVyY2hhbnRJZGVudGlm
aWVyLCBTdHJpbmcgZG9tYWluTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogCi0gICAgU2hv
d1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBTdHJpbmcg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZl
Y3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKICAgICBDb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiAgICAgQ29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+IHVwZGF0ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggNDEwODQwMGQxNmZi
MGMxNWFiOGViZjA4YzQyMDJkZmE4ZGE5NTg1NC4uOTJmOTliOTFkZmJkNmNmODc2ZWMzOGJkYTgx
YTk0NDRiMDZlYzUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNh
bk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIH0pOwogfQogCi12b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3Qg
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5n
cywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBwYXltZW50UmVx
dWVzdCA9IHBsYXRmb3JtUGF5bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJM
U3RyaW5ncywgcmVxdWVzdCk7CiAKQEAgLTU1LDcgKzU1LDI0IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0
aW5nVVJMCiAgICAgaWYgKCFtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9U
RV9VSV9VU0VTX1NDRU5FKQorICAgIG1fY2xpZW50LmdldFdpbmRvd1NjZW5lSWRlbnRpZmllckZv
clBheW1lbnRQcmVzZW50YXRpb24od2ViUGFnZVByb3h5SUQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgU3RyaW5nJiBzY2VuZUlEKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF3ZWFrVGhpcy0+bV9hdXRob3JpemF0
aW9uUHJlc2VudGVyKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9hdXRo
b3JpemF0aW9uUHJlc2VudGVyLT5wcmVzZW50SW5TY2VuZShzY2VuZUlELCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh3ZWJQYWdl
UHJveHlJRCk7CiAgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5wcmVzZW50KG1fY2xpZW50
LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybUhpZGVQYXltZW50VUkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWFjLm1tCmluZGV4IGRjNjNiZGYxMjAwY2QyZDdlOWU1NmJjZTEzNjliYTE1MGZj
ZTA2MWUuLjNjZDZkYWU0MjI5MDc4MzNkN2VhNWFhOWJmYWRiZmM4OTM4YTY4YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNv
bnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmlu
Z3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmICghUEFMOjppc1Bhc3NLaXRGcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM2NWE2MTlk
N2E4YWU4MWE2MDMzYjA2NzExNDdlMDFhY2NkZDQxN2YuLjBlOTM5N2NhYzc3ZmY2ZmM5MmIyZmI0
NTExMzZkNmQyNjc5MTc4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQogI2luY2x1ZGUgIlNlY0tleVByb3h5U3Rv
cmUuaCIKQEAgLTExNzQsNiArMTE3NSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaQogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXltZW50
UHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBh
Z2VQcm94eUlkZW50aWZpZXIpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxsU3RyaW5nKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHBhZ2UtPnBhZ2VDbGllbnQoKS5zY2VuZUlEKCkpOworfQorI2VuZGlmCisK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JU
ZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRl
eCA0NjBmYjMyZTgxMGUyZmZiMmM0OWI4NTg5NzkyNjM2YjdiZWEwZDhhLi5mMTk0MTJkNTJkYTFh
YWY4NThhYjc2OTNmNGJkNTBiOTE2MjUxMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjU3LDYgKzI1Nyw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFwcEJvdW5kRG9tYWlucyhQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmKT4mJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJX1VTRVNf
U0NFTkUpCisgICAgdm9pZCBnZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXltZW50UHJlc2Vu
dGF0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpOworI2VuZGlmCiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAog
ICAgIHZvaWQgc2VuZFByZXBhcmVUb1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDY3NDkyNWM1ODFkYmQ5ZjBhNzY5YTY3MDAz
NmQ5YzZkZWYzNDA3MS4uNzllODZkZTk4YzA0YmRkYmZkM2U1ZjIwYWIzMTE5OTIyZWYxNmQwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzYsNCArNzYsOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBVU0UoU09VUCkK
ICAgICBEaWRFeGNlZWRNZW1vcnlMaW1pdCgpCiAjZW5kaWYKKworI2lmIEVOQUJMRShBUFBMRV9Q
QVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCisgICAgR2V0V2luZG93U2NlbmVJZGVudGlmaWVyRm9y
UGF5bWVudFByZXNlbnRhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SWRlbnRpZmllcikgLT4gKFN0cmluZyBzY2VuZUlEKSBBc3luYworI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNTk5OGM5NDM0MGNkNTkzNmRjMGVj
MjJhNzEwM2U4MDM2ZTdmN2E4Zi4uN2ExYTM4NzZmMWI3NzA4MWYxYmQyMjgxOTVkNjk4ZmEwZmZj
ZDgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDk4LDYgKzQ5OCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50
Vmlld0JhY2tncm91bmRDb2xvcigpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzY2VuZUlEKCkg
PSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGJlMTAxMDVmMTYxM2JjYzQ5ZTc3MjVl
ODE4NTUxZTNiNWU0MGNlZjMuLmQzNzM0NzI4NjA4ODRkODkzMDMxMzUyYzE0NjE1YTI5ZWZmOTA2
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNDg5LDYgKzI0
ODksOSBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQorICAg
IHZvaWQgZ2V0V2luZG93U2NlbmVJZGVudGlmaWVyRm9yUGF5bWVudFByZXNlbnRhdGlvbihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKSBmaW5hbDsKKyNlbmRpZgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JikgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRl
eCA3Zjk3MDllM2M5N2M4YmEwNjRlZWM4N2ZiZjBjYzA5MTQzNTcwYmQzLi4wY2U4ZWZmMzRmN2Y3
MjBlNjgwODBiNTA2ZTM5MDQ5NjMzM2M2OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMzAwLDYgKzMwMCw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkNvbG9yIGNvbnRlbnRWaWV3QmFja2dyb3VuZENvbG9y
KCkgZmluYWw7CisgICAgU3RyaW5nIHNjZW5lSUQoKSBmaW5hbDsKIAogICAgIFdlYWtPYmpDUHRy
PFdLQ29udGVudFZpZXc+IG1fY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5k
b1RhcmdldD4gbV91bmRvVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDZmMzhjMzk1ODE4MjJkMTA2N2IxYWY1Yjc0MmE4
ODNkZmY5MWI4ZDAuLjljMzI0MzRiODAxM2I5ZmMzZmJhOGI5NDY5ZDY2ODYyMzE5ZmEzY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
QEAgLTEwMjMsNiArMTAyMywxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXF1ZXN0U2Nyb2xs
VG9SZWN0KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYQogICAgIFttX2Nv
bnRlbnRWaWV3IF9zY3JvbGxUb1JlY3Q6dGFyZ2V0UmVjdCB3aXRoT3JpZ2luOm9yaWdpbiBtaW5p
bXVtU2Nyb2xsRGlzdGFuY2U6MF07CiB9CiAKK1N0cmluZyBQYWdlQ2xpZW50SW1wbDo6c2NlbmVJ
RCgpCit7CisgICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3IHdpbmRvd10ud2luZG93U2NlbmUuX3Nj
ZW5lSWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggNmY0ZGJlM2EzODcyYjY3MTMxMDJmOTkxNThmODg0ZGU3NDRl
YjRmMy4uMWJmYTcxODMyYzBlYWIzNjY3ZWZhYWE3NmYzMmU5YmU4ZmYwZTdhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMjM4LDYg
KzEyMzgsMTQgQEAgVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QKICAgICByZXR1cm4gdWlDbGllbnQo
KS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIH0KIAorI2lmIEVOQUJMRShBUFBMRV9QQVlf
UkVNT1RFX1VJX1VTRVNfU0NFTkUpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93U2NlbmVJ
ZGVudGlmaWVyRm9yUGF5bWVudFByZXNlbnRhdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxTdHJpbmcoKSk7Cit9CisjZW5kaWYKKwogY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBh
eW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7CiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUoKS5j
b25maWd1cmF0aW9uKCkuZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcAppbmRleCAyYjA4MGM5MTNiZmI1MGQ0NzY5YzI1ZjQ4MGU2MDk5NmI2NDNkMTNmLi40
NjE2ZDEyYTI5NjIwZjkwZDBiNGNjNmNjZmQ1MGYyODkxZWI2Y2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpz
aG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvCiAgICAg
ICAgIGxpbmtJY29uVVJMU3RyaW5ncy5hcHBlbmQobGlua0ljb25VUkwuc3RyaW5nKCkpOwogCiAg
ICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OlNob3dQYXltZW50VUkobV93ZWJQYWdlLmlkZW50aWZpZXIoKSwgb3Jp
Z2luYXRpbmdVUkwuc3RyaW5nKCksIGxpbmtJY29uVVJMU3RyaW5ncywgcGF5bWVudFJlcXVlc3Qp
LCBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OlNob3dQYXltZW50VUk6OlJl
cGx5KHJlc3VsdCkpKQorICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpTaG93UGF5bWVudFVJKG1fd2ViUGFnZS5pZGVudGlmaWVyKCksIG1fd2Vi
UGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIG9yaWdpbmF0aW5nVVJMLnN0cmluZygpLCBs
aW5rSWNvblVSTFN0cmluZ3MsIHBheW1lbnRSZXF1ZXN0KSwgTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpTaG93UGF5bWVudFVJOjpSZXBseShyZXN1bHQpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>