<?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>219380</bug_id>
          
          <creation_ts>2020-11-30 16:46:12 -0800</creation_ts>
          <short_desc>[Cocoa] Web Inspector: add support for creating extension tabs in WebInspectorUI via _WKInspectorExtension</short_desc>
          <delta_ts>2020-12-09 15:08:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1710857</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-30 16:46:12 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710858</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-30 16:46:24 -0800</bug_when>
    <thetext>&lt;rdar://69594496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710936</commentid>
    <comment_count>2</comment_count>
      <attachid>415098</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-30 22:24:05 -0800</bug_when>
    <thetext>Created attachment 415098
Patch v1 (depends on 219378)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710937</commentid>
    <comment_count>3</comment_count>
      <attachid>415099</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-30 22:25:53 -0800</bug_when>
    <thetext>Created attachment 415099
Consolidated v1 (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711117</commentid>
    <comment_count>4</comment_count>
      <attachid>415098</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-12-01 11:30:34 -0800</bug_when>
    <thetext>Comment on attachment 415098
Patch v1 (depends on 219378)

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        WebInpectorUI interface. This can be used to implement browser.devtools.panels.create()

NIT: &quot;UI interface&quot; is redundant 😅

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:33
&gt; +        // Map from extensionID -&gt; WI.WebInspectorExtension.
&gt;          this._extensionIDMap = new Map;

rather than add a comment, I&apos;d rename this to `_extensionForExtensionIDMap`

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:35
&gt; +        // Map from extensionTabID -&gt; WI.WebInspectorExtensionTabContentView.
&gt; +        this._extensionTabsMap = new Map;

ditto (:32) as `_extensionTabContentViewForExtensionIDMap`

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:37
&gt; +        // Multimap from extensionID -&gt; {extensionTabID, ...}.
&gt; +        this._activeTabsForExtensionMap = new Multimap;

ditto (:32) as `_tabIDsforExtensionIDMap`

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:41
&gt; +    _makeNextExtensionTabID()

NIT: I don&apos;t think this needs to be a separate function.  I&apos;d just inline it as `let extensionTabID = this._nextExtensionTabID++;`

Style: if you do keep this, it should go below after `// Private`.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:71
&gt; +        let extensionTabIDsToRemove = this._activeTabsForExtensionMap.take(extensionID);
&gt; +        for (let extensionTabID of extensionTabIDsToRemove) {
&gt; +            let tabContentView = this._extensionTabsMap.take(extensionTabID);

I think we can combine `_activeTabsForExtensionMap` and `_extensionTabsMap` a single `MultiMap` of `[extensionID, [WI.WebInspectorExtensionTabContentView, ...]]` since `WI.TabContentView`.  You don&apos;t appear to be using the `identifier` of the tab for anything other than retrieving from this second map anyways.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:93
&gt; +        return {extensionTabID};

Why create an object if there&apos;s only one key?

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.css:26
&gt; +.content-view.web-inspector-extension-tab &gt; iframe {

NIT: I&apos;d add `.tab` to match what we do with the CSS for other tabs, so `.content-view.tab.web-inspector-extension`

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:31
&gt; +            identifier: WebInspectorExtensionTabContentView.Type,

missing `WI.`

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:36
&gt; +        super(tabInfo, {});

you can drop the `{}`

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:61
&gt; +    get extensionTabID()

Style: you can inline this as `get extensionTabID() { return this._extensionTabID; }`

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:73
&gt; +        iframeElement.src = this._sourceURL;

Are there any other attributes we need to set before we load the extension&apos;s code so that it can&apos;t reach out to the main Web Inspector context (i.e. something akin to XSS)?

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:77
&gt; +WI.WebInspectorExtensionTabContentView.Type = &quot;web-inspector-extension-tab&quot;;

I think this is going to have issues with `WI._openTabsSetting` as if there are multiple extension tabs then they&apos;d all have the same `.Type`.  Speaking of, how does this deal with saving/restoring of tabs (or is that a planned followup)?

Also, we don&apos;t normally include `-tab`.

&gt; Source/WebKit/UIProcess/API/APIInspectorExtension.h:46
&gt; +    InspectorExtension(const WTF::String&amp; identifier, WebKit::WebInspectorUIExtensionControllerProxy&amp;);

Should this be `private` since we have `create`?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h:52
&gt; +- (instancetype)initWithIdentifier:(NSString *)extensionIdentifier forLocalInspector:(_WKInspector *)localInspector;
&gt; +- (instancetype)initWithIdentifier:(NSString *)extensionIdentifier forRemoteInspector:(_WKRemoteWebInspectorViewController *)localInspector;

Can we have only one like `initWithIdentifier:controller:` that asks for the `WebInspectorUIExtensionControllerProxy&amp;` instead?  I feel like local vs remote is an implementation detail that `_WKInspectorExtension` doesn&apos;t really need to know about.

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:157
&gt; +    if (!result.has_value())

I don&apos;t think the `has_value` is needed as `operator bool` does the same thing

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:161
&gt; +    if (!valueOrException.has_value())

ditto (:157)

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:165
&gt; +    JSC::JSValue value = valueOrException.value();   
&gt; +    return value.getObject();

NIT: I&apos;d inline this as `valueOrException.value().getObject()`

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:180
&gt; +    Vector&lt;Ref&lt;JSON::Value&gt;&gt; arguments {
&gt; +        JSON::Value::create(extensionID),
&gt; +        JSON::Value::create(tabName),
&gt; +        JSON::Value::create(tabIconURL.string()),
&gt; +        JSON::Value::create(sourceURL.string()),
&gt; +    };

Aside: I&apos;d love it if there was a convenience function for this :D (maybe a weekend project to have some fun with C++)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712250</commentid>
    <comment_count>5</comment_count>
      <attachid>415489</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-04 23:03:44 -0800</bug_when>
    <thetext>Created attachment 415489
Patch v2

In this iteration, I rebased and addressed Devin&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712374</commentid>
    <comment_count>6</comment_count>
      <attachid>415533</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-06 16:03:20 -0800</bug_when>
    <thetext>Created attachment 415533
Patch v2.1 - for iOS EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712479</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-07 09:40:14 -0800</bug_when>
    <thetext>Investigating EWS API test failures, failure message below:


Test suite failed
Failed
    TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        
        /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:136
        Value of: !(error)
          Actual: false
        Expected: true
        
        
        /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:152
        Value of: !(error)
          Actual: false
        Expected: true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712486</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-07 10:10:37 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #7)
&gt; Investigating EWS API test failures, failure message below:
&gt; 
&gt; 
&gt; Test suite failed
&gt; Failed
&gt;     TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
&gt;         _RegisterApplication(), FAILED TO establish the default connection
&gt; to the WindowServer, _CGSDefaultConnection() is NULL.
&gt;         _RegisterApplication(), FAILED TO establish the default connection
&gt; to the WindowServer, _CGSDefaultConnection() is NULL.
&gt;         
&gt;        
&gt; /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/
&gt; TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:136
&gt;         Value of: !(error)
&gt;           Actual: false
&gt;         Expected: true
&gt;         
&gt;         
&gt;        
&gt; /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/
&gt; TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:152
&gt;         Value of: !(error)
&gt;           Actual: false
&gt;         Expected: true

It&apos;s great when my test catches a problem. It&apos;s hilarious when I also forget to remove the intentional defect I used to ensure it was actually working &gt;_&lt;. New patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712973</commentid>
    <comment_count>9</comment_count>
      <attachid>415691</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-08 16:51:43 -0800</bug_when>
    <thetext>Created attachment 415691
Patch v2.2 - fix API test failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713301</commentid>
    <comment_count>10</comment_count>
      <attachid>415691</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-12-09 14:01:54 -0800</bug_when>
    <thetext>Comment on attachment 415691
Patch v2.2 - fix API test failure

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

r=me as well :)

&gt; Source/WebKit/ChangeLog:30
&gt; +        Expose member m_remoteInspectorPorxy for use in the API:::InspectorExtension constructor.

extra &quot;:&quot;

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:85
&gt; +        return {extensionTabID};

I&apos;d add a comment here explaining that you need to use an object so that it&apos;s differentiable from `WI.WebInspectorExtension.ErrorCode.*` (which is a string).

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:218
&gt; +    }

Style: missing comma

&gt; Source/WebInspectorUI/UserInterface/Views/TabContentView.js:135
&gt; +        return this.constructor.tabInfo();

I&apos;d just make all the existing `static tabInfo` into instance functions instead of having this extra indirection.

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.css:36
&gt; +    /* This is required for the iframe to expand if its intrinsic size
&gt; +       is smaller than the tab content view. */

NIT: I&apos;d rather have this be a longer line or have a `/*` and `*/` on each line.

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:48
&gt; +        return Object.shallowCopy(this._tabInfo);

Why do we need to copy?  Is this to just match how existing `tabInfo` do it?

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:61
&gt; +    get extensionTabID() { return this._extensionTabID; }

Style: we normally put single-line `get` at the beginning of `// Public`

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:74
&gt; +WI.WebInspectorExtensionTabContentView.Type = &quot;web-inspector-extension-tab&quot;;

you really should drop the `-tab` so that we don&apos;t have the redundant `.tab.web-inspector-extension-tab` :/

Also, I think this is going to have issues with `WI._openTabsSetting` as if there are multiple extension tabs then they&apos;d all have the same `.Type`.  For now, I&apos;d consider adding `static shouldSaveTab() { return false; }` to this class or skipping any `tabType === WI.WebInspectorExtensionTabContentView.Type` inside `WI._rememberOpenTabs`.  I&apos;d also recommend filing a followup bug for making sure that the position of extension tabs are remembered across Web Inspector sessions.

&gt; Source/WebKit/UIProcess/API/APIInspectorExtension.h:45
&gt; +    InspectorExtension(const WTF::String&amp; identifier, WebKit::WebInspectorUIExtensionControllerProxy&amp;);

we should make this `private` since we have a `create`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713333</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-09 15:08:52 -0800</bug_when>
    <thetext>Committed r270606: &lt;https://trac.webkit.org/changeset/270606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415098</attachid>
            <date>2020-11-30 22:24:05 -0800</date>
            <delta_ts>2020-12-04 23:03:42 -0800</delta_ts>
            <desc>Patch v1 (depends on 219378)</desc>
            <filename>bug-219380-20201130222404.patch</filename>
            <type>text/plain</type>
            <size>45903</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MzZjNDY2ZmI1MjY1MjkyZjZjYzRhNzQyMWZlZWI3Y2QzYWI5NGJmLi42MTgwMmFmODM4YjJlNjU5
YzI1N2NkMzcxNjlmNjM3NzMwNjBjYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBl
eHRlbnNpb24gdGFicyBpbiBXZWJJbnNwZWN0b3JVSSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoK
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX21ha2VOZXh0RXh0
ZW5zaW9uVGFiSUQpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5wcm90b3R5cGUudW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5HZW5lcmFsVGFiQmFy
SXRlbS5mcm9tVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuR2VuZXJhbFRhYkJhckl0ZW0u
Z2V0IGRpc3BsYXlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Bpbm5lZFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21U
YWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGFi
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCB0YWJCYXJJdGVtKToKKyAgICAgICAgKFdJLlRhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZS50YWJJbmZvKToKKyAgICAgICAgKFdJLlRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5nZXQgbWFuYWdlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmF0dGFjaGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oLgorICAgICAgICAoLmNvbnRlbnQtdmlldy53ZWIt
aW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaC4K
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJJ
bmZvKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3Nlcik6Cisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Z2V0IGV4dGVuc2lvblRhYklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKwogMjAyMC0xMS0yMSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBs
ZW1lbnQgTXVsdGltYXAucHJvdG90eXBlLnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZTIzYWVlMzFkM2E0
ZDhhZjM3ZTZjMDI3NzVmNjY5MGMzNjc2ZDQ4Li41YTczMzZmMzllZDMyYWI1OGJmODEzMzQxN2Vj
NmZjMmM3OTc1MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTExLTMwICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rv
cjogYWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGV4dGVuc2lvbiB0YWJzIGluIFdlYkluc3BlY3Rv
clVJIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIGZvciBjcmVhdGluZyBhbiBleHRlbnNpb24gdGFiIGluIHRoZQorICAgICAgICBXZWJJ
bnBlY3RvclVJIGludGVyZmFjZS4gVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgYnJvd3Nl
ci5kZXZ0b29scy5wYW5lbHMuY3JlYXRlKCkKKyAgICAgICAgYXMgcHJvdmlkZWQgYnkgdGhlIFdl
YiBFeHRlbnNpb25zIEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDogQWRkIElu
c3BlY3RvciBjaGFubmVsIGZvciBlcnJvciBsb2dnaW5nLgorICAgICAgICAqIFNoYXJlZC9JbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oOiBBZGQgYSBtaXNzaW5nIEVudW1UcmFpdHMgY2FzZS4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDogQWRkIGZpbGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVu
c2lvbi5jcHA6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0
ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUpOgorICAg
ICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYik6CisgICAgICAgIEluc3Bl
Y3RvciBleHRlbnNpb25zIG5lZWQgdG8gYmUgYWJsZSB0byBpbnZva2UgY29tbWFuZHMgaW4gdGhl
IFdlYlByb2Nlc3Mtc2lkZQorICAgICAgICBleHRlbnNpb24gcHJveHkgY29udHJvbGxlciwgc28g
a2VlcCBhIFdlYWtSZWYgdG8gdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIHRoYXQKKyAgICAgICAg
Y3JlYXRlZCB0aGUgZXh0ZW5zaW9uIG9iamVjdC4gQWxzbywgaW1wbGVtZW50IHRoZSBuZXcgQVBJ
IGJ5IGZvcndhcmRpbmcgaXQgb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHJlZ2lzdGVyRXh0ZW5zaW9u
V2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBBZGFwdCB0
byB0aGUgbmV3IGNvbnN0cnVjdG9yIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDogQWRkIG5l
dyBpbml0aWFsaXplcnMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGluaXRXaXRo
SWRlbnRpZmllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
IGluaXRXaXRoSWRlbnRpZmllcjpmb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uIGluaXRXaXRoSWRlbnRpZmllcjpmb3JSZW1vdGVJbnNwZWN0b3I6
XSk6CisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgQVBJIG9iamVjdCBjb25zdHJ1Y3RvciBhcyBl
eHBsYWluZWQgYWJvdmUuCisKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGNyZWF0
ZVRhYldpdGhOYW1lOnRhYkljb25VUkw6c291cmNlVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICBJbXBsZW1lbnQgbmV3IEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnRlcm5hbC5oOiBBZGRlZC4K
KyAgICAgICAgTWFrZSB0aGUgUmVmUHRyPFJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtZW1iZXIg
dmFyaWFibGUgYWNjZXNzaWJsZSB0byB0aGUgQVBJIG9iamVjdCBjb25zdHJ1Y3Rvci4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
IHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICBBZGFwdCB0byBuZXcgY29uc3RydWN0b3IgYXMgZXhwbGFpbmVkIGFib3ZlLgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KToKKyAgICAgICAgRm9yd2FyZCB0aGUgcmVxdWVzdCB0byB0aGUgaW5zcGVjdG9yIGZyb250ZW5k
IFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBhIG5ldyBh
c3luYyBJUEMgY29tbWFuZCBmb3IgY3JlYXRpbmcgYSBuZXcgaW5zcGVjdG9yIGV4dGVuc2lvbiB0
YWIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVj
dCk6CisgICAgICAgIEFkZGVkLiBQdWxsIG91dCB0aGUgY29kZSBuZWVkZWQgZm9yIGVycm9yLWhh
bmRsaW5nIHRoaXMgY29tbW9uIG9wZXJhdGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAg
ICAgIEFkZGVkLiBDYWxsIGludG8gSW5zcGVjdG9yRnJvbnRlbmRBUEkgdG8gcmVxdWVzdCBhIG5l
dyB0YWIuIFR1cm4gdGhlIHJlc3VsdAorICAgICAgICBpbnRvIGFuIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIG9yIEluc3BlY3RvckV4dGVuc2lvblRhYklEIGFuZCBzZW5kIHRoZSBJUEMgcmVwbHku
CisKKwogMjAyMC0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIgc2hvdWxkIG5v
dCBpZ25vcmUgYWxsIGV4Y2VwdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCmluZGV4IDAyZTM5NmMzNDI0ZjYyNDdl
MDFhMGZhZjUwOWMzYmIyOTc3OWIxZWUuLmU1ZDIzYWU0MDczOTI4MWIzMzFjZTZmNjUxNWIxMTVk
MTEyOTYyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMjksNyArMjksMTggQEAgV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIgZXh0ZW4KICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKKyAgICAgICAgLy8gTWFwIGZyb20g
ZXh0ZW5zaW9uSUQgLT4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLgogICAgICAgICB0aGlzLl9l
eHRlbnNpb25JRE1hcCA9IG5ldyBNYXA7CisgICAgICAgIC8vIE1hcCBmcm9tIGV4dGVuc2lvblRh
YklEIC0+IFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LgorICAgICAgICB0
aGlzLl9leHRlbnNpb25UYWJzTWFwID0gbmV3IE1hcDsKKyAgICAgICAgLy8gTXVsdGltYXAgZnJv
bSBleHRlbnNpb25JRCAtPiB7ZXh0ZW5zaW9uVGFiSUQsIC4uLn0uCisgICAgICAgIHRoaXMuX2Fj
dGl2ZVRhYnNGb3JFeHRlbnNpb25NYXAgPSBuZXcgTXVsdGltYXA7CisgICAgICAgIHRoaXMuX25l
eHRFeHRlbnNpb25UYWJJRCA9IDE7CisgICAgfQorCisgICAgX21ha2VOZXh0RXh0ZW5zaW9uVGFi
SUQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25leHRFeHRlbnNpb25UYWJJRCsrOwog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNTUsOCArNjYsMzIgQEAgV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIgZXh0ZW4KICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJy
b3JDb2RlLkludmFsaWRSZXF1ZXN0OwogICAgICAgICB9CiAKKyAgICAgICAgbGV0IGV4dGVuc2lv
blRhYklEc1RvUmVtb3ZlID0gdGhpcy5fYWN0aXZlVGFic0ZvckV4dGVuc2lvbk1hcC50YWtlKGV4
dGVuc2lvbklEKTsKKyAgICAgICAgZm9yIChsZXQgZXh0ZW5zaW9uVGFiSUQgb2YgZXh0ZW5zaW9u
VGFiSURzVG9SZW1vdmUpIHsKKyAgICAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMu
X2V4dGVuc2lvblRhYnNNYXAudGFrZShleHRlbnNpb25UYWJJRCk7CisgICAgICAgICAgICBXSS50
YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOworICAgICAg
ICB9CisKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNpb25SZW1vdmVkLCB7ZXh0ZW5zaW9u
fSk7CiAgICAgfQorCisgICAgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCB0YWJO
YW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpCisgICAgeworICAgICAgICBsZXQgZXh0ZW5zaW9u
ID0gdGhpcy5fZXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYgKCFl
eHRlbnNpb24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0
byBjcmVhdGUgdGFiIGZvciBleHRlbnNpb24gd2l0aCB1bmtub3duIElEOiAiLCBleHRlbnNpb25J
RCwgIiBzb3VyY2VVUkw6ICIsIHNvdXJjZVVSTCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgfQor
CisgICAgICAgIGxldCBleHRlbnNpb25UYWJJRCA9IGBXZWJFeHRlbnNpb25UYWItJHt0aGlzLl9t
YWtlTmV4dEV4dGVuc2lvblRhYklEKCl9LSR7ZXh0ZW5zaW9uSUR9YDsKKyAgICAgICAgbGV0IHRh
YkNvbnRlbnRWaWV3ID0gbmV3IFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3
KGV4dGVuc2lvbiwgZXh0ZW5zaW9uVGFiSUQsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVS
TCk7CisKKyAgICAgICAgdGhpcy5fYWN0aXZlVGFic0ZvckV4dGVuc2lvbk1hcC5hZGQoZXh0ZW5z
aW9uSUQsIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uVGFic01hcC5z
ZXQoZXh0ZW5zaW9uVGFiSUQsIHRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJvd3Nl
ci5hZGRUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7CisKKyAgICAgICAgcmV0dXJu
IHtleHRlbnNpb25UYWJJRH07CisgICAgfQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
Q29udHJvbGxlci5FdmVudCA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbAppbmRleCBiODZkZjVmZjA1OWVlYmY4MGUwMzI0OWY4ZjMzOGM1OTViM2Vk
OThjLi5iOWZmNTVkMzJjYWIyYWE2YTQ5MjVjNjE2YzM2NzAyNWNjYWQwMWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yNDYsNiArMjQ2
LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1VSTEJyZWFrcG9p
bnRQb3BvdmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9V
UkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL1ZhcmlhYmxlcy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3
LmNzcyI+CiAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5jc3MiPgpAQCAtNTgxLDYgKzU4Miw3IEBACiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWls
c1NlY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2Vj
dGlvbkRhdGFHcmlkUm93LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMKaW5kZXggZjlkMjBhZjExZjQ2Y2NkZWQ2NWQzZGMxYTliNDY4M2JmNGFkNmQ5
Mi4uMGFkN2RhZWQ3YTk1NTc1OTdmMjYxYmQwZmY0Yzc3MGY2MzNlZDMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTIwOSw0ICsyMDksMTEgQEAgSW5zcGVj
dG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgewogICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4
dGVuc2lvbkNvbnRyb2xsZXIudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCk7CiAgICAg
fSwKKworICAgIC8vIFJldHVybnMgYSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
IGlmIGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2UgYW4gb2JqZWN0CisgICAgLy8gd2l0aCBh
biAnaW5zcGVjdG9yRXh0ZW5zaW9uSUQnIGtleSByZXByZXNlbnRpbmcgdGhlIHRhYiBpZGVudGlm
aWVyIGZvciB0aGUgbmV3bHkgY3JlYXRlZCB0YWIuCisgICAgY3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KGV4dGVuc2lvbklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpCisgICAgeworICAg
ICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIuY3JlYXRlVGFiRm9y
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOwor
ICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzCmluZGV4IDMwNmU3MThmYWJlYjE3
Y2M2YWU4ODBhZGQyODY3MjQ5YjkzZWQ2ZmQuLjUzOTNlZTQyOGQzZDBlYjM5YmVjMDE0NjM2ZjM0
OGM1YzUyNGRkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzCkBAIC0zMiw3ICszMiw3
IEBAIFdJLkdlbmVyYWxUYWJCYXJJdGVtID0gY2xhc3MgR2VuZXJhbFRhYkJhckl0ZW0gZXh0ZW5k
cyBXSS5UYWJCYXJJdGVtCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJDb250ZW50
VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBsZXQge2ltYWdl
LCBkaXNwbGF5TmFtZSwgdGl0bGV9ID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3IudGFiSW5m
bygpOworICAgICAgICBsZXQge2ltYWdlLCBkaXNwbGF5TmFtZSwgdGl0bGV9ID0gdGFiQ29udGVu
dFZpZXcudGFiSW5mbygpOwogICAgICAgICByZXR1cm4gbmV3IFdJLkdlbmVyYWxUYWJCYXJJdGVt
KHRhYkNvbnRlbnRWaWV3LCBpbWFnZSwgZGlzcGxheU5hbWUsIHRpdGxlKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5l
ZFRhYkJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9QaW5uZWRUYWJCYXJJdGVtLmpzCmluZGV4IDM0MmM2Nzk4ODQ5MTk0Y2UzZGRkODFlNTlhNTgx
MTMyZjA0ZGJlNDkuLjE5ZTg1NjNhYzcxM2JjMDRiY2FhYzM0MjhhZTg0NmZjNzNjYWNiYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5l
ZFRhYkJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUGlubmVkVGFiQmFySXRlbS5qcwpAQCAtMzgsNyArMzgsNyBAQCBXSS5QaW5uZWRUYWJC
YXJJdGVtID0gY2xhc3MgUGlubmVkVGFiQmFySXRlbSBleHRlbmRzIFdJLlRhYkJhckl0ZW0KICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0ku
VGFiQ29udGVudFZpZXcpOwogCi0gICAgICAgIGxldCB7aW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRs
ZX0gPSB0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci50YWJJbmZvKCk7CisgICAgICAgIGxldCB7
aW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy50YWJJbmZvKCk7CiAg
ICAgICAgIHJldHVybiBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSh0YWJDb250ZW50VmlldywgaW1h
Z2UsIGRpc3BsYXlOYW1lLCB0aXRsZSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMK
aW5kZXggZmQzMjA4MzRlNGIxN2Y2MDIxZjM1NTQxNGUyMTdlMWY1ODkzYTM0Yi4uZTA0Y2M4ZmVl
OWUwOGU5Zjg2NzE5MGI3OWQ1ZTAwOTdjZmYzMzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMK
QEAgLTMzLDcgKzMzLDYgQEAgV0kuVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJDb250ZW50Vmll
dyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHN1cGVyKG51bGwpOwogCiAgICAgICAg
IHRoaXMuX2lkZW50aWZpZXIgPSB0YWJJbmZvLmlkZW50aWZpZXI7Ci0gICAgICAgIHRoaXMuX3Rh
YkJhckl0ZW0gPSB0aGlzLmNvbnN0cnVjdG9yLnNob3VsZFBpblRhYigpID8gV0kuUGlubmVkVGFi
QmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcykgOiBXSS5HZW5lcmFsVGFiQmFySXRlbS5m
cm9tVGFiQ29udGVudFZpZXcodGhpcyk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvciA9IG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciB8fCBu
dWxsOwogICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gZGV0
YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyB8fCBbXTsKIApAQCAtODIsNiArODEsMTEgQEAg
V0kuVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWV3CiAKICAgICBnZXQgdGFiQmFySXRlbSgpCiAgICAgeworICAgICAgICAvLyBUaGlzIGlz
IGNyZWF0ZWQgbGF6aWx5IHRvIGJyZWFrIGEgZGVwZW5kZW5jeSBjeWNsZSBmb3IgZHluYW1pY2Fs
bHktY3JlYXRlZCBUYWJDb250ZW50Vmlld3MuCisgICAgICAgIC8vIFRhYkNvbnRlbnRWaWV3cyB3
aXRoIGEgbm9uLXN0YXRpYyB0YWJJbmZvKCkgbXVzdCBiZSBmdWxseSBjb25zdHJ1Y3RlZCBiZWZv
cmUgY2FsbGluZyB0YWJJbmZvKCkuCisgICAgICAgIGlmICghdGhpcy5fdGFiQmFySXRlbSkKKyAg
ICAgICAgICAgIHRoaXMuX3RhYkJhckl0ZW0gPSB0aGlzLmNvbnN0cnVjdG9yLnNob3VsZFBpblRh
YigpID8gV0kuUGlubmVkVGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcykgOiBXSS5H
ZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcyk7CisKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYkJhckl0ZW07CiAgICAgfQogCkBAIC0xMjUsNiArMTI5LDEyIEBAIFdJLlRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmll
dwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgdGFiSW5mbygpCisgICAgewor
ICAgICAgICAvLyBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICByZXR1
cm4gdGhpcy5jb25zdHJ1Y3Rvci50YWJJbmZvKCk7CisgICAgfQorCiAgICAgYXR0YWNoZWQoKQog
ICAgIHsKICAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWE2
YjIyYWRjMmM4N2VkZDQwZDUzMzU5YjkxNzdmMjczMTcxMDIxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uVGFiQ29udGVudFZpZXcuY3NzCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisu
Y29udGVudC12aWV3LndlYi1pbnNwZWN0b3ItZXh0ZW5zaW9uLXRhYiA+IGlmcmFtZSB7CisgICAg
Ym9yZGVyOiAwOworCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBs
ZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKworICAgIC8qIFRoaXMgaXMg
cmVxdWlyZWQgZm9yIHRoZSBpZnJhbWUgdG8gZXhwYW5kIGlmIGl0cyBpbnRyaW5zaWMgc2l6ZQor
ICAgICAgIGlzIHNtYWxsZXIgdGhhbiB0aGUgdGFiIGNvbnRlbnQgdmlldy4gKi8KKyAgICB3aWR0
aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZjRhYTI1
NWI5NzQ2OTMxOTY0MTczMDU1MDU5OGY5ZTU0NTg3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRl
bnNpb25UYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3Cit7CisgICAgY29u
c3RydWN0b3IoZXh0ZW5zaW9uLCBleHRlbnNpb25UYWJJRCwgdGFiTGFiZWwsIGljb25VUkwsIHNv
dXJjZVVSTCkKKyAgICB7CisgICAgICAgIGxldCB0YWJJbmZvID0geworICAgICAgICAgICAgaWRl
bnRpZmllcjogV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuVHlwZSwKKyAgICAg
ICAgICAgIGltYWdlOiBpY29uVVJMLAorICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRhYkxhYmVs
LAorICAgICAgICAgICAgdGl0bGU6IHRhYkxhYmVsLAorICAgICAgICB9OworICAgICAgICBzdXBl
cih0YWJJbmZvLCB7fSk7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uID0gZXh0ZW5zaW9uOwor
ICAgICAgICB0aGlzLl9leHRlbnNpb25UYWJJRCA9IGV4dGVuc2lvblRhYklEOworICAgICAgICB0
aGlzLl90YWJJbmZvID0gdGFiSW5mbzsKKyAgICAgICAgdGhpcy5fc291cmNlVVJMID0gc291cmNl
VVJMOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgdGFiSW5mbygpCisgICAgeworICAg
ICAgICByZXR1cm4gT2JqZWN0LnNoYWxsb3dDb3B5KHRoaXMuX3RhYkluZm8pOworICAgIH0KKwor
ICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb25UYWJDb250ZW50Vmlldy5UeXBlOworICAgIH0KKworICAgIGdldCBzdXBwb3J0c1NwbGl0
Q29udGVudEJyb3dzZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgZ2V0IGV4dGVuc2lvblRhYklEKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9leHRl
bnNpb25UYWJJRDsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGluaXRpYWxMYXlv
dXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgpOworCisgICAgICAgIGxl
dCBpZnJhbWVFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpKTsKKyAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSB0aGlzLl9z
b3VyY2VVUkw7CisgICAgfQorfTsKKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXcuVHlwZSA9ICJ3ZWItaW5zcGVjdG9yLWV4dGVuc2lvbi10YWIiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaAppbmRleCAyMGRjYzVlODY0MWQ0Mzg3ZWQzNTk3MjhkZGE3NTNmZTViYmYwNzcw
Li5mNDlmMzhiNmE1ZjlkM2Q3MDk1MmQyZTEyMWM4OTk1ZGVjZTk4ZWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaApAQCAtNjEsNiArNjEsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKEluY3Jl
bWVudGFsUERGKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERlZlcmJvc2UpIFwKICAgICBNKEluZGV4
ZWREQikgXAorICAgIE0oSW5zcGVjdG9yKSBcCiAgICAgTShLZXlIYW5kbGluZykgXAogICAgIE0o
TGF5ZXJzKSBcCiAgICAgTShMYXlvdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oCmluZGV4IGVmM2Y1ZWJmYjhkMTcwNTJkMGIzNmVhMjc0Y2Nm
ZjVkNzAzNjVhNGQuLjY5NTM5MmI5YzA4YzI0YzBhODhiZDRjMGFlYjgyMTdhMjVhNzAwODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaApAQCAt
NTAsOCArNTAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAog
ICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9y
LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVz
dCwKICAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9u
RmFpbGVkCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNhYTJhYmY3
ZjBmODkwZjg5NWEzZjJlZjg2Li44NzI4ZTRmNzQ2YjBkODNhYzE0NjRhYjgzNjRhMWJkNjdiMTJh
YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTM1MCw2ICszNTAsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSUZy
YW1lVHJlZU5vZGUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2RkNGRkMjUxYzQ2Mzk4M2NhNDQzMDU1NzJiNDdi
YTAyNGJmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIgorCituYW1lc3BhY2UgQVBJIHsKKworSW5zcGVjdG9yRXh0ZW5zaW9uOjpJ
bnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9leHRlbnNp
b25Db250cm9sbGVyUHJveHkobWFrZVdlYWtQdHIoZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSkK
K3sKK30KKworUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVh
dGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpj
cmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJ
Y29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9leHRlbnNpb25D
b250cm9sbGVyUHJveHktPmNyZWF0ZVRhYkZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIHRhYk5h
bWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAppbmRleCA3ZTBmMThhZmUyYzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0
ODBiLi5jMDVhOWM2MzY3YjlmMGU1MzE5OTA2NTgxYWI3MDcwZDBlMDUxMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBA
IC0yOCwyNiArMjgsMzAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTsKK30KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEluc3Bl
Y3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZp
ZXIpKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBJbnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
Ci0gICAgewotICAgIH0KKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRl
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Jik7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjcmVhdGVUYWIoY29uc3Qg
V1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBX
VEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7
CisgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3Iu
bW0KaW5kZXggMjY3OTY3MmMwYjBlODVlNWQwNWE2YjhjZmQ3YmRmNTRlNTY2MDhhNC4uZjA0Zjlh
NDI0YTQ0YTEyODkxZDgyMjgwM2Y3YjZjMmUyYzllMDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yMDcsNyArMjA3LDcg
QEAgLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25J
RCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JF
eHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0
b3JlbGVhc2VdKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90
ZWN0ZWRTZWxmLT5faW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1
dG9yZWxlYXNlXSk7CiAgICAgfSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86bmlsXSwgbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA2YzVhNjAxZWQyY2YzMTRl
N2E4YmY4NjIzOWU4MGI0YjFhYTliYzgwLi45ZGY4YzJlZWFhN2U2NTRjZmY5MWE3YjI4MjY3ZmNm
YjcwMjkwOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0zMyw2ICszMywxNSBAQCBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5T
X1VOQVZBSUxBQkxFOwogCisvKioKKyAqIEBhYnN0cmFjdCBDcmVhdGVzIGEgbmV3IHRhYiBpbiB0
aGUgV2ViIEluc3BlY3RvciBpbnRlcmZhY2UgZm9yIHRoaXMgZXh0ZW5zaW9uLgorICogQHBhcmFt
IHRhYk5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgdGFiLgorICogQHBhcmFt
IHRhYkljb25VUkwgVGhlIGxvY2F0aW9uIG9mIGFuIGltYWdlIHJlc291cmNlIHRvIHVzZSBmb3Ig
ZGlzcGxheSBpbiB0aGUgY3JlYXRlZCB0YWIncyB0aXRsZS4KKyAqIEBwYXJhbSBzb3VyY2VVUkwg
VGhlIGxvY2F0aW9uIG9mIHRoZSBtYWluIHJlc291cmNlIHRvIGxvYWQgaW4gdGhlIG5ldyB0YWIn
cyBpZnJhbWUgYnJvd3NpbmcgY29udGV4dC4KKyAqIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBU
aGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGNyZWF0aW5nIGEgdGFiIHN1
Y2NlZWRzIG9yIGZhaWxzLgorICovCistICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmlu
ZyAqKXRhYk5hbWUgdGFiSWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNvdXJjZVVSTDooTlNV
UkwgKilzb3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxs
YWJsZSwgTlNTdHJpbmcgKiBfTnVsbGFibGUgaW5zcGVjdG9yVGFiSUQpKWNvbXBsZXRpb25IYW5k
bGVyOworCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNp
b25JRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5kZXggM2Y3ZGU5NDNkNWFjMzEzMWZk
MTU3ZmM4ZmI1ODU5ZjEyNzE4NDEzMC4uOWI5ZDMwYWQ2NWExN2E2NzJjZGMzZjdkYjdjOGNlNWMx
YzhkNzRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0yNiwxOCArMjYsMzIgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIK
IAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5LmgiCisjaW5jbHVkZSAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKKyNp
bmNsdWRlICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckludGVybmFsLmgiCisK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3JF
eHRlbnNpb24KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZm9yTG9jYWxJ
bnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4oc2VsZiwgZXh0ZW5zaW9u
SUQsIGluc3BlY3Rvci0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKTsKKyAgICAK
KyAgICByZXR1cm4gc2VsZjsKK30KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmll
cjooTlNTdHJpbmcgKilleHRlbnNpb25JRAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRp
ZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25JRCBmb3JSZW1vdGVJbnNwZWN0b3I6KF9XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICopcmVtb3RlSW5zcGVjdG9yCiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxm
LCBleHRlbnNpb25JRCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
Okluc3BlY3RvckV4dGVuc2lvbj4oc2VsZiwgZXh0ZW5zaW9uSUQsIHJlbW90ZUluc3BlY3Rvci0+
bV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKTsKICAgICAKICAg
ICByZXR1cm4gc2VsZjsKIH0KQEAgLTU1LDYgKzY5LDI0IEBAIC0gKEFQSTo6T2JqZWN0JilfYXBp
T2JqZWN0CiAgICAgcmV0dXJuICpfZXh0ZW5zaW9uOwogfQogCisvLyBNQVJLOiBBUEkKKworLSAo
dm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5T
VVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxhYmxl
KSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
KyAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJM
LCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11
dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9j
ayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtu
b3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0
b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHJl
c3VsdC52YWx1ZSgpKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1
c2VySW5mbzpuaWxdLCBuaWwpOworI2VuZGlmCit9CisKIC8vIE1BUks6IFByb3BlcnRpZXMuCiAK
IC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKQEAgLTYyLDggKzk0LDggQEAgLSAoTlNTdHJpbmcg
KilleHRlbnNpb25JRAogICAgIHJldHVybiBfZXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7CiB9CiAK
LSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0KIEBlbmQKIAogTlNfQVNT
VU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCmluZGV4IDkwYzQ1ZDU0MDg4MWQ1NGY4
NzQ3ZDIxNTY0MmNkODhhZmM5ZDBkMGMuLmY3NDc4OWViNTBjMjBiY2VkNTNhZjExOTAwMWE2YmM4
MGNmZGZmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCkBAIC0zMCw2ICsz
MCw5IEBACiAjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKICNpbXBvcnQgIldLT2Jq
ZWN0LmgiCiAKK0BjbGFzcyBfV0tJbnNwZWN0b3I7CitAY2xhc3MgX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXI7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CkBAIC00NSw3ICs0
OCw4IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOwogfQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklkZW50aWZpZXI7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklkZW50
aWZpZXIgZm9yTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWxvY2FsSW5zcGVjdG9yOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25J
ZGVudGlmaWVyIGZvclJlbW90ZUluc3BlY3RvcjooX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgKilsb2NhbEluc3BlY3RvcjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQy
YzhmOGE1ZDBhNzNlYTc3ZS4uNjEzMzM3MDczN2U4MjZhYjA1ZTgwOTE5OTY3ODBmYThlNmQ1OTYw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCisjaW1wb3J0ICJfV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckludGVybmFsLmgiCiAKICNpZiBQTEFURk9STShN
QUMpCiAKQEAgLTg3LDcgKzg3LDYgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiBAaW1wbGVtZW50YXRpb24gX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgewot
ICAgIFJlZlB0cjxXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50PiBtX3JlbW90ZUluc3BlY3RvckNsaWVudDsKICAgICBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIH0KQEAgLTIwMSw3ICsyMDAsNyBAQCAt
ICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRp
c3BsYXlOYW1lOihOU1N0cmluZyAqKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVu
c2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0pOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVj
dG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3Rl
ZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpIHJl
dGFpbl0gYXV0b3JlbGVhc2VdKTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlckludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2NWY3ZTYyZTUxZmJl
OWZmNTE0ZDljMmJmMWI5MjM3YjNhMGFmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ckludGVybmFsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oIgorCisjaWYgIVRBUkdFVF9P
U19JUEhPTkUKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTsKK30KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAoKSB7CitAcGFja2FnZQorICAgIFJlZlB0cjxX
ZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5Owor
fQorQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vICFUQVJHRVRfT1Nf
SVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmNwcAppbmRleCA4YjlhYmQ3MGJkMGZmNjMzOWUyMmIzODM5ZmU3ZTMxYmRmMjYzZjk0Li4wNTI0
MjI1ZTY3NTkwNTM5MzdjZDMzMWJiNTJjZjMwY2U3Mjg4ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTk4LDYgKzk4LDE4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdoZW5Gcm9u
dGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQs
IHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlk
UmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vh
a1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkNyZWF0ZVRhYkZvckV4dGVuc2lvbiB7IGV4
dGVuc2lvbklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKaW5kZXggMjAzNDEwYWI0ZjE0YzlhODQx
YTAzOWJmOGEzOWE1YTIyYmI3NzBkZC4uN2NiOWFkZDk3NGQ5N2Y1NzY4MmRkODA2NWIxZjNmNmIy
MWI3ZjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIC8vIEFQSS4KICAgICB2b2lkIHJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2ws
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2
b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNv
bnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNv
dXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4
dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKIAogICAgIC8vIE5v
dGlmaWNhdGlvbnMuCiAgICAgdm9pZCBpbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjQ2MTFi
ZDFkM2YzMmM1MjYzMTU1MWYzOTZlMWY4NDA0MGU0ODhiZC4uZTY5MDAwNWQzYWJmYzE0N2Q4YzQ3
M2JiZDExOGU5MWY5MTI5MDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NjczLDYgKzQ2NzMsNyBAQAogCQk5OTk5NkE5RDI1MDA0
QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTZBOUUyNTAwNEJDQjAwNEY3NTU5IC8q
IF9XS0luc3BlY3RvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUwQTQgLyogQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTUz
Niw2ICs5NTM3LDcgQEAKIAkJCQk5MTk3OTQwOTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVj
dG9yQ2xpZW50LmggKi8sCiAJCQkJOTk0QzYwNDgyNTNGODIwMjAwQkRGMDYwIC8qIEFQSUluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAv
KiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8sCisJCQkJOTk5QjdGNEYyNTU0QkEzRjAw
RjQ1MEE0IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAgKi8sCiAJCQkJOTlCRTNCMTIyNTQy
MkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5oICovLAogCQkJCTMxQjM2Mjkw
MjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJ
MzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggNGYw
MTVjNWNmZGFhNGI0ZGFjZWQ4YjcwODFjMzFkZmU0ODU0NGI0Zi4uNjk2NDdiMzExNzk0ZjkzMDJj
NTYxZTY2YTk4ZmIzOGM2ZjQzZDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmNwcApAQCAtMTUyLDYgKzE1Miw2MiBAQCB2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbgogICAgIH0pOwogfQogCitKU0M6OkpTT2JqZWN0KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQoreworICAgIGlmICgh
cmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBh
dXRvIHZhbHVlT3JFeGNlcHRpb24gPSByZXN1bHQudmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlT3JF
eGNlcHRpb24uaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAg
IEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHZhbHVlT3JFeGNlcHRpb24udmFsdWUoKTsgICAKKyAgICBy
ZXR1cm4gdmFsdWUuZ2V0T2JqZWN0KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFi
SWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsKKyAgICAgICAgSlNPTjo6
VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUo
dGFiTmFtZSksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUodGFiSWNvblVSTC5zdHJpbmco
KSksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoc291cmNlVVJMLnN0cmluZygpKSwKKyAg
ICB9OworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3Bh
dGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygiY3JlYXRlVGFiRm9yRXh0ZW5zaW9uIl9zLCBXVEZN
b3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0
byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQocmVzdWx0LnZhbHVlKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChwYXJzZWRFcnJvci52YWx1ZSgpKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBFeHBlY3RlZCByZXN1bHQgaXMg
ZWl0aGVyIGFuIEVycm9yU3RyaW5nIG9yIHtleHRlbnNpb25UYWJJRDogPHN0cmluZz59LgorICAg
ICAgICBhdXRvIG9iamVjdFJlc3VsdCA9IHdlYWtUaGlzLT51bndyYXBFdmFsdWF0aW9uUmVzdWx0
QXNPYmplY3QocmVzdWx0KTsKKyAgICAgICAgaWYgKCFvYmplY3RSZXN1bHQpIHsKKyAgICAgICAg
ICAgIExPRyhJbnNwZWN0b3IsICJVbmV4cGVjdGVkIG5vbi1vYmplY3QgdmFsdWUgcmV0dXJuZWQg
ZnJvbSBJbnNwZWN0b3JGcm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24oKS4iKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBhdXRvKiBmcm9udGVuZEdsb2JhbE9iamVjdCA9IHdlYWtUaGlzLT5tX2Zy
b250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVj
dCgpOworICAgICAgICBKU0M6OkpTVmFsdWUgZm91bmRQcm9wZXJ0eSA9IG9iamVjdFJlc3VsdC0+
Z2V0KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJv
bnRlbmRHbG9iYWxPYmplY3QtPnZtKCksICJleHRlbnNpb25UYWJJRCJfcykpOworICAgICAgICBp
ZiAoIWZvdW5kUHJvcGVydHkgfHwgIWZvdW5kUHJvcGVydHkuaXNTdHJpbmcoKSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6OkludGVybmFsRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZm91bmRQcm9wZXJ0eS50b1dURlN0cmluZyhm
cm9udGVuZEdsb2JhbE9iamVjdCkgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggNjViMTUyOGZkM2I3MDNmZDli
ZTk0NzQyYmZhNTNjNGE2ZmRiNDVkYy4uYzk0NDVhZTZkYzUwYzE1ZjczNmQ4ODViZjczNGEyYjQy
YWI2NDNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBA
IC02NCw4ICs2NCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5z
aW9uSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwm
IHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYpOwogCiBwcml2YXRlOgorICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1
YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OkV2YWx1YXRpb25SZXN1bHQpOwogICAgIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsK
IAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRl
bmRDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCmluZGV4IDJjNzhlZDc1Y2NjM2E5NzZlZmU3NjBjY2JmOGQ4YzYxMDQ1
NDY1YzQuLmRjYmVhYTAyZjliYTVhYjZjNDhlOTdlODFiYTM5OTc2ZTJjZmJmOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
CkBAIC0yNSw2ICsyNSw4IEBACiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4
dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgVW5yZWdpc3RlckV4
dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Oklu
c3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisKKyAgICBDcmVhdGVUYWJGb3JF
eHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25V
UkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcsIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415099</attachid>
            <date>2020-11-30 22:25:53 -0800</date>
            <delta_ts>2020-12-04 23:03:43 -0800</delta_ts>
            <desc>Consolidated v1 (for EWS)</desc>
            <filename>bug-219380-20201130222552.patch</filename>
            <type>text/plain</type>
            <size>64062</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRjMGNmMWFiYWIzMjRh
NDI5MGM5NTNmMWU0ODE4ODQwMzBhOTRhNS4uMmM3MTY0MzAxNGM1YTMxYjBhOTQ4MmRhZTgyZWQ4
YjAxZTc4MGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTExLTMwICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciBzaG91bGQgbm90IGlnbm9yZSBhbGwgZXhjZXB0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5Mzc4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyBXZWIgSW5zcGVjdG9yIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDogTWFrZSBldmFsdWF0ZUluV29ybGQgcHVibGlj
IGFuZCBleHBvcnRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlRXhwcmVzc2lvbik6CisgICAg
ICAgIEV2YWx1YXRlIGFuZCBwYXNzIGFsb25nIHRoZSByZXN1bHQgd2hldGhlciBpdCdzIGEgdmFs
dWUgb3IgZXhjZXB0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzRGVidWdnaW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1RpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Ojppc1Byb2ZpbGluZ0phdmFTY3JpcHQpOgorICAgICAgICBSZWZhY3RvciB0aGUgY29tbW9uIGNv
ZGUgdG8gdGFrZSBhbiBFdmFsdWF0aW9uUmVzdWx0IGFuZCBmaWd1cmUgb3V0IGlmIHRoZSB2YWx1
ZSBpcyB0cnVlIG9yIGZhbHN5LgorCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOiBBZGQg
YW4gSW5zcGVjdG9yIGxvZ2dpbmcgY2hhbm5lbCwgZm9yIGxvZ2dpbmcgZXJyb3JzLgorCiAyMDIw
LTExLTMwICBKYW1lcyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBTdXBwb3J0IEtIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKaW5kZXggZTM2YzQ2NmZiNTI2NTI5MmY2Y2M0YTc0MjFmZWViN2NkM2FiOTRiZi4uNjE4
MDJhZjgzOGIyZTY1OWMyNTdjZDM3MTY5ZjYzNzczMDYwY2JkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBm
b3IgY3JlYXRpbmcgZXh0ZW5zaW9uIHRhYnMgaW4gV2ViSW5zcGVjdG9yVUkgdmlhIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5MzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
KToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBl
Ll9tYWtlTmV4dEV4dGVuc2lvblRhYklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuY3JlYXRlVGFiRm9y
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAg
ICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzOgorICAgICAgICAoV0ku
R2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkdlbmVy
YWxUYWJCYXJJdGVtLmdldCBkaXNwbGF5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzOgorICAgICAgICAoV0kuUGlubmVkVGFi
QmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuUGlubmVkVGFiQmFySXRl
bSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdJLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgdGFiQmFySXRlbSk6CisgICAg
ICAgIChXSS5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUudGFiSW5mbyk6CisgICAgICAgIChXSS5U
YWJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG1hbmFnZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50Vmlldy5jc3M6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaC4KKyAgICAgICAgKC5jb250
ZW50LXZpZXcud2ViLWluc3BlY3Rvci1leHRlbnNpb24tdGFiID4gaWZyYW1lKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3
LmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmguCisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50
Vmlldyk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5w
cm90b3R5cGUudGFiSW5mbyk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwb3J0c1NwbGl0Q29udGVu
dEJyb3dzZXIpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcucHJvdG90eXBlLmdldCBleHRlbnNpb25UYWJJRCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6CisKIDIw
MjAtMTEtMjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogaW1wbGVtZW50IE11bHRpbWFwLnByb3RvdHlwZS50YWtlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YWQ3OGMwMDU4NWMyYjFmODg3MmZhYzk1ZjU5Y2NhZWM0OTY0ZDcyMy4uNWE3MzM2ZjM5ZWQzMmFi
NThiZjgxMzM0MTdlYzZmYzJjNzk3NTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NiBAQAorMjAy
MC0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBleHRlbnNpb24gdGFicyBp
biBXZWJJbnNwZWN0b3JVSSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgbWV0aG9kIHRvIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBmb3IgY3JlYXRpbmcgYW4gZXh0ZW5zaW9uIHRhYiBpbiB0aGUK
KyAgICAgICAgV2ViSW5wZWN0b3JVSSBpbnRlcmZhY2UuIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW1w
bGVtZW50IGJyb3dzZXIuZGV2dG9vbHMucGFuZWxzLmNyZWF0ZSgpCisgICAgICAgIGFzIHByb3Zp
ZGVkIGJ5IHRoZSBXZWIgRXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dn
aW5nLmg6IEFkZCBJbnNwZWN0b3IgY2hhbm5lbCBmb3IgZXJyb3IgbG9nZ2luZy4KKyAgICAgICAg
KiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDogQWRkIGEgbWlzc2luZyBFbnVtVHJh
aXRzIGNhc2UuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogU291cmNlcy50eHQ6IEFkZCBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
Okluc3BlY3RvckV4dGVuc2lvbik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6
Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIpOgor
ICAgICAgICBJbnNwZWN0b3IgZXh0ZW5zaW9ucyBuZWVkIHRvIGJlIGFibGUgdG8gaW52b2tlIGNv
bW1hbmRzIGluIHRoZSBXZWJQcm9jZXNzLXNpZGUKKyAgICAgICAgZXh0ZW5zaW9uIHByb3h5IGNv
bnRyb2xsZXIsIHNvIGtlZXAgYSBXZWFrUmVmIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlciB0
aGF0CisgICAgICAgIGNyZWF0ZWQgdGhlIGV4dGVuc2lvbiBvYmplY3QuIEFsc28sIGltcGxlbWVu
dCB0aGUgbmV3IEFQSSBieSBmb3J3YXJkaW5nIGl0IG9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciByZWdp
c3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgQWRhcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBhcyBleHBsYWluZWQgYWJvdmUuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVy
bmFsLmg6IEFkZCBuZXcgaW5pdGlhbGl6ZXJzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVu
c2lvbiBpbml0V2l0aElkZW50aWZpZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS0luc3Bl
Y3RvckV4dGVuc2lvbiBpbml0V2l0aElkZW50aWZpZXI6Zm9yTG9jYWxJbnNwZWN0b3I6XSk6Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBpbml0V2l0aElkZW50aWZpZXI6Zm9yUmVt
b3RlSW5zcGVjdG9yOl0pOgorICAgICAgICBBZGFwdCB0byB0aGUgbmV3IEFQSSBvYmplY3QgY29u
c3RydWN0b3IgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgICAgICgtW19XS0luc3BlY3RvckV4
dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTp0YWJJY29uVVJMOnNvdXJjZVVSTDpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG5ldyBBUEkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJu
YWwuaDogQWRkZWQuCisgICAgICAgIE1ha2UgdGhlIFJlZlB0cjxSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eT4gbWVtYmVyIHZhcmlhYmxlIGFjY2Vzc2libGUgdG8gdGhlIEFQSSBvYmplY3QgY29uc3Ry
dWN0b3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgQWRhcHQgdG8gbmV3IGNvbnN0cnVjdG9yIGFzIGV4cGxh
aW5lZCBhYm92ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRh
YkZvckV4dGVuc2lvbik6CisgICAgICAgIEZvcndhcmQgdGhlIHJlcXVlc3QgdG8gdGhlIGluc3Bl
Y3RvciBmcm9udGVuZCBXZWJQcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZGQgYSBuZXcgYXN5bmMgSVBDIGNvbW1hbmQgZm9yIGNyZWF0aW5nIGEgbmV3IGluc3BlY3Rv
ciBleHRlbnNpb24gdGFiLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9u
UmVzdWx0QXNPYmplY3QpOgorICAgICAgICBBZGRlZC4gUHVsbCBvdXQgdGhlIGNvZGUgbmVlZGVk
IGZvciBlcnJvci1oYW5kbGluZyB0aGlzIGNvbW1vbiBvcGVyYXRpb24uCisKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRl
bnNpb24pOgorICAgICAgICBBZGRlZC4gQ2FsbCBpbnRvIEluc3BlY3RvckZyb250ZW5kQVBJIHRv
IHJlcXVlc3QgYSBuZXcgdGFiLiBUdXJuIHRoZSByZXN1bHQKKyAgICAgICAgaW50byBhbiBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvciBvciBJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCBhbmQgc2VuZCB0
aGUgSVBDIHJlcGx5LgorCisKKzIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyIHNob3VsZCBub3QgaWdub3JlIGFsbCBleGNlcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzNzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBtZXRob2QgdXNlZCBm
b3IgZnJvbnRlbmQgZXhwcmVzc2lvbiBldmFsdWF0aW9ucyBpcyAKKyAgICAgICAgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbnMuIFRoaXMgbWV0aG9kIGNhbGxzCisg
ICAgICAgIGV2YWx1YXRlSW5Xb3JsZCBhbmQgcmV0dXJucyBudWxsb3B0IGlmIGFuIGV4Y2VwdGlv
biBoYXBwZW5zLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBldmFsdWF0ZUluV29ybGQgZGly
ZWN0bHkgYW5kIHVzaW5nIHRoZSBleGlzdGluZyBWYWx1ZU9yRXhjZXB0aW9uCisgICAgICAgIHR5
cGUgZnJvbSBpbiBXZWJDb3JlLiBDaGFuZ2Ugb3VyIEV2YWx1YXRpb25SZXN1bHQgdHlwZSB0byB1
c2UgVmFsdWVPckV4Y2VwdGlvbiAKKyAgICAgICAgaW4gcGxhY2Ugb2YgSlNDOjpKU1ZhbHVlLiBW
YWx1ZU9yRXhjZXB0aW9uIGlzIEV4cGVjdGVkPEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uRGV0YWls
cz4KKyAgICAgICAgc28gdGhpcyBpcyBleHBvc2luZyBtb3JlIGVycm9yIGluZm9ybWF0aW9uIGlu
IGFkZGl0aW9uIHRvIHRoZSBKU0M6OkpTVmFsdWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6Cisg
ICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBkZWJ1Z2dpbmcgY29kZSB0aGF0IHdhcyBhY2NpZGVu
dGFsbHkgbGVmdCBpbi9jb21tZW50ZWQgb3V0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRl
bnNpb25FcnJvckZyb21SZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JG
cm9tRXZhbHVhdGlvblJlc3VsdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5z
aW9uKToKKyAgICAgICAgQWRhcHQgdG8gdXNpbmcgdGhlIG5ldyByZXN1bHQgdHlwZS4gVXNlIHRo
ZSBJbnNwZWN0b3JFeHRlbnNpb25JRCB0eXBlIHdoZXJlIHBvc3NpYmxlLgorCiAyMDIwLTExLTMw
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
YW4gZXhwZXJpbWVudGFsIGZsYWcgc3BlY2lmaWMgdG8gVlA5IHByb2ZpbGUgMgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGM1YTZjYzAzZGU4
OTY4OWNhY2VjM2ExY2ZlZWFiZjJkNmQzZTk3N2MuLjk2NDNiOTJmZjhmMDczM2E4OGM4OWM0YjBk
MTQ3MGRlYzBiY2U5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgSlNDOjpKU1ZhbHVlIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmFsdWVPckV4Y2VwdGlvbiBleGVjdXRl
VXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4
ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFJlc29sdmVGdW5jdGlvbiYmKTsKKyAgICBWYWx1
ZU9yRXhjZXB0aW9uIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9N
V3JhcHBlcldvcmxkJik7CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSWdub3JpbmdFeGNlcHRp
b24oY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUlu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7CiAKQEAgLTE3Nyw3ICsxNzgsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZh
bHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01X
cmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKICAgICBWYWx1ZU9yRXhj
ZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYpOwotICAgIFZhbHVlT3JFeGNlcHRpb24gZXZhbHVhdGVJbldvcmxkKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICBWYWx1ZU9yRXhj
ZXB0aW9uIGNhbGxJbldvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIERPTVdyYXBwZXJX
b3JsZCYpOwogICAgIAogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJs
ZU1vZHVsZVNjcmlwdCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggMDJiYjRjYTVjNDE3YjYxNWI2NmExMzA5ZTQw
NDJiNDg0ZjMwNDdmYy4uNjUyZTRiZTY4NTc1YjA0YjAzZDJhZjAxMTY5MjExZGQzNTMzMzhmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBT
dHJpbmcmIGV4cAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IGV2YWx1YXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTsKKyAgICBWYWx1ZU9yRXhjZXB0
aW9uIHJlc3VsdCA9IGV2YWx1YXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTsKICAgICBpZiAob3B0
aW9uYWxSZXN1bHRIYW5kbGVyKQogICAgICAgICBvcHRpb25hbFJlc3VsdEhhbmRsZXIocmVzdWx0
KTsKIH0KQEAgLTE5NywxNCArMTk3LDEzIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCkKICAgICB9CiB9CiAKLUpTQzo6SlNW
YWx1ZSBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlRXhwcmVzc2lvbihj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCitWYWx1ZU9yRXhjZXB0aW9uIEluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbikKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZFBhZ2UpOwogICAgIEFTU0VSVCghbV9zdXNw
ZW5kZWQpOwogICAgIEFTU0VSVChtX3F1ZXVlZEV2YWx1YXRpb25zLmlzRW1wdHkoKSk7CiAKLSAg
ICBKU0M6OlN1c3BlbmRFeGNlcHRpb25TY29wZSBzY29wZSgmbV9mcm9udGVuZFBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS52bSgpKTsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29k
ZShleHByZXNzaW9uKSk7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShleHByZXNzaW9uKSwgbWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcjo6ZXZhbHVhdGVFeHByZXNzaW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyLmgKaW5kZXggNDk2YWRlY2ViMzAwZTIwNTRhNWEzZmNkNDg1
MmM5MTdkNjk4ZGY5My4uYzU5OWU0YWQ0MjBhOGRjMTZkNmM2NGRmNTk1NTk4ZWFmZmIxMzJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3
dGYvSlNPTlZhbHVlcy5oPgpAQCAtMzMsMTQgKzMyLDIxIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIEpTVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKK3N0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogCiBjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIEV2YWx1YXRpb25FcnJvciB7IEV4ZWN1dGlvblN1c3BlbmRlZCwgQ29udGV4dERlc3Ryb3ll
ZCB9OwotICAgIHVzaW5nIEV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxKU0M6OkpTVmFsdWUs
IEV2YWx1YXRpb25FcnJvcj47CisgICAgdXNpbmcgVmFsdWVPckV4Y2VwdGlvbiA9IEV4cGVjdGVk
PEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uRGV0YWlscz47CisgICAgdXNpbmcgRXZhbHVhdGlvblJl
c3VsdCA9IEV4cGVjdGVkPFZhbHVlT3JFeGNlcHRpb24sIEV2YWx1YXRpb25FcnJvcj47CiAgICAg
dXNpbmcgRXZhbHVhdGlvblJlc3VsdEhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV2
YWx1YXRpb25SZXN1bHQpPjsKIAogICAgIGVudW0gY2xhc3MgVW5zdXNwZW5kU29vbiB7IFllcywg
Tm8gfTsKQEAgLTc4LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV2YWx1YXRlT3JRdWV1
ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiwgRXZhbHVhdGlvblJlc3VsdEhhbmRsZXImJiBoYW5k
bGVyID0geyB9KTsKICAgICB2b2lkIGV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKTsKICAgICB2
b2lkIGludmFsaWRhdGVRdWV1ZWRFeHByZXNzaW9ucygpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJik7CisgICAgVmFsdWVPckV4Y2VwdGlvbiBldmFs
dWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJik7CiAKICAgICBXZWFrUHRyPFBhZ2U+IG1fZnJv
bnRlbmRQYWdlOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBFdmFsdWF0aW9uUmVzdWx0
SGFuZGxlcj4+IG1fcXVldWVkRXZhbHVhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggNDdi
Y2RmNzVkNWY1Nzg3Mzc2MzU0NWEzNzA5YTNmNzUwZDJiZjg2Yi4uMTEzMTk2MjQ4NGIxNTQ3MzA5
NGU2N2E0ZTIyOWVlYTBkN2IxNzZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uRGV0YWlscy5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkUmVxdWVzdC5oIgpAQCAtNDMsNiArNDQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCkBAIC0zMjMsMTEgKzMyNSwyMyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiAgICAgc2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQoY29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdodChwcmVmZXJyZWRIZWln
aHQsIGluc3BlY3RlZFBhZ2VIZWlnaHQpKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjppc0RlYnVnZ2luZ0VuYWJsZWQoKQorT3B0aW9uYWw8Ym9vbD4gSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVhbihJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewotICAgIGF1
dG8gcmVzdWx0ID0gbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhS
ZXN1bHRTeW5jKCJpc0RlYnVnZ2luZ0VuYWJsZWQiX3MpOwotICAgIHJldHVybiByZXN1bHQgJiYg
cmVzdWx0LnZhbHVlKCkudG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5mcm9udGVu
ZEdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOwor
ICAgIGlmICh2YWx1ZU9yRXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gdmFsdWVPckV4Y2VwdGlv
bi52YWx1ZSgpLnRvQm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZnJvbnRlbmRHbG9i
YWxPYmplY3QoKSk7CiAKKyAgICBMT0coSW5zcGVjdG9yLCAiRW5jb3VudGVyZWQgZXhjZXB0aW9u
IHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwgdmFsdWVPckV4Y2VwdGlv
bi5lcnJvcigpLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworfQorCitib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzRGVidWdnaW5n
RW5hYmxlZCgpCit7CisgICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9mcm9u
dGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRTeW5jKCJpc0RlYnVn
Z2luZ0VuYWJsZWQiX3MpKS52YWx1ZU9yKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpzZXREZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTMz
Nyw4ICszNTEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNldERlYnVn
Z2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkKCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygi
aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiX3MpOwotICAgIHJldHVybiByZXN1bHQgJiYgcmVz
dWx0LnZhbHVlKCkudG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5mcm9udGVuZEds
b2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4gZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVhbihtX2Zy
b250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdFN5bmMoImlzVGlt
ZWxpbmVQcm9maWxpbmdFbmFibGVkIl9zKSkudmFsdWVPcihmYWxzZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKQEAgLTM0OCw4ICszNjEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAKIGJv
b2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNQcm9maWxpbmdKYXZhU2NyaXB0KCkK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENv
bW1hbmRXaXRoUmVzdWx0U3luYygiaXNQcm9maWxpbmdKYXZhU2NyaXB0Il9zKTsKLSAgICByZXR1
cm4gcmVzdWx0ICYmIHJlc3VsdC52YWx1ZSgpLnRvQm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0
Y2hlci0+ZnJvbnRlbmRHbG9iYWxPYmplY3QoKSk7CisgICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1
bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhS
ZXN1bHRTeW5jKCJpc1Byb2ZpbGluZ0phdmFTY3JpcHQiX3MpKS52YWx1ZU9yKGZhbHNlKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzdGFydFByb2ZpbGluZ0phdmFT
Y3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggYWQxOGY2MDgwNWQxY2UxNmU2OTQyZWYzMjcwMjk5
NDg0NTlhZTc5OS4uYmNmZmQyMmQ3NzlmOTljNTVjNjM0YjI3NmFhMWI5ODQ3OGIxMDIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKKyAgICBPcHRpb25hbDxib29s
PiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6RXZhbHVhdGlvblJlc3VsdCk7CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3Bl
Y3RlZFBhZ2VDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdl
IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGJmOWM5NWU1YzQw
ZTgwYjhjYjAwNWQyNTBkNWY3NTAxY2YxYjI0OWIuLjg2Y2M3N2ViZDU0ODczMTE1NWJmOGM5NjQx
YTJjOTM1NDI1ZjQyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTcxLDYgKzcx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJbmRleGVk
REIpIFwKICAgICBNKEluZGV4ZWREQk9wZXJhdGlvbnMpIFwKKyAgICBNKEluc3BlY3RvcikgXAog
ICAgIE0oTGF5ZXJzKSBcCiAgICAgTShMYXlvdXQpIFwKICAgICBNKEZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCAwMmUzOTZjMzQyNGY2MjQ3ZTAxYTBmYWY1MDljM2Ji
Mjk3NzliMWVlLi5lNWQyM2FlNDA3MzkyODFiMzMxY2U2ZjY1MTViMTE1ZDExMjk2MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIuanMKQEAgLTI5LDcgKzI5LDE4IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAg
ewogICAgICAgICBzdXBlcigpOwogCisgICAgICAgIC8vIE1hcCBmcm9tIGV4dGVuc2lvbklEIC0+
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi4KICAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAg
PSBuZXcgTWFwOworICAgICAgICAvLyBNYXAgZnJvbSBleHRlbnNpb25UYWJJRCAtPiBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy4KKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9u
VGFic01hcCA9IG5ldyBNYXA7CisgICAgICAgIC8vIE11bHRpbWFwIGZyb20gZXh0ZW5zaW9uSUQg
LT4ge2V4dGVuc2lvblRhYklELCAuLi59LgorICAgICAgICB0aGlzLl9hY3RpdmVUYWJzRm9yRXh0
ZW5zaW9uTWFwID0gbmV3IE11bHRpbWFwOworICAgICAgICB0aGlzLl9uZXh0RXh0ZW5zaW9uVGFi
SUQgPSAxOworICAgIH0KKworICAgIF9tYWtlTmV4dEV4dGVuc2lvblRhYklEKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9uZXh0RXh0ZW5zaW9uVGFiSUQrKzsKICAgICB9CiAKICAgICAv
LyBQdWJsaWMKQEAgLTU1LDggKzY2LDMyIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAg
ICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlk
UmVxdWVzdDsKICAgICAgICAgfQogCisgICAgICAgIGxldCBleHRlbnNpb25UYWJJRHNUb1JlbW92
ZSA9IHRoaXMuX2FjdGl2ZVRhYnNGb3JFeHRlbnNpb25NYXAudGFrZShleHRlbnNpb25JRCk7Cisg
ICAgICAgIGZvciAobGV0IGV4dGVuc2lvblRhYklEIG9mIGV4dGVuc2lvblRhYklEc1RvUmVtb3Zl
KSB7CisgICAgICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSB0aGlzLl9leHRlbnNpb25UYWJz
TWFwLnRha2UoZXh0ZW5zaW9uVGFiSUQpOworICAgICAgICAgICAgV0kudGFiQnJvd3Nlci5jbG9z
ZVRhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgfQorCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuRXZlbnQuRXh0ZW5zaW9uUmVtb3ZlZCwge2V4dGVuc2lvbn0pOwogICAgIH0KKwor
ICAgIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihleHRlbnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVS
TCwgc291cmNlVVJMKQorICAgIHsKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVu
c2lvbklETWFwLmdldChleHRlbnNpb25JRCk7CisgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7Cisg
ICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gY3JlYXRlIHRhYiBm
b3IgZXh0ZW5zaW9uIHdpdGggdW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQsICIgc291cmNlVVJM
OiAiLCBzb3VyY2VVUkwpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICBsZXQg
ZXh0ZW5zaW9uVGFiSUQgPSBgV2ViRXh0ZW5zaW9uVGFiLSR7dGhpcy5fbWFrZU5leHRFeHRlbnNp
b25UYWJJRCgpfS0ke2V4dGVuc2lvbklEfWA7CisgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9
IG5ldyBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyhleHRlbnNpb24sIGV4
dGVuc2lvblRhYklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOworCisgICAgICAg
IHRoaXMuX2FjdGl2ZVRhYnNGb3JFeHRlbnNpb25NYXAuYWRkKGV4dGVuc2lvbklELCBleHRlbnNp
b25UYWJJRCk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvblRhYnNNYXAuc2V0KGV4dGVuc2lvblRh
YklELCB0YWJDb250ZW50Vmlldyk7CisgICAgICAgIFdJLnRhYkJyb3dzZXIuYWRkVGFiRm9yQ29u
dGVudFZpZXcodGFiQ29udGVudFZpZXcpOworCisgICAgICAgIHJldHVybiB7ZXh0ZW5zaW9uVGFi
SUR9OworICAgIH0KIH07CiAKIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuRXZl
bnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
aW5kZXggYjg2ZGY1ZmYwNTllZWJmODBlMDMyNDlmOGYzMzhjNTk1YjNlZDk4Yy4uYjlmZjU1ZDMy
Y2FiMmFhNmE0OTI1YzYxNmMzNjcwMjVjY2FkMDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMjQ2LDYgKzI0Niw3IEBACiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9VUkxCcmVha3BvaW50UG9wb3Zlci5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9W
YXJpYWJsZXMuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9XZWJTb2NrZXRDb250ZW50Vmlldy5jc3MiPgogCiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxl
dGlvbkNvbnRyb2xsZXIuY3NzIj4KQEAgLTU4MSw2ICs1ODIsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMi
Pjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RldGFpbHNTZWN0aW9uLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJv
dy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmlu
ZGV4IGY5ZDIwYWYxMWY0NmNjZGVkNjVkM2RjMWE5YjQ2ODNiZjRhZDZkOTIuLjBhZDdkYWVkN2E5
NTU3NTk3ZjI2MWJkMGZmNGM3NzBmNjMzZWQzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckZyb250ZW5kQVBJLmpzCkBAIC0yMDksNCArMjA5LDExIEBAIEluc3BlY3RvckZyb250ZW5kQVBJ
ID0gewogICAgIHsKICAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9s
bGVyLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQpOwogICAgIH0sCisKKyAgICAvLyBS
ZXR1cm5zIGEgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZSBpZiBhbiBlcnJvciBv
Y2N1cnJlZCwgb3RoZXJ3aXNlIGFuIG9iamVjdAorICAgIC8vIHdpdGggYW4gJ2luc3BlY3RvckV4
dGVuc2lvbklEJyBrZXkgcmVwcmVzZW50aW5nIHRoZSB0YWIgaWRlbnRpZmllciBmb3IgdGhlIG5l
d2x5IGNyZWF0ZWQgdGFiLgorICAgIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihleHRlbnNpb25JRCwg
dGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJ
LnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLmNyZWF0ZVRhYkZvckV4dGVuc2lvbihleHRl
bnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMKTsKKyAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJh
bFRhYkJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HZW5lcmFsVGFiQmFySXRlbS5qcwppbmRleCAzMDZlNzE4ZmFiZWIxN2NjNmFlODgwYWRkMjg2
NzI0OWI5M2VkNmZkLi41MzkzZWU0MjhkM2QwZWIzOWJlYzAxNDYzNmYzNDhjNWM1MjRkZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5l
cmFsVGFiQmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qcwpAQCAtMzIsNyArMzIsNyBAQCBXSS5HZW5lcmFs
VGFiQmFySXRlbSA9IGNsYXNzIEdlbmVyYWxUYWJCYXJJdGVtIGV4dGVuZHMgV0kuVGFiQmFySXRl
bQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQ29udGVudFZpZXcgaW5zdGFuY2Vv
ZiBXSS5UYWJDb250ZW50Vmlldyk7CiAKLSAgICAgICAgbGV0IHtpbWFnZSwgZGlzcGxheU5hbWUs
IHRpdGxlfSA9IHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnRhYkluZm8oKTsKKyAgICAgICAg
bGV0IHtpbWFnZSwgZGlzcGxheU5hbWUsIHRpdGxlfSA9IHRhYkNvbnRlbnRWaWV3LnRhYkluZm8o
KTsKICAgICAgICAgcmV0dXJuIG5ldyBXSS5HZW5lcmFsVGFiQmFySXRlbSh0YWJDb250ZW50Vmll
dywgaW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRsZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFy
SXRlbS5qcwppbmRleCAzNDJjNjc5ODg0OTE5NGNlM2RkZDgxZTU5YTU4MTEzMmYwNGRiZTQ5Li4x
OWU4NTYzYWM3MTNiYzA0YmNhYWMzNDI4YWU4NDZmYzczY2FjYmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRh
YkJhckl0ZW0uanMKQEAgLTM4LDcgKzM4LDcgQEAgV0kuUGlubmVkVGFiQmFySXRlbSA9IGNsYXNz
IFBpbm5lZFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJCYXJJdGVtCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3
KTsKIAotICAgICAgICBsZXQge2ltYWdlLCBkaXNwbGF5TmFtZSwgdGl0bGV9ID0gdGFiQ29udGVu
dFZpZXcuY29uc3RydWN0b3IudGFiSW5mbygpOworICAgICAgICBsZXQge2ltYWdlLCBkaXNwbGF5
TmFtZSwgdGl0bGV9ID0gdGFiQ29udGVudFZpZXcudGFiSW5mbygpOwogICAgICAgICByZXR1cm4g
bmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0odGFiQ29udGVudFZpZXcsIGltYWdlLCBkaXNwbGF5TmFt
ZSwgdGl0bGUpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGZkMzIwODM0
ZTRiMTdmNjAyMWYzNTU0MTRlMjE3ZTFmNTg5M2EzNGIuLmUwNGNjOGZlZTllMDhlOWY4NjcxOTBi
NzlkNWUwMDk3Y2ZmMzM0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0zMyw3ICszMyw2
IEBAIFdJLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50VmlldwogICAgICAgICBzdXBlcihudWxsKTsKIAogICAgICAgICB0aGlzLl9pZGVudGlm
aWVyID0gdGFiSW5mby5pZGVudGlmaWVyOwotICAgICAgICB0aGlzLl90YWJCYXJJdGVtID0gdGhp
cy5jb25zdHJ1Y3Rvci5zaG91bGRQaW5UYWIoKSA/IFdJLlBpbm5lZFRhYkJhckl0ZW0uZnJvbVRh
YkNvbnRlbnRWaWV3KHRoaXMpIDogV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRW
aWV3KHRoaXMpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0
b3IgPSBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgfHwgbnVsbDsKICAgICAgICAg
dGhpcy5fZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMgfHwgW107CiAKQEAgLTgyLDYgKzgxLDExIEBAIFdJLlRhYkNvbnRlbnRW
aWV3ID0gY2xhc3MgVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAg
Z2V0IHRhYkJhckl0ZW0oKQogICAgIHsKKyAgICAgICAgLy8gVGhpcyBpcyBjcmVhdGVkIGxhemls
eSB0byBicmVhayBhIGRlcGVuZGVuY3kgY3ljbGUgZm9yIGR5bmFtaWNhbGx5LWNyZWF0ZWQgVGFi
Q29udGVudFZpZXdzLgorICAgICAgICAvLyBUYWJDb250ZW50Vmlld3Mgd2l0aCBhIG5vbi1zdGF0
aWMgdGFiSW5mbygpIG11c3QgYmUgZnVsbHkgY29uc3RydWN0ZWQgYmVmb3JlIGNhbGxpbmcgdGFi
SW5mbygpLgorICAgICAgICBpZiAoIXRoaXMuX3RhYkJhckl0ZW0pCisgICAgICAgICAgICB0aGlz
Ll90YWJCYXJJdGVtID0gdGhpcy5jb25zdHJ1Y3Rvci5zaG91bGRQaW5UYWIoKSA/IFdJLlBpbm5l
ZFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KHRoaXMpIDogV0kuR2VuZXJhbFRhYkJhckl0
ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KHRoaXMpOworCiAgICAgICAgIHJldHVybiB0aGlzLl90YWJC
YXJJdGVtOwogICAgIH0KIApAQCAtMTI1LDYgKzEyOSwxMiBAQCBXSS5UYWJDb250ZW50VmlldyA9
IGNsYXNzIFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgLy8gQ2Fu
IGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgcmV0dXJuIHRoaXMuY29uc3Ry
dWN0b3IudGFiSW5mbygpOworICAgIH0KKwogICAgIGF0dGFjaGVkKCkKICAgICB7CiAgICAgICAg
IHN1cGVyLmF0dGFjaGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5jc3Mg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50Vmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFhNmIyMmFkYzJjODdlZGQ0
MGQ1MzM1OWI5MTc3ZjI3MzE3MTAyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRl
bnRWaWV3LmNzcwpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmNvbnRlbnQtdmlldy53
ZWItaW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUgeworICAgIGJvcmRlcjogMDsKKwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICBy
aWdodDogMDsKKyAgICBib3R0b206IDA7CisKKyAgICAvKiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0
aGUgaWZyYW1lIHRvIGV4cGFuZCBpZiBpdHMgaW50cmluc2ljIHNpemUKKyAgICAgICBpcyBzbWFs
bGVyIHRoYW4gdGhlIHRhYiBjb250ZW50IHZpZXcuICovCisgICAgd2lkdGg6IDEwMCU7CisgICAg
aGVpZ2h0OiAxMDAlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRl
bnNpb25UYWJDb250ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWY0YWEyNTViOTc0NjkzMTk2NDE3
MzA1NTA1OThmOWU1NDU4N2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcuanMKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLldlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldworeworICAgIGNvbnN0cnVjdG9yKGV4dGVu
c2lvbiwgZXh0ZW5zaW9uVGFiSUQsIHRhYkxhYmVsLCBpY29uVVJMLCBzb3VyY2VVUkwpCisgICAg
eworICAgICAgICBsZXQgdGFiSW5mbyA9IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXI6IFdlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGUsCisgICAgICAgICAgICBpbWFnZTog
aWNvblVSTCwKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0YWJMYWJlbCwKKyAgICAgICAgICAg
IHRpdGxlOiB0YWJMYWJlbCwKKyAgICAgICAgfTsKKyAgICAgICAgc3VwZXIodGFiSW5mbywge30p
OworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKyAgICAgICAgdGhpcy5f
ZXh0ZW5zaW9uVGFiSUQgPSBleHRlbnNpb25UYWJJRDsKKyAgICAgICAgdGhpcy5fdGFiSW5mbyA9
IHRhYkluZm87CisgICAgICAgIHRoaXMuX3NvdXJjZVVSTCA9IHNvdXJjZVVSTDsKKyAgICB9CisK
KyAgICAvLyBQdWJsaWMKKworICAgIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9i
amVjdC5zaGFsbG93Q29weSh0aGlzLl90YWJJbmZvKTsKKyAgICB9CisKKyAgICBnZXQgdHlwZSgp
CisgICAgeworICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXcuVHlwZTsKKyAgICB9CisKKyAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2Vy
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGdldCBleHRlbnNp
b25UYWJJRCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uVGFiSUQ7Cisg
ICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyLmluaXRpYWxMYXlvdXQoKTsKKworICAgICAgICBsZXQgaWZyYW1lRWxlbWVu
dCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKSk7CisgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gdGhpcy5fc291cmNlVVJMOworICAg
IH0KK307CisKK1dJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGUgPSAi
d2ViLWluc3BlY3Rvci1leHRlbnNpb24tdGFiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5k
ZXggMjBkY2M1ZTg2NDFkNDM4N2VkMzU5NzI4ZGRhNzUzZmU1YmJmMDc3MC4uZjQ5ZjM4YjZhNWY5
ZDNkNzA5NTJkMmUxMjFjODk5NWRlY2U5OGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
QEAgLTYxLDYgKzYxLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShJbmNyZW1lbnRhbFBERikgXAog
ICAgIE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCiAgICAgTShJbmRleGVkREIpIFwKKyAgICBN
KEluc3BlY3RvcikgXAogICAgIE0oS2V5SGFuZGxpbmcpIFwKICAgICBNKExheWVycykgXAogICAg
IE0oTGF5b3V0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JF
eHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuaAppbmRleCBlZjNmNWViZmI4ZDE3MDUyZDBiMzZlYTI3NGNjZmY1ZDcwMzY1YTRkLi42
OTUzOTJiOWMwOGMyNGMwYTg4YmQ0YzBhZWI4MjE3YTI1YTcwMDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTUwLDggKzUwLDkgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAog
ICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yLAotICAgICAgICBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCwKICAgICAgICAgV2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCwKKyAgICAgICAgV2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvciwKKyAgICAgICAgV2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QsCiAgICAgICAgIFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZAogICAgID47
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2Yy
ZWY4Ni4uODcyOGU0Zjc0NmIwZDgzYWMxNDY0YWI4MzY0YTFiZDY3YjEyYWFmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0zNTAsNiArMzUwLDcgQEAgVUlQcm9jZXNzL0FQSS9BUElGcmFtZVRyZWVOb2RlLmNw
cAogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQ
SUhpdFRlc3RSZXN1bHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRp
b24uY3BwCitVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25EYXRhLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYTNkZDRkZDI1MWM0NjM5ODNjYTQ0MzA1NTcyYjQ3YmEwMjRiZjA5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4
dGVuc2lvbi5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKKworI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVz
LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIK
KworbmFtZXNwYWNlIEFQSSB7CisKK0luc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0ZW5z
aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyUHJveHkpCisgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KG1ha2VXZWFrUHRyKGV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkpCit7Cit9CisKK1JlZjxJ
bnNwZWN0b3JFeHRlbnNpb24+IEluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyUHJveHkpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZpZXIsIGV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eSkpOworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlVGFiKGNvbnN0
IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3Qg
V1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LT5jcmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJM
LCBzb3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgK
aW5kZXggN2UwZjE4YWZlMmM5NGVjOTc1MjdmNmI3YWZiNDBkYWNlZWUwNDgwYi4uYzA1YTljNjM2
N2I5ZjBlNTMxOTkwNjU4MWFiNzA3MGQwZTA1MTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMjgsMjYgKzI4LDMw
IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk7Cit9CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb24g
ZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yRXh0
ZW5zaW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JFeHRlbnNpb24+IGNy
ZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihpZGVudGlmaWVyKSk7Ci0gICAgfQot
Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyKQotICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgIHsKLSAgICB9
CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JFeHRlbnNpb24+IGNyZWF0ZShjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eSYpOworICAgIEluc3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYp
OwogCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0
YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJj
ZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uVGFiSUQsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7
CisKIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4gbV9leHRlbnNp
b25Db250cm9sbGVyUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IDI2Nzk2
NzJjMGIwZTg1ZTVkMDVhNmI4Y2ZkN2JkZjU0ZTU2NjA4YTQuLmYwNGY5YTQyNGE0NGExMjg5MWQ4
MjI4MDNmN2I2YzJlMmM5ZTA4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMjA3LDcgKzIwNyw3IEBAIC0gKHZvaWQpcmVn
aXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6
KE5TU3RyaW5nICopCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBj
YXB0dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVh
dGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCkpKSByZXRhaW5dIGF1dG9yZWxlYXNlXSk7Cisg
ICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNp
b246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2lu
c3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOwog
ICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5p
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLmgKaW5kZXggNmM1YTYwMWVkMmNmMzE0ZTdhOGJmODYyMzllODBi
NGIxYWE5YmM4MC4uOWRmOGMyZWVhYTdlNjU0Y2ZmOTFhN2IyODI2N2ZjZmI3MDI5MDkyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4
dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb24uaApAQCAtMzMsNiArMzMsMTUgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpKQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsK
IAorLyoqCisgKiBAYWJzdHJhY3QgQ3JlYXRlcyBhIG5ldyB0YWIgaW4gdGhlIFdlYiBJbnNwZWN0
b3IgaW50ZXJmYWNlIGZvciB0aGlzIGV4dGVuc2lvbi4KKyAqIEBwYXJhbSB0YWJOYW1lIEEgbG9j
YWxpemVkIGRpc3BsYXkgbmFtZSBmb3IgdGhlIHRhYi4KKyAqIEBwYXJhbSB0YWJJY29uVVJMIFRo
ZSBsb2NhdGlvbiBvZiBhbiBpbWFnZSByZXNvdXJjZSB0byB1c2UgZm9yIGRpc3BsYXkgaW4gdGhl
IGNyZWF0ZWQgdGFiJ3MgdGl0bGUuCisgKiBAcGFyYW0gc291cmNlVVJMIFRoZSBsb2NhdGlvbiBv
ZiB0aGUgbWFpbiByZXNvdXJjZSB0byBsb2FkIGluIHRoZSBuZXcgdGFiJ3MgaWZyYW1lIGJyb3dz
aW5nIGNvbnRleHQuCisgKiBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24g
aGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBjcmVhdGluZyBhIHRhYiBzdWNjZWVkcyBvciBmYWls
cy4KKyAqLworLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRh
Ykljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJM
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5n
ICogX051bGxhYmxlIGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKwogQHByb3Bl
cnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU1N0cmluZyAqZXh0ZW5zaW9uSUQ7CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDNmN2RlOTQzZDVhYzMxMzFmZDE1N2ZjOGZiNTg1OWYx
MjcxODQxMzAuLjliOWQzMGFkNjVhMTdhNjcyY2RjM2Y3ZGI3YzhjZTVjMWM4ZDc0YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsMTggKzI2LDMyIEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5oIgorI2luY2x1ZGUgIl9XS0luc3BlY3RvckludGVybmFsLmgiCisjaW5jbHVkZSAiX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnRlcm5hbC5oIgorCiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogCiBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCiAKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGZvckxvY2FsSW5zcGVjdG9yOihfV0tJ
bnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+KHNlbGYsIGV4dGVuc2lvbklELCBpbnNwZWN0b3It
Pl9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSk7CisgICAgCisgICAgcmV0dXJuIHNl
bGY7Cit9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICop
ZXh0ZW5zaW9uSUQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5n
ICopZXh0ZW5zaW9uSUQgZm9yUmVtb3RlSW5zcGVjdG9yOihfV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciAqKXJlbW90ZUluc3BlY3RvcgogewogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4oc2VsZiwgZXh0ZW5zaW9uSUQp
OworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+KHNlbGYsIGV4dGVuc2lvbklELCByZW1vdGVJbnNwZWN0b3ItPm1fcmVtb3RlSW5zcGVj
dG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7
CiB9CkBAIC01NSw2ICs2OSwyNCBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJl
dHVybiAqX2V4dGVuc2lvbjsKIH0KIAorLy8gTUFSSzogQVBJCisKKy0gKHZvaWQpY3JlYXRlVGFi
V2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYkljb25V
Ukwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0Vycm9yICogX051bGxhYmxlLCBOU1N0cmluZyAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2V4dGVuc2lv
bi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgW3Byb3RlY3RlZFNl
bGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwg
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpA
eyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogaW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCByZXN1bHQudmFsdWUoKSk7
CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwg
bmlsKTsKKyNlbmRpZgorfQorCiAvLyBNQVJLOiBQcm9wZXJ0aWVzLgogCiAtIChOU1N0cmluZyAq
KWV4dGVuc2lvbklECkBAIC02Miw4ICs5NCw4IEBAIC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQK
ICAgICByZXR1cm4gX2V4dGVuc2lvbi0+aWRlbnRpZmllcigpOwogfQogCi0jZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VO
RAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSW50ZXJuYWwuaAppbmRleCA5MGM0NWQ1NDA4ODFkNTRmODc0N2QyMTU2NDJjZDg4
YWZjOWQwZDBjLi5mNzQ3ODllYjUwYzIwYmNlZDUzYWYxMTkwMDFhNmJjODBjZmRmZjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMzAsNiArMzAsOSBAQAogI2ltcG9y
dCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCitAY2xh
c3MgX1dLSW5zcGVjdG9yOworQGNsYXNzIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRy
YWl0czxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gewpAQCAtNDUsNyArNDgsOCBAQCBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4
dGVuc2lvbj4gX2V4dGVuc2lvbjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRp
ZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25JZGVudGlmaWVyOworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25JZGVudGlmaWVyIGZvckxvY2Fs
SW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilsb2NhbEluc3BlY3RvcjsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopZXh0ZW5zaW9uSWRlbnRpZmllciBmb3JS
ZW1vdGVJbnNwZWN0b3I6KF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICopbG9j
YWxJbnNwZWN0b3I7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCmluZGV4IDkxYmQ1OGY0ZDEyMjhiOGZlNGY1MDFkMmM4ZjhhNWQwYTczZWE3
N2UuLjYxMzMzNzA3MzdlODI2YWIwNWU4MDkxOTk2NzgwZmE4ZTZkNTk2MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyUHJpdmF0ZS5oIgorI2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXJJbnRlcm5hbC5oIgogCiAjaWYgUExBVEZPUk0oTUFDKQogCkBAIC04Nyw3
ICs4Nyw2IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogQGltcGxlbWVudGF0
aW9uIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHsKLSAgICBSZWZQdHI8V2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gbV9yZW1vdGVJbnNwZWN0b3JQcm94eTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVu
dD4gbV9yZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
biAqX2NvbmZpZ3VyYXRpb247CiB9CkBAIC0yMDEsNyArMjAwLDcgQEAgLSAodm9pZClyZWdpc3Rl
ckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNT
dHJpbmcgKikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1
cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShw
cm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICAg
ICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6
Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxmLT5tX3JlbW90
ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1dG9yZWxl
YXNlXSk7CiAgICAgfSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
bmlsXSwgbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXJJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NjVmN2U2MmU1MWZiZTlmZjUxNGQ5YzJiZjFi
OTIzN2IzYTBhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnRlcm5hbC5oCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCIKKworI2lmICFUQVJHRVRfT1NfSVBIT05FCisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk7Cit9CisKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgKCkgeworQHBhY2thZ2UKKyAgICBSZWZQdHI8V2ViS2l0OjpSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eT4gbV9yZW1vdGVJbnNwZWN0b3JQcm94eTsKK30KK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOGI5
YWJkNzBiZDBmZjYzMzllMjJiMzgzOWZlN2UzMWJkZjI2M2Y5NC4uMDUyNDIyNWU2NzU5MDUzOTM3
Y2QzMzFiYjUyY2YzMGNlNzI4OGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC05OCw2ICs5OCwxOCBAQCB2b2lkIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvcgogICAgIH0pOwogfQogCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFi
SWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCB0YWJOYW1lLCB0YWJJ
Y29uVVJMLCBzb3VyY2VVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhp
cy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdlYWtUaGlzLT5tX2luc3Bl
Y3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpDcmVhdGVUYWJGb3JFeHRlbnNpb24geyBleHRlbnNpb25JRCwgdGFi
TmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDIwMzQxMGFiNGYxNGM5YTg0MWEwMzliZjhhMzlhNWEy
MmJiNzcwZGQuLjdjYjlhZGQ5NzRkOTdmNTc2ODJkZDgwNjViMWYzZjZiMjFiN2Y0OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC00OSw2
ICs0OSw3IEBAIHB1YmxpYzoKICAgICAvLyBBUEkuCiAgICAgdm9pZCByZWdpc3RlckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBjcmVhdGVUYWJG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRh
Yk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwg
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAKICAgICAvLyBOb3RpZmljYXRpb25zLgog
ICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI0NjExYmQxZDNmMzJjNTI2MzE1
NTFmMzk2ZTFmODQwNDBlNDg4YmQuLmU2OTAwMDVkM2FiZmMxNDdkOGM0NzNiYmQxMThlOTFmOTEy
OTAwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDY3Myw2ICs0NjczLDcgQEAKIAkJOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8q
IF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5OTk2QTlFMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JU
ZXN0aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5z
cGVjdG9yVGVzdGluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5QjdFRDgy
NTUwRTRBODAwRjQ1MEE0IC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQSUluc3BlY3RvckV4dGVu
c2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElJbnNwZWN0
b3JFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUIxNjc1NDI1
MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVu
c2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MzYsNiArOTUzNyw3IEBA
CiAJCQkJOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICov
LAogCQkJCTk5NEM2MDQ4MjUzRjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0
aW9uLmNwcCAqLywKIAkJCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTk5OUI3RjRGMjU1NEJBM0YwMEY0NTBBNCAvKiBBUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwICovLAogCQkJCTk5QkUzQjEyMjU0MjJGNDEwMEM2NTUxQyAv
KiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZB
NTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVB
NEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDYyNzVjZjZhNmU3ZTUwYzZi
MzYwNjJlMTMxODc1NzUyODlhNTgwZWUuLjY5NjQ3YjMxMTc5NGY5MzAyYzU2MWU2NmE5OGZiMzhj
NmY0M2Q1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5j
cHAKQEAgLTI4LDExICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMu
aCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2Vw
dGlvbkRldGFpbHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDI3ICs0Niw0NSBAQCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcihXZWJDb3JlOjpJbgogICAgIFBhZ2UqIHBhZ2UgPSBpbnNwZWN0b3JGcm9udGVuZC5m
cm9udGVuZFBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLS8vICAgIFdURlJlcG9ydEJhY2t0
cmFjZSgpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgqcGFnZSkuaWRlbnRpZmllcigpLCAqdGhp
cyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcigpCiB7Ci0vLyAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMp
OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3Vs
dChKU0M6OkpTVmFsdWUgcmVzdWx0KQorT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNp
b25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKKyAgICAgICAgc3dpdGNoIChyZXN1bHQuZXJyb3IoKSkgeworICAgICAgICBjYXNlIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpD
b250ZXh0RGVzdHJveWVkOgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpDb250ZXh0RGVzdHJveWVkOworICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpFeGVjdXRpb25TdXNwZW5kZWQ6
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJy
b3I7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAg
ICBhdXRvIGdsb2JhbE9iamVjdCA9IG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0
Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsK
IAorICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOworICAgIGlmICgh
dmFsdWVPckV4Y2VwdGlvbi5oYXNfdmFsdWUoKSkgeworICAgICAgICBMT0coSW5zcGVjdG9yLCAi
RW5jb3VudGVyZWQgZXhjZXB0aW9uIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6
ICVzIiwgdmFsdWVPckV4Y2VwdGlvbi5lcnJvcigpLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAg
ICB9CisgICAgCiAgICAgLy8gSWYgdGhlIGV2YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0
aGUgZnJvbnRlbmQgcmV0dXJuZWQgYW4gZXJyb3Igc3RyaW5nLgorICAgIC8vIElmIHRoZXJlIHdh
cyBhIEpTIGV4Y2VwdGlvbiwgbG9nIGl0IGFuZCByZXR1cm4gZXJyb3IgY29kZSBJbnRlcm5hbEVy
cm9yLgogICAgIC8vIEFueXRoaW5nIGVsc2UgKGZhbHN5IHZhbHVlcywgb2JqZWN0cywgYXJyYXlz
LCBET00sIGV0Yy4pIGlzIGludGVycHJldGVkIGFzIHN1Y2Nlc3MuCi0gICAgaWYgKHJlc3VsdC5p
c1N0cmluZygpKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgSlNDOjpKU1ZhbHVlIHNjcmlwdFZhbHVlID0gdmFsdWVP
ckV4Y2VwdGlvbi52YWx1ZSgpOworICAgIGlmIChzY3JpcHRWYWx1ZS5pc1N0cmluZygpKSB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gc2NyaXB0VmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiQ29udGV4dERlc3Ryb3llZCJf
cykKICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERl
c3Ryb3llZDsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW50ZXJuYWxFcnJvciJfcykK
QEAgLTgyLDcgKzEwMyw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjCiAKIC8vIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCiAKLXZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkp
OwpAQCAtOTksNyArMTIwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW8KICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vh
a1RoaXMtPnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KHJlc3VsdC52YWx1
ZSgpKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUlu
c3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQocGFyc2VkRXJyb3IudmFs
dWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTI5LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW8KICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdCkpOwpAQCAtMTIyLDcgKzE0Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJv
ciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChyZXN1
bHQudmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+
cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdC52
YWx1ZSgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
cGFyc2VkRXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xMzEsNiArMTUyLDYyIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zCiAgICAgfSk7CiB9CiAK
K0pTQzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFw
RXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlv
biA9IHJlc3VsdC52YWx1ZSgpOworICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbi5oYXNfdmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgSlNDOjpKU1ZhbHVlIHZhbHVl
ID0gdmFsdWVPckV4Y2VwdGlvbi52YWx1ZSgpOyAgIAorICAgIHJldHVybiB2YWx1ZS5nZXRPYmpl
Y3QoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0
ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQs
IGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwm
IHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rv
ckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxSZWY8SlNP
Tjo6VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVu
c2lvbklEKSwKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZSh0YWJOYW1lKSwKKyAgICAgICAg
SlNPTjo6VmFsdWU6OmNyZWF0ZSh0YWJJY29uVVJMLnN0cmluZygpKSwKKyAgICAgICAgSlNPTjo6
VmFsdWU6OmNyZWF0ZShzb3VyY2VVUkwuc3RyaW5nKCkpLAorICAgIH07CisgICAgbV9mcm9udGVu
ZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dEFzeW5jKCJjcmVhdGVUYWJGb3JFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IXJlc3VsdCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vh
a1RoaXMtPnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChy
ZXN1bHQudmFsdWUoKSkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEV4cGVjdGVkIHJlc3VsdCBpcyBlaXRoZXIgYW4gRXJyb3JTdHJp
bmcgb3Ige2V4dGVuc2lvblRhYklEOiA8c3RyaW5nPn0uCisgICAgICAgIGF1dG8gb2JqZWN0UmVz
dWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwor
ICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgeworICAgICAgICAgICAgTE9HKEluc3BlY3Rvciwg
IlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250
ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8q
IGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250
ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTQzo6
SlNWYWx1ZSBmb3VuZFByb3BlcnR5ID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxP
YmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+
dm0oKSwgImV4dGVuc2lvblRhYklEIl9zKSk7CisgICAgICAgIGlmICghZm91bmRQcm9wZXJ0eSB8
fCAhZm91bmRQcm9wZXJ0eS5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBmb3VuZFByb3BlcnR5LnRvV1RGU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0
KSB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaAppbmRleCBmNWI0MGFiMzkzYTA1MWZiMjUyMDUwN2UzNWJiZGNkZWFlMTU4
NTZhLi5jOTQ0NWFlNmRjNTBjMTVmNzM2ZDg4NWJmNzM0YTJiNDJhYjY0M2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzcs
NiArMzgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU09i
amVjdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsMTEgKzYyLDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIElQQyBtZXNzYWdlcy4KLSAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+KT4mJik7CisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBj
b25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsK
IAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcGFyc2VJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21SZXN1bHQoSlNDOjpKU1ZhbHVlIHJlc3VsdCk7Cisg
ICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CisgICAg
T3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwogCiAgICAgV2Vha1B0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDJj
NzhlZDc1Y2NjM2E5NzZlZmU3NjBjY2JmOGQ4YzYxMDQ1NDY1YzQuLmRjYmVhYTAyZjliYTVhYjZj
NDhlOTdlODFiYTM5OTc2ZTJjZmJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw4IEBACiBtZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7
CiAgICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxh
eU5hbWUpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9y
PiByZXN1bHQpIEFzeW5jCiAgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9u
SUQpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBy
ZXN1bHQpIEFzeW5jCisKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lv
bklELCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChF
eHBlY3RlZDxTdHJpbmcsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
QXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415489</attachid>
            <date>2020-12-04 23:03:44 -0800</date>
            <delta_ts>2020-12-06 16:03:19 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-219380-20201204230344.patch</filename>
            <type>text/plain</type>
            <size>46338</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBk
YjI3ODExZWNmYjhlMGJkMmZkMjBjNWZmYzJjMGI5NDlkNmEzNTM1Li5kY2ViOGU3NjJlZmViMWNj
MWU3M2IzNTU2MGQwMTgzNTIyMTczMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBl
eHRlbnNpb24gdGFicyBpbiBXZWJJbnNwZWN0b3JVSSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoK
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX21ha2VOZXh0RXh0
ZW5zaW9uVGFiSUQpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5wcm90b3R5cGUudW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5HZW5lcmFsVGFiQmFy
SXRlbS5mcm9tVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuR2VuZXJhbFRhYkJhckl0ZW0u
Z2V0IGRpc3BsYXlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Bpbm5lZFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21U
YWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGFi
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCB0YWJCYXJJdGVtKToKKyAgICAgICAgKFdJLlRhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZS50YWJJbmZvKToKKyAgICAgICAgKFdJLlRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5nZXQgbWFuYWdlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmF0dGFjaGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oLgorICAgICAgICAoLmNvbnRlbnQtdmlldy53ZWIt
aW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaC4K
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJJ
bmZvKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3Nlcik6Cisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Z2V0IGV4dGVuc2lvblRhYklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKwogMjAyMC0xMi0wNCAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBGQUxMQkFDS19QTEFU
Rk9STSBhZG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmM2ZhYmMyZjQ3OGU0MWEwYTUzYTI2NmMwOTQ2NTFh
ZTBhOWU1MDBmLi40ZTk1ZTczYzUyNGE3OTA5YTlhNzkwZWNiZTE5NTI2NDAzMGFkYTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogYWRkIHN1cHBvcnQgZm9y
IGNyZWF0aW5nIGV4dGVuc2lvbiB0YWJzIGluIFdlYkluc3BlY3RvclVJIHZpYSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGZvciBjcmVhdGlu
ZyBhbiBleHRlbnNpb24gdGFiIGluIFdlYklucGVjdG9yVUkuCisgICAgICAgIFRoaXMgY2FuIGJl
IHVzZWQgdG8gaW1wbGVtZW50IGJyb3dzZXIuZGV2dG9vbHMucGFuZWxzLmNyZWF0ZSgpIGFzIHBy
b3ZpZGVkIGJ5IHRoZSBXZWIgRXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9M
b2dnaW5nLmg6IEFkZCBJbnNwZWN0b3IgY2hhbm5lbCBmb3IgZXJyb3IgbG9nZ2luZy4KKyAgICAg
ICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDogQWRkIGEgbWlzc2luZyBFbnVt
VHJhaXRzIGNhc2UuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6IEFkZCBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNp
b246Okluc3BlY3RvckV4dGVuc2lvbik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIp
OgorICAgICAgICBJbnNwZWN0b3IgZXh0ZW5zaW9ucyBuZWVkIHRvIGJlIGFibGUgdG8gaW52b2tl
IGNvbW1hbmRzIGluIHRoZSBXZWJQcm9jZXNzLXNpZGUKKyAgICAgICAgZXh0ZW5zaW9uIHByb3h5
IGNvbnRyb2xsZXIsIHNvIGtlZXAgYSBXZWFrUmVmIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxl
ciB0aGF0CisgICAgICAgIGNyZWF0ZWQgdGhlIGV4dGVuc2lvbiBvYmplY3QuIEFsc28sIGltcGxl
bWVudCB0aGUgbmV3IEFQSSBieSBmb3J3YXJkaW5nIGl0IG9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciBy
ZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBhcyBleHBsYWluZWQgYWJvdmUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbklu
dGVybmFsLmg6CisgICAgICAgIEV4cG9zZSBtZW1iZXIgbV9yZW1vdGVJbnNwZWN0b3JQb3J4eSBm
b3IgdXNlIGluIHRoZSBBUEk6OjpJbnNwZWN0b3JFeHRlbnNpb24gY29uc3RydWN0b3IuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAg
ICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gaW5pdFdpdGhJZGVudGlmaWVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFt
ZTp0YWJJY29uVVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1w
bGVtZW50IG5ldyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIE1h
a2UgdGhlIFJlZlB0cjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gbWVtYmVyIHZhcmlhYmxlIGFj
Y2Vzc2libGUgdG8gdGhlIEFQSSBvYmplY3QgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgor
ICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4
dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRhcHQgdG8gbmV3IGNvbnN0cnVjdG9yIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAgICAg
IEZvcndhcmQgdGhlIHJlcXVlc3QgdG8gdGhlIGluc3BlY3RvciBmcm9udGVuZCBXZWJQcm9jZXNz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBBZGQgYSBuZXcgYXN5bmMgSVBDIGNv
bW1hbmQgZm9yIGNyZWF0aW5nIGEgbmV3IGluc3BlY3RvciBleHRlbnNpb24gdGFiLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QpOgorICAgICAg
ICBBZGRlZC4gUHVsbCBvdXQgdGhlIGNvZGUgbmVlZGVkIGZvciBlcnJvci1oYW5kbGluZyB0aGlz
IGNvbW1vbiBvcGVyYXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICBBZGRlZC4g
Q2FsbCBpbnRvIEluc3BlY3RvckZyb250ZW5kQVBJIHRvIHJlcXVlc3QgYSBuZXcgdGFiLiBUdXJu
IHRoZSByZXN1bHQKKyAgICAgICAgaW50byBhbiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBvciBJ
bnNwZWN0b3JFeHRlbnNpb25UYWJJRCBhbmQgc2VuZCB0aGUgSVBDIHJlcGx5LgorCisKIDIwMjAt
MTItMDQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBBZG9wdCBBVk91dHB1dERldmljZS5hbGxvd3NIZWFkVHJhY2tlZFNwYXRpYWxBdWRpbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanMKaW5kZXggMDJlMzk2YzM0MjRmNjI0N2UwMWEwZmFmNTA5YzNiYjI5Nzc5YjFlZS4uNmJm
OTU1OTg5NDIxZjNlN2RhMzZlNTk4ZWE4ZDk5ZDMxMWVjOTc0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0y
OSwzNCArMjksNjggQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNz
IFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICB7CiAgICAgICAgIHN1
cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAgPSBuZXcgTWFwOworICAgICAg
ICB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1hcCA9IG5ldyBNYXA7CisgICAgICAgIC8v
IE1hcCBmcm9tIGV4dGVuc2lvblRhYklEIC0+IFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LgorICAgICAgICB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVu
c2lvbklETWFwID0gbmV3IE1hcDsKKyAgICAgICAgLy8gTXVsdGltYXAgZnJvbSBleHRlbnNpb25J
RCAtPiB7ZXh0ZW5zaW9uVGFiSUQsIC4uLn0uCisgICAgICAgIHRoaXMuX3RhYklEc0ZvckV4dGVu
c2lvbklETWFwID0gbmV3IE11bHRpbWFwOworICAgICAgICB0aGlzLl9uZXh0RXh0ZW5zaW9uVGFi
SUQgPSAxOworICAgIH0KKworICAgIF9tYWtlTmV4dEV4dGVuc2lvblRhYklEKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiA7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICByZWdpc3RlckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCiAgICAgewotICAgICAgICBpZiAodGhp
cy5fZXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICBpZiAodGhpcy5f
ZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgewogICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwg
aXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CiAg
ICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5SZWdp
c3RyYXRpb25GYWlsZWQ7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOwotICAg
ICAgICB0aGlzLl9leHRlbnNpb25JRE1hcC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7Cisg
ICAgICAgIHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklETWFwLnNldChleHRlbnNpb25JRCwg
ZXh0ZW5zaW9uKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0
ZW5zaW9ufSk7CiAgICAgfQogCiAgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkK
ICAgICB7Ci0gICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25JRE1hcC50YWtl
KGV4dGVuc2lvbklEKTsKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbkZv
ckV4dGVuc2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQpOwogICAgICAgICBpZiAoIWV4dGVuc2lv
bikgewogICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHVucmVn
aXN0ZXIgZXh0ZW5zaW9uIHdpdGggdW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQpOwogICAgICAg
ICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJl
cXVlc3Q7CiAgICAgICAgIH0KIAorICAgICAgICBsZXQgZXh0ZW5zaW9uVGFiSURzVG9SZW1vdmUg
PSB0aGlzLl90YWJJRHNGb3JFeHRlbnNpb25JRE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAg
ICAgZm9yIChsZXQgZXh0ZW5zaW9uVGFiSUQgb2YgZXh0ZW5zaW9uVGFiSURzVG9SZW1vdmUpIHsK
KyAgICAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRl
bnRWaWV3Rm9yRXh0ZW5zaW9uSURNYXAudGFrZShleHRlbnNpb25UYWJJRCk7CisgICAgICAgICAg
ICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOwor
ICAgICAgICB9CisKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNpb25SZW1vdmVkLCB7ZXh0
ZW5zaW9ufSk7CiAgICAgfQorCisgICAgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklE
LCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpCisgICAgeworICAgICAgICBsZXQgZXh0
ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklE
KTsKKyAgICAgICAgaWYgKCFleHRlbnNpb24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVy
bmFsRXJyb3IoIlVuYWJsZSB0byBjcmVhdGUgdGFiIGZvciBleHRlbnNpb24gd2l0aCB1bmtub3du
IElEOiAiLCBleHRlbnNpb25JRCwgIiBzb3VyY2VVUkw6ICIsIHNvdXJjZVVSTCk7CisgICAgICAg
ICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVx
dWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBleHRlbnNpb25UYWJJRCA9IGBXZWJFeHRl
bnNpb25UYWItJHtleHRlbnNpb25JRH0tJHt0aGlzLl9uZXh0RXh0ZW5zaW9uVGFiSUQrK31gOwor
ICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcoZXh0ZW5zaW9uLCBleHRlbnNpb25UYWJJRCwgdGFiTmFtZSwgdGFiSWNv
blVSTCwgc291cmNlVVJMKTsKKworICAgICAgICB0aGlzLl90YWJJRHNGb3JFeHRlbnNpb25JRE1h
cC5hZGQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgdGhpcy5fZXh0ZW5z
aW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25JRE1hcC5zZXQoZXh0ZW5zaW9uVGFiSUQsIHRh
YkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250ZW50Vmll
dyh0YWJDb250ZW50Vmlldyk7CisKKyAgICAgICAgcmV0dXJuIHtleHRlbnNpb25UYWJJRH07Cisg
ICAgfQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBi
ODZkZjVmZjA1OWVlYmY4MGUwMzI0OWY4ZjMzOGM1OTViM2VkOThjLi5iOWZmNTVkMzJjYWIyYWE2
YTQ5MjVjNjE2YzM2NzAyNWNjYWQwMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yNDYsNiArMjQ2LDcgQEAKICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1VSTEJyZWFrcG9pbnRQb3BvdmVyLmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1l
bnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1ZhcmlhYmxl
cy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmNzcyI+CiAKICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29u
dHJvbGxlci5jc3MiPgpAQCAtNTgxLDYgKzU4Miw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyI+PC9zY3Jp
cHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWlsc1NlY3Rpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggZjlk
MjBhZjExZjQ2Y2NkZWQ2NWQzZGMxYTliNDY4M2JmNGFkNmQ5Mi4uMGFkN2RhZWQ3YTk1NTc1OTdm
MjYxYmQwZmY0Yzc3MGY2MzNlZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRl
bmRBUEkuanMKQEAgLTIwOSw0ICsyMDksMTEgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIudW5y
ZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCk7CiAgICAgfSwKKworICAgIC8vIFJldHVybnMg
YSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlIGlmIGFuIGVycm9yIG9jY3VycmVk
LCBvdGhlcndpc2UgYW4gb2JqZWN0CisgICAgLy8gd2l0aCBhbiAnaW5zcGVjdG9yRXh0ZW5zaW9u
SUQnIGtleSByZXByZXNlbnRpbmcgdGhlIHRhYiBpZGVudGlmaWVyIGZvciB0aGUgbmV3bHkgY3Jl
YXRlZCB0YWIuCisgICAgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCB0YWJOYW1l
LCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpCisgICAgeworICAgICAgICByZXR1cm4gV0kuc2hhcmVk
QXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklE
LCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOworICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFy
SXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVy
YWxUYWJCYXJJdGVtLmpzCmluZGV4IDMwNmU3MThmYWJlYjE3Y2M2YWU4ODBhZGQyODY3MjQ5Yjkz
ZWQ2ZmQuLjUzOTNlZTQyOGQzZDBlYjM5YmVjMDE0NjM2ZjM0OGM1YzUyNGRkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJC
YXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0dlbmVyYWxUYWJCYXJJdGVtLmpzCkBAIC0zMiw3ICszMiw3IEBAIFdJLkdlbmVyYWxUYWJCYXJJ
dGVtID0gY2xhc3MgR2VuZXJhbFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJCYXJJdGVtCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRh
YkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBsZXQge2ltYWdlLCBkaXNwbGF5TmFtZSwgdGl0bGV9
ID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3IudGFiSW5mbygpOworICAgICAgICBsZXQge2lt
YWdlLCBkaXNwbGF5TmFtZSwgdGl0bGV9ID0gdGFiQ29udGVudFZpZXcudGFiSW5mbygpOwogICAg
ICAgICByZXR1cm4gbmV3IFdJLkdlbmVyYWxUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3LCBpbWFn
ZSwgZGlzcGxheU5hbWUsIHRpdGxlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpz
CmluZGV4IDM0MmM2Nzk4ODQ5MTk0Y2UzZGRkODFlNTlhNTgxMTMyZjA0ZGJlNDkuLjE5ZTg1NjNh
YzcxM2JjMDRiY2FhYzM0MjhhZTg0NmZjNzNjYWNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRl
bS5qcwpAQCAtMzgsNyArMzgsNyBAQCBXSS5QaW5uZWRUYWJCYXJJdGVtID0gY2xhc3MgUGlubmVk
VGFiQmFySXRlbSBleHRlbmRzIFdJLlRhYkJhckl0ZW0KICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpOwogCi0g
ICAgICAgIGxldCB7aW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy5j
b25zdHJ1Y3Rvci50YWJJbmZvKCk7CisgICAgICAgIGxldCB7aW1hZ2UsIGRpc3BsYXlOYW1lLCB0
aXRsZX0gPSB0YWJDb250ZW50Vmlldy50YWJJbmZvKCk7CiAgICAgICAgIHJldHVybiBuZXcgV0ku
UGlubmVkVGFiQmFySXRlbSh0YWJDb250ZW50VmlldywgaW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRs
ZSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKaW5kZXggZmQzMjA4MzRlNGIxN2Y2
MDIxZjM1NTQxNGUyMTdlMWY1ODkzYTM0Yi4uZTA0Y2M4ZmVlOWUwOGU5Zjg2NzE5MGI3OWQ1ZTAw
OTdjZmYzMzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKQEAgLTMzLDcgKzMzLDYgQEAgV0ku
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgIHN1cGVyKG51bGwpOwogCiAgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSB0
YWJJbmZvLmlkZW50aWZpZXI7Ci0gICAgICAgIHRoaXMuX3RhYkJhckl0ZW0gPSB0aGlzLmNvbnN0
cnVjdG9yLnNob3VsZFBpblRhYigpID8gV0kuUGlubmVkVGFiQmFySXRlbS5mcm9tVGFiQ29udGVu
dFZpZXcodGhpcykgOiBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhp
cyk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciA9IG5h
dmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciB8fCBudWxsOwogICAgICAgICB0aGlzLl9k
ZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycyB8fCBbXTsKIApAQCAtODIsNiArODEsMTEgQEAgV0kuVGFiQ29udGVudFZpZXcgPSBj
bGFzcyBUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBnZXQgdGFi
QmFySXRlbSgpCiAgICAgeworICAgICAgICAvLyBUaGlzIGlzIGNyZWF0ZWQgbGF6aWx5IHRvIGJy
ZWFrIGEgZGVwZW5kZW5jeSBjeWNsZSBmb3IgZHluYW1pY2FsbHktY3JlYXRlZCBUYWJDb250ZW50
Vmlld3MuCisgICAgICAgIC8vIFRhYkNvbnRlbnRWaWV3cyB3aXRoIGEgbm9uLXN0YXRpYyB0YWJJ
bmZvKCkgbXVzdCBiZSBmdWxseSBjb25zdHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyB0YWJJbmZvKCku
CisgICAgICAgIGlmICghdGhpcy5fdGFiQmFySXRlbSkKKyAgICAgICAgICAgIHRoaXMuX3RhYkJh
ckl0ZW0gPSB0aGlzLmNvbnN0cnVjdG9yLnNob3VsZFBpblRhYigpID8gV0kuUGlubmVkVGFiQmFy
SXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcykgOiBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9t
VGFiQ29udGVudFZpZXcodGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW07
CiAgICAgfQogCkBAIC0xMjUsNiArMTI5LDEyIEBAIFdJLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgdGFiSW5mbygpCisgICAgeworICAgICAgICAvLyBDYW4gYmUgb3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci50
YWJJbmZvKCk7CisgICAgfQorCiAgICAgYXR0YWNoZWQoKQogICAgIHsKICAgICAgICAgc3VwZXIu
YXR0YWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDc1MzYwN2E4MzgyOTFhYmExMDUxNjQ0
MTU4OGNjMjZlMTNjNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcu
Y3NzCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuY29udGVudC12aWV3LnRhYi53ZWIt
aW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUgeworICAgIGJvcmRlcjogMDsKKworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdo
dDogMDsKKyAgICBib3R0b206IDA7CisKKyAgICAvKiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUg
aWZyYW1lIHRvIGV4cGFuZCBpZiBpdHMgaW50cmluc2ljIHNpemUKKyAgICAgICBpcyBzbWFsbGVy
IHRoYW4gdGhlIHRhYiBjb250ZW50IHZpZXcuICovCisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjg3OGEwYTg3ZTc5YjM5OTk4ODE4NWJk
YWYyMTk3ZmYxMDM5YmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcu
anMKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLldlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldworeworICAgIGNvbnN0cnVjdG9yKGV4dGVuc2lv
biwgZXh0ZW5zaW9uVGFiSUQsIHRhYkxhYmVsLCBpY29uVVJMLCBzb3VyY2VVUkwpCisgICAgewor
ICAgICAgICBsZXQgdGFiSW5mbyA9IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXI6IFdJLldlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGUsCisgICAgICAgICAgICBpbWFnZTog
aWNvblVSTCwKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0YWJMYWJlbCwKKyAgICAgICAgICAg
IHRpdGxlOiB0YWJMYWJlbCwKKyAgICAgICAgfTsKKyAgICAgICAgc3VwZXIodGFiSW5mbyk7CisK
KyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uID0gZXh0ZW5zaW9uOworICAgICAgICB0aGlzLl9leHRl
bnNpb25UYWJJRCA9IGV4dGVuc2lvblRhYklEOworICAgICAgICB0aGlzLl90YWJJbmZvID0gdGFi
SW5mbzsKKyAgICAgICAgdGhpcy5fc291cmNlVVJMID0gc291cmNlVVJMOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgdGFiSW5mbygpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0
LnNoYWxsb3dDb3B5KHRoaXMuX3RhYkluZm8pOworICAgIH0KKworICAgIGdldCB0eXBlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmll
dy5UeXBlOworICAgIH0KKworICAgIGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZ2V0IGV4dGVuc2lvblRh
YklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uVGFiSUQ7IH0KKworICAgIC8vIFByb3RlY3Rl
ZAorCisgICAgaW5pdGlhbExheW91dCgpCisgICAgeworICAgICAgICBzdXBlci5pbml0aWFsTGF5
b3V0KCk7CisKKyAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIikpOworICAgICAgICBpZnJhbWVF
bGVtZW50LnNyYyA9IHRoaXMuX3NvdXJjZVVSTDsKKyAgICB9Cit9OworCitXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5UeXBlID0gIndlYi1pbnNwZWN0b3ItZXh0ZW5zaW9u
LXRhYiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGQwODU3OTBmZTNiMGNmY2JkZDcx
NWQyMTFiZDExM2EzNGY2NTVjNGQuLmY0OWYzOGI2YTVmOWQzZDcwOTUyZDJlMTIxYzg5OTVkZWNl
OThlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC02MCw4ICs2MCw4IEBAIGV4dGVy
biAiQyIgewogICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERikgXAogICAgIE0o
SW5jcmVtZW50YWxQREZWZXJib3NlKSBcCi0gICAgTShJbnNwZWN0b3IpIFwKICAgICBNKEluZGV4
ZWREQikgXAorICAgIE0oSW5zcGVjdG9yKSBcCiAgICAgTShLZXlIYW5kbGluZykgXAogICAgIE0o
TGF5ZXJzKSBcCiAgICAgTShMYXlvdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oCmluZGV4IGVmM2Y1ZWJmYjhkMTcwNTJkMGIzNmVhMjc0Y2Nm
ZjVkNzAzNjVhNGQuLjY5NTM5MmI5YzA4YzI0YzBhODhiZDRjMGFlYjgyMTdhMjVhNzAwODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaApAQCAt
NTAsOCArNTAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAog
ICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9y
LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVz
dCwKICAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9u
RmFpbGVkCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBjYjc4YmIyMmI2NzMyNzQ0NTFjYTNj
Y2RjNTZhNWVmZWY2Nzc1OTgwLi4zYmYyY2RkZDJlYjEyNzFlNmRiNzhjNWU3NTQ5ZjgyNTFjOGJh
YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTM1MSw2ICszNTEsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSUZy
YW1lVHJlZU5vZGUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2RkNGRkMjUxYzQ2Mzk4M2NhNDQzMDU1NzJiNDdi
YTAyNGJmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIgorCituYW1lc3BhY2UgQVBJIHsKKworSW5zcGVjdG9yRXh0ZW5zaW9uOjpJ
bnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9leHRlbnNp
b25Db250cm9sbGVyUHJveHkobWFrZVdlYWtQdHIoZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSkK
K3sKK30KKworUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVh
dGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpj
cmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJ
Y29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9leHRlbnNpb25D
b250cm9sbGVyUHJveHktPmNyZWF0ZVRhYkZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIHRhYk5h
bWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAppbmRleCA3ZTBmMThhZmUyYzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0
ODBiLi5kZGY1YjA4OGVkZWQ1NmViZjQ2N2I3YTg1Y2JjM2ExYzVmYzY3ZjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBA
IC0yOCwyNiArMjgsMzAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTsKK30KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEluc3Bl
Y3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZp
ZXIpKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBJbnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
Ci0gICAgewotICAgIH0KKyAgICBJbnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Jik7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjcmVhdGVUYWIoY29uc3Qg
V1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBX
VEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7
CisgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3Iu
bW0KaW5kZXggMjY3OTY3MmMwYjBlODVlNWQwNWE2YjhjZmQ3YmRmNTRlNTY2MDhhNC4uZjA0Zjlh
NDI0YTQ0YTEyODkxZDgyMjgwM2Y3YjZjMmUyYzllMDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yMDcsNyArMjA3LDcg
QEAgLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25J
RCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JF
eHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0
b3JlbGVhc2VdKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90
ZWN0ZWRTZWxmLT5faW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1
dG9yZWxlYXNlXSk7CiAgICAgfSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86bmlsXSwgbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA2YzVhNjAxZWQyY2YzMTRl
N2E4YmY4NjIzOWU4MGI0YjFhYTliYzgwLi41ZjcxOTFlODNhOGYxNGViM2Y0MDdiMzg2MWM3YWY4
MjE1ZjEyMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0yMywxNiArMjMsMjkgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKyNwcmFnbWEgb25jZQorCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CiAKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiBA
aW50ZXJmYWNlIF9XS0luc3BlY3RvckV4dGVuc2lvbiA6IE5TT2JqZWN0CiAKKy0gKGluc3RhbmNl
dHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlM
QUJMRTsKIAorLyoqCisgKiBAYWJzdHJhY3QgQ3JlYXRlcyBhIG5ldyB0YWIgaW4gdGhlIFdlYiBJ
bnNwZWN0b3IgaW50ZXJmYWNlIGZvciB0aGlzIGV4dGVuc2lvbi4KKyAqIEBwYXJhbSB0YWJOYW1l
IEEgbG9jYWxpemVkIGRpc3BsYXkgbmFtZSBmb3IgdGhlIHRhYi4KKyAqIEBwYXJhbSB0YWJJY29u
VVJMIFRoZSBsb2NhdGlvbiBvZiBhbiBpbWFnZSByZXNvdXJjZSB0byB1c2UgZm9yIGRpc3BsYXkg
aW4gdGhlIGNyZWF0ZWQgdGFiJ3MgdGl0bGUuCisgKiBAcGFyYW0gc291cmNlVVJMIFRoZSBsb2Nh
dGlvbiBvZiB0aGUgbWFpbiByZXNvdXJjZSB0byBsb2FkIGluIHRoZSBuZXcgdGFiJ3MgaWZyYW1l
IGJyb3dzaW5nIGNvbnRleHQuCisgKiBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBs
ZXRpb24gaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBjcmVhdGluZyBhIHRhYiBzdWNjZWVkcyBv
ciBmYWlscy4KKyAqLworLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJO
YW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291
cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5T
U3RyaW5nICogX051bGxhYmxlIGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKwog
QHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU1N0cmluZyAqZXh0ZW5zaW9uSUQ7CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDNmN2RlOTQzZDVhYzMxMzFmZDE1N2ZjOGZi
NTg1OWYxMjcxODQxMzAuLjM2N2MwZWJkNjlkMGRjODQ1OTRhZTNiYTU4ZWFhMjM0Yjg0ZGVmYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsMjEgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKIAotTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KLQotQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lv
bgotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklECi17Ci0gICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxmLCBl
eHRlbnNpb25JRCk7Ci0gICAgCi0gICAgcmV0dXJuIHNlbGY7Ci19CitAaW1wbGVtZW50YXRpb24g
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uCiAKIC0gKHZvaWQpZGVhbGxvYwogewpAQCAtNDksMTIgKzM3
LDI1IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotCiAtIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewogICAgIHJldHVybiAqX2V4dGVuc2lvbjsKIH0KIAor
Ly8gTUFSSzogQVBJCisKKy0gKHZvaWQpY3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFi
TmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNv
dXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICop
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUs
IHRhYkljb25VUkwsIHNvdXJjZVVSTCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiks
IGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0
ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNhcHR1cmVkQmxvY2sobmlsLCByZXN1bHQudmFsdWUoKSk7CisgICAgfSk7Cit9CisKIC8vIE1B
Uks6IFByb3BlcnRpZXMuCiAKIC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKQEAgLTYyLDggKzYz
LDYgQEAgLSAoTlNTdHJpbmcgKilleHRlbnNpb25JRAogICAgIHJldHVybiBfZXh0ZW5zaW9uLT5p
ZGVudGlmaWVyKCk7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
Ci0KIEBlbmQKIAotTlNfQVNTVU1FX05PTk5VTExfRU5ECisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaAppbmRleCA5
MGM0NWQ1NDA4ODFkNTRmODc0N2QyMTU2NDJjZDg4YWZjOWQwZDBjLi4wYTBmYWJjOGEzNzAyZDMy
NzI5NmY1NzE2NDBlYzE3MWZjNDUxMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJu
YWwuaApAQCAtMzgsMTcgKzM4LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLU5T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCi0KIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpJ
bnNwZWN0b3JFeHRlbnNpb24+IF9leHRlbnNpb247CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopZXh0ZW5zaW9uSWRlbnRpZmllcjsKLQogQGVuZAog
Ci1OU19BU1NVTUVfTk9OTlVMTF9FTkQKLQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpp
bmRleCA5MWJkNThmNGQxMjI4YjhmZTRmNTAxZDJjOGY4YTVkMGE3M2VhNzdlLi42MTMzMzcwNzM3
ZTgyNmFiMDVlODA5MTk5Njc4MGZhOGU2ZDU5NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
clByaXZhdGUuaCIKKyNpbXBvcnQgIl9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
SW50ZXJuYWwuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKIApAQCAtODcsNyArODcsNiBAQCBwcml2
YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB7Ci0gICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk+IG1fcmVtb3RlSW5zcGVjdG9yUHJveHk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+IG1fcmVtb3RlSW5z
cGVjdG9yQ2xpZW50OwogICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0
aW9uOwogfQpAQCAtMjAxLDcgKzIwMCw3IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwg
W1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5z
aW9uSUQuZ2V0KCkpKSByZXRhaW5dIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIGNhcHR1cmVkQmxv
Y2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0
ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+bV9yZW1vdGVJbnNwZWN0b3JQcm94
eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOwogICAgIH0p
OwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjY1ZjdlNjJlNTFmYmU5ZmY1MTRkOWMyYmYxYjkyMzdiM2EwYWYzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXJQcml2YXRlLmgiCisKKyNpZiAhVEFSR0VUX09TX0lQSE9ORQorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OworfQorCitOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgorCitAaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
ICgpIHsKK0BwYWNrYWdlCisgICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk+IG1fcmVtb3RlSW5zcGVjdG9yUHJveHk7Cit9CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORAorCisjZW5kaWYgLy8gIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDhiOWFiZDcwYmQwZmY2MzM5
ZTIyYjM4MzlmZTdlMzFiZGYyNjNmOTQuLjA1MjQyMjVlNjc1OTA1MzkzN2NkMzMxYmI1MmNmMzBj
ZTcyODhkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmNwcApAQCAtOTgsNiArOTgsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3IKICAg
ICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNp
b25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0
IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5z
cGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNl
VVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9y
UGFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjo6Q3JlYXRlVGFiRm9yRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQsIHRhYk5hbWUsIHRhYkljb25V
UkwsIHNvdXJjZVVSTCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaAppbmRleCAyMDM0MTBhYjRmMTRjOWE4NDFhMDM5YmY4YTM5YTVhMjJiYjc3MGRkLi43Y2I5
YWRkOTc0ZDk3ZjU3NjgyZGQ4MDY1YjFmM2Y2YjIxYjdmNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgLy8gQVBJLgogICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4m
Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lv
bklEJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBV
UkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yPik+JiYpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucy4KICAgICB2b2lkIGluc3Bl
Y3RvckZyb250ZW5kTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3NGQ3OTdmZmI2OWQwNjY3MjYzZDA0ZjQzMDlkZWExOWZj
YmJhMDMyLi41MDlmNjNhNGUxNDk5Mjc0NTAwMTJkMDJhZmZiN2RjNzAxMGM3M2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2OTcs
NiArNDY5Nyw3IEBACiAJCTk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQ
cml2YXRlRm9yVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJ
bnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yVGVzdGluZy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3RvclRlc3Rpbmcu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OUI3RUQ4MjU1MEU0QTgwMEY0NTBB
NCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
OUI3RjRGMjU1NEJBM0YwMEY0NTBBNCAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2NzU2MjUy
QkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTg2LDYgKzk1ODcsNyBAQAogCQkJCTkxOTc5NDA5
MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywKIAkJCQk5OTRDNjA0
ODI1M0Y4MjAyMDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJ
CQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24u
aCAqLywKKwkJCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUwQTQgLyogQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcCAqLywKIAkJCQk5OUJFM0IxMjI1NDIyRjQxMDBDNjU1MUMgLyogQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmggKi8sCiAJCQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUludGVy
bmFsRGVidWdGZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyog
QVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcAppbmRleCAwZmVmMmY4ZWQxMjg2NTc1NmM0NTIyMmYxZjYwYWUx
ZjMzNTJjYjY2Li4xMTc3YjUyNjcwOTZlYTcyNDM3YmVmMzVmZGE4NTc2Nzc5OTAyZWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC01Niw3ICs1
Niw3IEBAIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcigpCiAKIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9y
PiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewotICAgIGlmICghcmVzdWx0Lmhhc192YWx1
ZSgpKSB7CisgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgc3dpdGNoIChyZXN1bHQuZXJyb3Io
KSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6RXZhbHVhdGlvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgogICAgICAgICAgICAgcmV0dXJu
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwpAQCAtMTQ5LDYgKzE0
OSw2MSBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3Rl
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbgogICAgIH0pOwogfQogCitKU0M6OkpTT2Jq
ZWN0KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25S
ZXN1bHRBc09iamVjdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25S
ZXN1bHQgcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAKKyAgICBhdXRvIHZhbHVlT3JFeGNlcHRpb24gPSByZXN1bHQudmFsdWUoKTsKKyAg
ICBpZiAoIXZhbHVlT3JFeGNlcHRpb24uaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIAorICAgIHJldHVybiB2YWx1ZU9yRXhjZXB0aW9uLnZhbHVlKCkuZ2V0T2JqZWN0
KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVU
YWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBj
b25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBz
b3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JF
eHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046
OlZhbHVlPj4gYXJndW1lbnRzIHsKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNp
b25JRCksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUodGFiTmFtZSksCisgICAgICAgIEpT
T046OlZhbHVlOjpjcmVhdGUodGFiSWNvblVSTC5zdHJpbmcoKSksCisgICAgICAgIEpTT046OlZh
bHVlOjpjcmVhdGUoc291cmNlVVJMLnN0cmluZygpKSwKKyAgICB9OworICAgIG1fZnJvbnRlbmRD
bGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRB
c3luYygiY3JlYXRlVGFiRm9yRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRp
b25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFy
ZXN1bHQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKElu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtU
aGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVz
dWx0LnZhbHVlKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChwYXJzZWRFcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBFeHBlY3RlZCByZXN1bHQgaXMgZWl0aGVyIGFuIEVycm9yU3RyaW5n
IG9yIHtleHRlbnNpb25UYWJJRDogPHN0cmluZz59LgorICAgICAgICBhdXRvIG9iamVjdFJlc3Vs
dCA9IHdlYWtUaGlzLT51bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QocmVzdWx0KTsKKyAg
ICAgICAgaWYgKCFvYmplY3RSZXN1bHQpIHsKKyAgICAgICAgICAgIExPRyhJbnNwZWN0b3IsICJV
bmV4cGVjdGVkIG5vbi1vYmplY3QgdmFsdWUgcmV0dXJuZWQgZnJvbSBJbnNwZWN0b3JGcm9udGVu
ZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24oKS4iKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVy
cm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBm
cm9udGVuZEdsb2JhbE9iamVjdCA9IHdlYWtUaGlzLT5tX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVu
ZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVjdCgpOworICAgICAgICBKU0M6OkpT
VmFsdWUgZm91bmRQcm9wZXJ0eSA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3QtPnZt
KCksICJleHRlbnNpb25UYWJJRCJfcykpOworICAgICAgICBpZiAoIWZvdW5kUHJvcGVydHkgfHwg
IWZvdW5kUHJvcGVydHkuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Ip
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgZm91bmRQcm9wZXJ0eS50b1dURlN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdCkg
fSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmgKaW5kZXggNjViMTUyOGZkM2I3MDNmZDliZTk0NzQyYmZhNTNjNGE2ZmRiNDVk
Yy4uYzk0NDVhZTZkYzUwYzE1ZjczNmQ4ODViZjczNGEyYjQyYWI2NDNhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC02NCw4ICs2NCwxMCBAQCBwdWJs
aWM6CiAgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdl
cy4KICAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVj
dG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwogCiBwcml2
YXRlOgorICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQp
OwogICAgIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4
dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsKIAogICAgIFdlYWtQdHI8V2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4
IDJjNzhlZDc1Y2NjM2E5NzZlZmU3NjBjY2JmOGQ4YzYxMDQ1NDY1YzQuLmRjYmVhYTAyZjliYTVh
YjZjNDhlOTdlODFiYTM5OTc2ZTJjZmJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw4IEBACiBt
ZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRl
ZCB7CiAgICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlz
cGxheU5hbWUpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPiByZXN1bHQpIEFzeW5jCiAgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9y
PiByZXN1bHQpIEFzeW5jCisKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVu
c2lvbklELCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+
IChFeHBlY3RlZDxTdHJpbmcsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3Vs
dCkgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415533</attachid>
            <date>2020-12-06 16:03:20 -0800</date>
            <delta_ts>2020-12-08 16:51:41 -0800</delta_ts>
            <desc>Patch v2.1 - for iOS EWS</desc>
            <filename>bug-219380-20201206160319.patch</filename>
            <type>text/plain</type>
            <size>46411</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBk
YjI3ODExZWNmYjhlMGJkMmZkMjBjNWZmYzJjMGI5NDlkNmEzNTM1Li5kY2ViOGU3NjJlZmViMWNj
MWU3M2IzNTU2MGQwMTgzNTIyMTczMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBl
eHRlbnNpb24gdGFicyBpbiBXZWJJbnNwZWN0b3JVSSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoK
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX21ha2VOZXh0RXh0
ZW5zaW9uVGFiSUQpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5wcm90b3R5cGUudW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5HZW5lcmFsVGFiQmFy
SXRlbS5mcm9tVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuR2VuZXJhbFRhYkJhckl0ZW0u
Z2V0IGRpc3BsYXlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Bpbm5lZFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21U
YWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGFi
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCB0YWJCYXJJdGVtKToKKyAgICAgICAgKFdJLlRhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZS50YWJJbmZvKToKKyAgICAgICAgKFdJLlRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5nZXQgbWFuYWdlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmF0dGFjaGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oLgorICAgICAgICAoLmNvbnRlbnQtdmlldy53ZWIt
aW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaC4K
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJJ
bmZvKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3Nlcik6Cisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Z2V0IGV4dGVuc2lvblRhYklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKwogMjAyMC0xMi0wNCAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBGQUxMQkFDS19QTEFU
Rk9STSBhZG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmM2ZhYmMyZjQ3OGU0MWEwYTUzYTI2NmMwOTQ2NTFh
ZTBhOWU1MDBmLi40ZTk1ZTczYzUyNGE3OTA5YTlhNzkwZWNiZTE5NTI2NDAzMGFkYTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogYWRkIHN1cHBvcnQgZm9y
IGNyZWF0aW5nIGV4dGVuc2lvbiB0YWJzIGluIFdlYkluc3BlY3RvclVJIHZpYSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGZvciBjcmVhdGlu
ZyBhbiBleHRlbnNpb24gdGFiIGluIFdlYklucGVjdG9yVUkuCisgICAgICAgIFRoaXMgY2FuIGJl
IHVzZWQgdG8gaW1wbGVtZW50IGJyb3dzZXIuZGV2dG9vbHMucGFuZWxzLmNyZWF0ZSgpIGFzIHBy
b3ZpZGVkIGJ5IHRoZSBXZWIgRXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9M
b2dnaW5nLmg6IEFkZCBJbnNwZWN0b3IgY2hhbm5lbCBmb3IgZXJyb3IgbG9nZ2luZy4KKyAgICAg
ICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDogQWRkIGEgbWlzc2luZyBFbnVt
VHJhaXRzIGNhc2UuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6IEFkZCBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNp
b246Okluc3BlY3RvckV4dGVuc2lvbik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIp
OgorICAgICAgICBJbnNwZWN0b3IgZXh0ZW5zaW9ucyBuZWVkIHRvIGJlIGFibGUgdG8gaW52b2tl
IGNvbW1hbmRzIGluIHRoZSBXZWJQcm9jZXNzLXNpZGUKKyAgICAgICAgZXh0ZW5zaW9uIHByb3h5
IGNvbnRyb2xsZXIsIHNvIGtlZXAgYSBXZWFrUmVmIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxl
ciB0aGF0CisgICAgICAgIGNyZWF0ZWQgdGhlIGV4dGVuc2lvbiBvYmplY3QuIEFsc28sIGltcGxl
bWVudCB0aGUgbmV3IEFQSSBieSBmb3J3YXJkaW5nIGl0IG9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciBy
ZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBhcyBleHBsYWluZWQgYWJvdmUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbklu
dGVybmFsLmg6CisgICAgICAgIEV4cG9zZSBtZW1iZXIgbV9yZW1vdGVJbnNwZWN0b3JQb3J4eSBm
b3IgdXNlIGluIHRoZSBBUEk6OjpJbnNwZWN0b3JFeHRlbnNpb24gY29uc3RydWN0b3IuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAg
ICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gaW5pdFdpdGhJZGVudGlmaWVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFt
ZTp0YWJJY29uVVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1w
bGVtZW50IG5ldyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIE1h
a2UgdGhlIFJlZlB0cjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gbWVtYmVyIHZhcmlhYmxlIGFj
Y2Vzc2libGUgdG8gdGhlIEFQSSBvYmplY3QgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgor
ICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4
dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRhcHQgdG8gbmV3IGNvbnN0cnVjdG9yIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAgICAg
IEZvcndhcmQgdGhlIHJlcXVlc3QgdG8gdGhlIGluc3BlY3RvciBmcm9udGVuZCBXZWJQcm9jZXNz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBBZGQgYSBuZXcgYXN5bmMgSVBDIGNv
bW1hbmQgZm9yIGNyZWF0aW5nIGEgbmV3IGluc3BlY3RvciBleHRlbnNpb24gdGFiLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QpOgorICAgICAg
ICBBZGRlZC4gUHVsbCBvdXQgdGhlIGNvZGUgbmVlZGVkIGZvciBlcnJvci1oYW5kbGluZyB0aGlz
IGNvbW1vbiBvcGVyYXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICBBZGRlZC4g
Q2FsbCBpbnRvIEluc3BlY3RvckZyb250ZW5kQVBJIHRvIHJlcXVlc3QgYSBuZXcgdGFiLiBUdXJu
IHRoZSByZXN1bHQKKyAgICAgICAgaW50byBhbiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBvciBJ
bnNwZWN0b3JFeHRlbnNpb25UYWJJRCBhbmQgc2VuZCB0aGUgSVBDIHJlcGx5LgorCisKIDIwMjAt
MTItMDQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBBZG9wdCBBVk91dHB1dERldmljZS5hbGxvd3NIZWFkVHJhY2tlZFNwYXRpYWxBdWRpbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanMKaW5kZXggMDJlMzk2YzM0MjRmNjI0N2UwMWEwZmFmNTA5YzNiYjI5Nzc5YjFlZS4uNmJm
OTU1OTg5NDIxZjNlN2RhMzZlNTk4ZWE4ZDk5ZDMxMWVjOTc0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0y
OSwzNCArMjksNjggQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNz
IFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICB7CiAgICAgICAgIHN1
cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAgPSBuZXcgTWFwOworICAgICAg
ICB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1hcCA9IG5ldyBNYXA7CisgICAgICAgIC8v
IE1hcCBmcm9tIGV4dGVuc2lvblRhYklEIC0+IFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LgorICAgICAgICB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVu
c2lvbklETWFwID0gbmV3IE1hcDsKKyAgICAgICAgLy8gTXVsdGltYXAgZnJvbSBleHRlbnNpb25J
RCAtPiB7ZXh0ZW5zaW9uVGFiSUQsIC4uLn0uCisgICAgICAgIHRoaXMuX3RhYklEc0ZvckV4dGVu
c2lvbklETWFwID0gbmV3IE11bHRpbWFwOworICAgICAgICB0aGlzLl9uZXh0RXh0ZW5zaW9uVGFi
SUQgPSAxOworICAgIH0KKworICAgIF9tYWtlTmV4dEV4dGVuc2lvblRhYklEKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiA7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICByZWdpc3RlckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCiAgICAgewotICAgICAgICBpZiAodGhp
cy5fZXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICBpZiAodGhpcy5f
ZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgewogICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwg
aXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CiAg
ICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5SZWdp
c3RyYXRpb25GYWlsZWQ7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOwotICAg
ICAgICB0aGlzLl9leHRlbnNpb25JRE1hcC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7Cisg
ICAgICAgIHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklETWFwLnNldChleHRlbnNpb25JRCwg
ZXh0ZW5zaW9uKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0
ZW5zaW9ufSk7CiAgICAgfQogCiAgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkK
ICAgICB7Ci0gICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25JRE1hcC50YWtl
KGV4dGVuc2lvbklEKTsKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbkZv
ckV4dGVuc2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQpOwogICAgICAgICBpZiAoIWV4dGVuc2lv
bikgewogICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHVucmVn
aXN0ZXIgZXh0ZW5zaW9uIHdpdGggdW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQpOwogICAgICAg
ICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJl
cXVlc3Q7CiAgICAgICAgIH0KIAorICAgICAgICBsZXQgZXh0ZW5zaW9uVGFiSURzVG9SZW1vdmUg
PSB0aGlzLl90YWJJRHNGb3JFeHRlbnNpb25JRE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAg
ICAgZm9yIChsZXQgZXh0ZW5zaW9uVGFiSUQgb2YgZXh0ZW5zaW9uVGFiSURzVG9SZW1vdmUpIHsK
KyAgICAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRl
bnRWaWV3Rm9yRXh0ZW5zaW9uSURNYXAudGFrZShleHRlbnNpb25UYWJJRCk7CisgICAgICAgICAg
ICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOwor
ICAgICAgICB9CisKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNpb25SZW1vdmVkLCB7ZXh0
ZW5zaW9ufSk7CiAgICAgfQorCisgICAgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklE
LCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpCisgICAgeworICAgICAgICBsZXQgZXh0
ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklE
KTsKKyAgICAgICAgaWYgKCFleHRlbnNpb24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVy
bmFsRXJyb3IoIlVuYWJsZSB0byBjcmVhdGUgdGFiIGZvciBleHRlbnNpb24gd2l0aCB1bmtub3du
IElEOiAiLCBleHRlbnNpb25JRCwgIiBzb3VyY2VVUkw6ICIsIHNvdXJjZVVSTCk7CisgICAgICAg
ICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVx
dWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBleHRlbnNpb25UYWJJRCA9IGBXZWJFeHRl
bnNpb25UYWItJHtleHRlbnNpb25JRH0tJHt0aGlzLl9uZXh0RXh0ZW5zaW9uVGFiSUQrK31gOwor
ICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcoZXh0ZW5zaW9uLCBleHRlbnNpb25UYWJJRCwgdGFiTmFtZSwgdGFiSWNv
blVSTCwgc291cmNlVVJMKTsKKworICAgICAgICB0aGlzLl90YWJJRHNGb3JFeHRlbnNpb25JRE1h
cC5hZGQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgdGhpcy5fZXh0ZW5z
aW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25JRE1hcC5zZXQoZXh0ZW5zaW9uVGFiSUQsIHRh
YkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250ZW50Vmll
dyh0YWJDb250ZW50Vmlldyk7CisKKyAgICAgICAgcmV0dXJuIHtleHRlbnNpb25UYWJJRH07Cisg
ICAgfQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBi
ODZkZjVmZjA1OWVlYmY4MGUwMzI0OWY4ZjMzOGM1OTViM2VkOThjLi5iOWZmNTVkMzJjYWIyYWE2
YTQ5MjVjNjE2YzM2NzAyNWNjYWQwMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yNDYsNiArMjQ2LDcgQEAKICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1VSTEJyZWFrcG9pbnRQb3BvdmVyLmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1l
bnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1ZhcmlhYmxl
cy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmNzcyI+CiAKICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29u
dHJvbGxlci5jc3MiPgpAQCAtNTgxLDYgKzU4Miw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyI+PC9zY3Jp
cHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWlsc1NlY3Rpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggZjlk
MjBhZjExZjQ2Y2NkZWQ2NWQzZGMxYTliNDY4M2JmNGFkNmQ5Mi4uMGFkN2RhZWQ3YTk1NTc1OTdm
MjYxYmQwZmY0Yzc3MGY2MzNlZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRl
bmRBUEkuanMKQEAgLTIwOSw0ICsyMDksMTEgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIudW5y
ZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCk7CiAgICAgfSwKKworICAgIC8vIFJldHVybnMg
YSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlIGlmIGFuIGVycm9yIG9jY3VycmVk
LCBvdGhlcndpc2UgYW4gb2JqZWN0CisgICAgLy8gd2l0aCBhbiAnaW5zcGVjdG9yRXh0ZW5zaW9u
SUQnIGtleSByZXByZXNlbnRpbmcgdGhlIHRhYiBpZGVudGlmaWVyIGZvciB0aGUgbmV3bHkgY3Jl
YXRlZCB0YWIuCisgICAgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCB0YWJOYW1l
LCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpCisgICAgeworICAgICAgICByZXR1cm4gV0kuc2hhcmVk
QXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklE
LCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOworICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFy
SXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVy
YWxUYWJCYXJJdGVtLmpzCmluZGV4IDMwNmU3MThmYWJlYjE3Y2M2YWU4ODBhZGQyODY3MjQ5Yjkz
ZWQ2ZmQuLjUzOTNlZTQyOGQzZDBlYjM5YmVjMDE0NjM2ZjM0OGM1YzUyNGRkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJC
YXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0dlbmVyYWxUYWJCYXJJdGVtLmpzCkBAIC0zMiw3ICszMiw3IEBAIFdJLkdlbmVyYWxUYWJCYXJJ
dGVtID0gY2xhc3MgR2VuZXJhbFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJCYXJJdGVtCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRh
YkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBsZXQge2ltYWdlLCBkaXNwbGF5TmFtZSwgdGl0bGV9
ID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3IudGFiSW5mbygpOworICAgICAgICBsZXQge2lt
YWdlLCBkaXNwbGF5TmFtZSwgdGl0bGV9ID0gdGFiQ29udGVudFZpZXcudGFiSW5mbygpOwogICAg
ICAgICByZXR1cm4gbmV3IFdJLkdlbmVyYWxUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3LCBpbWFn
ZSwgZGlzcGxheU5hbWUsIHRpdGxlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpz
CmluZGV4IDM0MmM2Nzk4ODQ5MTk0Y2UzZGRkODFlNTlhNTgxMTMyZjA0ZGJlNDkuLjE5ZTg1NjNh
YzcxM2JjMDRiY2FhYzM0MjhhZTg0NmZjNzNjYWNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRl
bS5qcwpAQCAtMzgsNyArMzgsNyBAQCBXSS5QaW5uZWRUYWJCYXJJdGVtID0gY2xhc3MgUGlubmVk
VGFiQmFySXRlbSBleHRlbmRzIFdJLlRhYkJhckl0ZW0KICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpOwogCi0g
ICAgICAgIGxldCB7aW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy5j
b25zdHJ1Y3Rvci50YWJJbmZvKCk7CisgICAgICAgIGxldCB7aW1hZ2UsIGRpc3BsYXlOYW1lLCB0
aXRsZX0gPSB0YWJDb250ZW50Vmlldy50YWJJbmZvKCk7CiAgICAgICAgIHJldHVybiBuZXcgV0ku
UGlubmVkVGFiQmFySXRlbSh0YWJDb250ZW50VmlldywgaW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRs
ZSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKaW5kZXggZmQzMjA4MzRlNGIxN2Y2
MDIxZjM1NTQxNGUyMTdlMWY1ODkzYTM0Yi4uZTA0Y2M4ZmVlOWUwOGU5Zjg2NzE5MGI3OWQ1ZTAw
OTdjZmYzMzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKQEAgLTMzLDcgKzMzLDYgQEAgV0ku
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgIHN1cGVyKG51bGwpOwogCiAgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSB0
YWJJbmZvLmlkZW50aWZpZXI7Ci0gICAgICAgIHRoaXMuX3RhYkJhckl0ZW0gPSB0aGlzLmNvbnN0
cnVjdG9yLnNob3VsZFBpblRhYigpID8gV0kuUGlubmVkVGFiQmFySXRlbS5mcm9tVGFiQ29udGVu
dFZpZXcodGhpcykgOiBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhp
cyk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciA9IG5h
dmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciB8fCBudWxsOwogICAgICAgICB0aGlzLl9k
ZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycyB8fCBbXTsKIApAQCAtODIsNiArODEsMTEgQEAgV0kuVGFiQ29udGVudFZpZXcgPSBj
bGFzcyBUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBnZXQgdGFi
QmFySXRlbSgpCiAgICAgeworICAgICAgICAvLyBUaGlzIGlzIGNyZWF0ZWQgbGF6aWx5IHRvIGJy
ZWFrIGEgZGVwZW5kZW5jeSBjeWNsZSBmb3IgZHluYW1pY2FsbHktY3JlYXRlZCBUYWJDb250ZW50
Vmlld3MuCisgICAgICAgIC8vIFRhYkNvbnRlbnRWaWV3cyB3aXRoIGEgbm9uLXN0YXRpYyB0YWJJ
bmZvKCkgbXVzdCBiZSBmdWxseSBjb25zdHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyB0YWJJbmZvKCku
CisgICAgICAgIGlmICghdGhpcy5fdGFiQmFySXRlbSkKKyAgICAgICAgICAgIHRoaXMuX3RhYkJh
ckl0ZW0gPSB0aGlzLmNvbnN0cnVjdG9yLnNob3VsZFBpblRhYigpID8gV0kuUGlubmVkVGFiQmFy
SXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcykgOiBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9t
VGFiQ29udGVudFZpZXcodGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW07
CiAgICAgfQogCkBAIC0xMjUsNiArMTI5LDEyIEBAIFdJLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgdGFiSW5mbygpCisgICAgeworICAgICAgICAvLyBDYW4gYmUgb3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci50
YWJJbmZvKCk7CisgICAgfQorCiAgICAgYXR0YWNoZWQoKQogICAgIHsKICAgICAgICAgc3VwZXIu
YXR0YWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDc1MzYwN2E4MzgyOTFhYmExMDUxNjQ0
MTU4OGNjMjZlMTNjNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcu
Y3NzCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuY29udGVudC12aWV3LnRhYi53ZWIt
aW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUgeworICAgIGJvcmRlcjogMDsKKworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdo
dDogMDsKKyAgICBib3R0b206IDA7CisKKyAgICAvKiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUg
aWZyYW1lIHRvIGV4cGFuZCBpZiBpdHMgaW50cmluc2ljIHNpemUKKyAgICAgICBpcyBzbWFsbGVy
IHRoYW4gdGhlIHRhYiBjb250ZW50IHZpZXcuICovCisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjg3OGEwYTg3ZTc5YjM5OTk4ODE4NWJk
YWYyMTk3ZmYxMDM5YmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcu
anMKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLldlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldworeworICAgIGNvbnN0cnVjdG9yKGV4dGVuc2lv
biwgZXh0ZW5zaW9uVGFiSUQsIHRhYkxhYmVsLCBpY29uVVJMLCBzb3VyY2VVUkwpCisgICAgewor
ICAgICAgICBsZXQgdGFiSW5mbyA9IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXI6IFdJLldlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGUsCisgICAgICAgICAgICBpbWFnZTog
aWNvblVSTCwKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0YWJMYWJlbCwKKyAgICAgICAgICAg
IHRpdGxlOiB0YWJMYWJlbCwKKyAgICAgICAgfTsKKyAgICAgICAgc3VwZXIodGFiSW5mbyk7CisK
KyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uID0gZXh0ZW5zaW9uOworICAgICAgICB0aGlzLl9leHRl
bnNpb25UYWJJRCA9IGV4dGVuc2lvblRhYklEOworICAgICAgICB0aGlzLl90YWJJbmZvID0gdGFi
SW5mbzsKKyAgICAgICAgdGhpcy5fc291cmNlVVJMID0gc291cmNlVVJMOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgdGFiSW5mbygpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0
LnNoYWxsb3dDb3B5KHRoaXMuX3RhYkluZm8pOworICAgIH0KKworICAgIGdldCB0eXBlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmll
dy5UeXBlOworICAgIH0KKworICAgIGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZ2V0IGV4dGVuc2lvblRh
YklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uVGFiSUQ7IH0KKworICAgIC8vIFByb3RlY3Rl
ZAorCisgICAgaW5pdGlhbExheW91dCgpCisgICAgeworICAgICAgICBzdXBlci5pbml0aWFsTGF5
b3V0KCk7CisKKyAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIikpOworICAgICAgICBpZnJhbWVF
bGVtZW50LnNyYyA9IHRoaXMuX3NvdXJjZVVSTDsKKyAgICB9Cit9OworCitXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5UeXBlID0gIndlYi1pbnNwZWN0b3ItZXh0ZW5zaW9u
LXRhYiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGQwODU3OTBmZTNiMGNmY2JkZDcx
NWQyMTFiZDExM2EzNGY2NTVjNGQuLmY0OWYzOGI2YTVmOWQzZDcwOTUyZDJlMTIxYzg5OTVkZWNl
OThlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC02MCw4ICs2MCw4IEBAIGV4dGVy
biAiQyIgewogICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERikgXAogICAgIE0o
SW5jcmVtZW50YWxQREZWZXJib3NlKSBcCi0gICAgTShJbnNwZWN0b3IpIFwKICAgICBNKEluZGV4
ZWREQikgXAorICAgIE0oSW5zcGVjdG9yKSBcCiAgICAgTShLZXlIYW5kbGluZykgXAogICAgIE0o
TGF5ZXJzKSBcCiAgICAgTShMYXlvdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oCmluZGV4IGVmM2Y1ZWJmYjhkMTcwNTJkMGIzNmVhMjc0Y2Nm
ZjVkNzAzNjVhNGQuLjY5NTM5MmI5YzA4YzI0YzBhODhiZDRjMGFlYjgyMTdhMjVhNzAwODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaApAQCAt
NTAsOCArNTAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAog
ICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9y
LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVz
dCwKICAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9u
RmFpbGVkCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBjYjc4YmIyMmI2NzMyNzQ0NTFjYTNj
Y2RjNTZhNWVmZWY2Nzc1OTgwLi4zYmYyY2RkZDJlYjEyNzFlNmRiNzhjNWU3NTQ5ZjgyNTFjOGJh
YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTM1MSw2ICszNTEsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSUZy
YW1lVHJlZU5vZGUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2RkNGRkMjUxYzQ2Mzk4M2NhNDQzMDU1NzJiNDdi
YTAyNGJmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIgorCituYW1lc3BhY2UgQVBJIHsKKworSW5zcGVjdG9yRXh0ZW5zaW9uOjpJ
bnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9leHRlbnNp
b25Db250cm9sbGVyUHJveHkobWFrZVdlYWtQdHIoZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSkK
K3sKK30KKworUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVh
dGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpj
cmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJ
Y29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9leHRlbnNpb25D
b250cm9sbGVyUHJveHktPmNyZWF0ZVRhYkZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIHRhYk5h
bWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAppbmRleCA3ZTBmMThhZmUyYzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0
ODBiLi5kZGY1YjA4OGVkZWQ1NmViZjQ2N2I3YTg1Y2JjM2ExYzVmYzY3ZjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBA
IC0yOCwyNiArMjgsMzAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTsKK30KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEluc3Bl
Y3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZp
ZXIpKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBJbnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
Ci0gICAgewotICAgIH0KKyAgICBJbnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Jik7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjcmVhdGVUYWIoY29uc3Qg
V1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBX
VEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7
CisgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3Iu
bW0KaW5kZXggMjY3OTY3MmMwYjBlODVlNWQwNWE2YjhjZmQ3YmRmNTRlNTY2MDhhNC4uZjA0Zjlh
NDI0YTQ0YTEyODkxZDgyMjgwM2Y3YjZjMmUyYzllMDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yMDcsNyArMjA3LDcg
QEAgLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25J
RCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JF
eHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0
b3JlbGVhc2VdKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90
ZWN0ZWRTZWxmLT5faW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1
dG9yZWxlYXNlXSk7CiAgICAgfSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86bmlsXSwgbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA2YzVhNjAxZWQyY2YzMTRl
N2E4YmY4NjIzOWU4MGI0YjFhYTliYzgwLi45MzU5YzAwMGViMGFjNGIzNjFkZjQxYTFiZTJiZGMw
YWY3MjRlZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0yMywxOCArMjMsMzUgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKyNwcmFnbWEgb25jZQorCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CiAKKyNpZiBUQVJHRVRfT1NfT1NYCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4dGVuc2lvbiA6IE5T
T2JqZWN0CiAKKy0gKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CiAtIChpbnN0YW5j
ZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKIAorLyoqCisgKiBAYWJzdHJhY3QgQ3JlYXRlcyBh
IG5ldyB0YWIgaW4gdGhlIFdlYiBJbnNwZWN0b3IgaW50ZXJmYWNlIGZvciB0aGlzIGV4dGVuc2lv
bi4KKyAqIEBwYXJhbSB0YWJOYW1lIEEgbG9jYWxpemVkIGRpc3BsYXkgbmFtZSBmb3IgdGhlIHRh
Yi4KKyAqIEBwYXJhbSB0YWJJY29uVVJMIFRoZSBsb2NhdGlvbiBvZiBhbiBpbWFnZSByZXNvdXJj
ZSB0byB1c2UgZm9yIGRpc3BsYXkgaW4gdGhlIGNyZWF0ZWQgdGFiJ3MgdGl0bGUuCisgKiBAcGFy
YW0gc291cmNlVVJMIFRoZSBsb2NhdGlvbiBvZiB0aGUgbWFpbiByZXNvdXJjZSB0byBsb2FkIGlu
IHRoZSBuZXcgdGFiJ3MgaWZyYW1lIGJyb3dzaW5nIGNvbnRleHQuCisgKiBAcGFyYW0gY29tcGxl
dGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBjcmVh
dGluZyBhIHRhYiBzdWNjZWVkcyBvciBmYWlscy4KKyAqLworLSAodm9pZCljcmVhdGVUYWJXaXRo
TmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBz
b3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxhYmxlIGluc3BlY3RvclRhYklEKSlj
b21wbGV0aW9uSGFuZGxlcjsKKwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU1N0
cmluZyAqZXh0ZW5zaW9uSUQ7CiAKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNl
bmRpZiAvLyBUQVJHRVRfT1NfT1NYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQppbmRleCAzZjdkZTk0M2Q1
YWMzMTMxZmQxNTdmYzhmYjU4NTlmMTI3MTg0MTMwLi4zNjdjMGViZDY5ZDBkYzg0NTk0YWUzYmE1
OGVhYTIzNGI4NGRlZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTI2LDIxICsyNiw5IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVy
bmFsLmgiCiAKLU5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0KLUBpbXBsZW1lbnRhdGlvbiBfV0tJ
bnNwZWN0b3JFeHRlbnNpb24KLQogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25J
RAotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmls
OwotCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckV4
dGVuc2lvbj4oc2VsZiwgZXh0ZW5zaW9uSUQpOwotICAgIAotICAgIHJldHVybiBzZWxmOwotfQor
QGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbgogCiAtICh2b2lkKWRlYWxsb2MK
IHsKQEAgLTQ5LDEyICszNywyNSBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKLQogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKICAgICByZXR1cm4gKl9l
eHRlbnNpb247CiB9CiAKKy8vIE1BUks6IEFQSQorCistICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1l
OihOU1N0cmluZyAqKXRhYk5hbWUgdGFiSWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNvdXJj
ZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJv
ciAqLCBOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9leHRlbnNpb24tPmNy
ZWF0ZVRhYih0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKEV4cGVjdGVkPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9T
dHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgcmVzdWx0LnZhbHVlKCkpOworICAg
IH0pOworfQorCiAvLyBNQVJLOiBQcm9wZXJ0aWVzLgogCiAtIChOU1N0cmluZyAqKWV4dGVuc2lv
bklECkBAIC02Miw4ICs2Myw2IEBAIC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKICAgICByZXR1
cm4gX2V4dGVuc2lvbi0+aWRlbnRpZmllcigpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQotCiBAZW5kCiAKLU5TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbklu
dGVybmFsLmgKaW5kZXggOTBjNDVkNTQwODgxZDU0Zjg3NDdkMjE1NjQyY2Q4OGFmYzlkMGQwYy4u
MGEwZmFiYzhhMzcwMmQzMjcyOTZmNTcxNjQwZWMxNzFmYzQ1MTFkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmgKQEAgLTM4LDE3ICszOCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBXcmFwcGVyVHJhaXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi1OU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotCiBAaW50ZXJmYWNlIF9XS0lu
c3BlY3RvckV4dGVuc2lvbiAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklkZW50
aWZpZXI7Ci0KIEBlbmQKIAotTlNfQVNTVU1FX05PTk5VTExfRU5ECi0KICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0KaW5kZXggOTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQyYzhmOGE1ZDBhNzNl
YTc3ZS4uNjEzMzM3MDczN2U4MjZhYjA1ZTgwOTE5OTY3ODBmYThlNmQ1OTYwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCisjaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlckludGVybmFsLmgiCiAKICNpZiBQTEFURk9STShNQUMpCiAKQEAgLTg3
LDcgKzg3LDYgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiBAaW1wbGVtZW50
YXRpb24gX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgewotICAgIFJlZlB0cjxX
ZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xp
ZW50PiBtX3JlbW90ZUluc3BlY3RvckNsaWVudDsKICAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uICpfY29uZmlndXJhdGlvbjsKIH0KQEAgLTIwMSw3ICsyMDAsNyBAQCAtICh2b2lkKXJlZ2lz
dGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihO
U1N0cmluZyAqKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fw
dHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRl
KHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAg
ICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPm1fcmVt
b3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdKTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5m
bzpuaWxdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlckludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2NWY3ZTYyZTUxZmJlOWZmNTE0ZDljMmJm
MWI5MjM3YjNhMGFmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckludGVybmFsLmgK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oIgorCisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTsKK30KKwor
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlciAoKSB7CitAcGFja2FnZQorICAgIFJlZlB0cjxXZWJLaXQ6OlJlbW90
ZVdlYkluc3BlY3RvclByb3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5OworfQorQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vICFUQVJHRVRfT1NfSVBIT05FCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4
YjlhYmQ3MGJkMGZmNjMzOWUyMmIzODM5ZmU3ZTMxYmRmMjYzZjk0Li4wNTI0MjI1ZTY3NTkwNTM5
MzdjZDMzMWJiNTJjZjMwY2U3Mjg4ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTk4LDYgKzk4LDE4IEBAIHZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0
YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRl
ZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIHRhYk5hbWUsIHRh
Ykljb25VUkwsIHNvdXJjZVVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtU
aGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5z
cGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OkNyZWF0ZVRhYkZvckV4dGVuc2lvbiB7IGV4dGVuc2lvbklELCB0
YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmgKaW5kZXggMjAzNDEwYWI0ZjE0YzlhODQxYTAzOWJmOGEzOWE1
YTIyYmI3NzBkZC4uN2NiOWFkZDk3NGQ5N2Y1NzY4MmRkODA2NWIxZjNmNmIyMWI3ZjQ5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIC8vIEFQSS4KICAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRh
YkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
dGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklE
LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMu
CiAgICAgdm9pZCBpbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzRkNzk3ZmZiNjlkMDY2NzI2
M2QwNGY0MzA5ZGVhMTlmY2JiYTAzMi4uNTA5ZjYzYTRlMTQ5OTI3NDUwMDEyZDAyYWZmYjdkYzcw
MTBjNzNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00Njk3LDYgKzQ2OTcsNyBAQAogCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkg
LyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTZBOUUyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3Rv
clRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJ
bnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTlCN0VE
ODI1NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUwQTQgLyogQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3Bl
Y3RvckV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2NzU0
MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0
b3JFeHRlbnNpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU4Niw2ICs5NTg3LDcg
QEAKIAkJCQk5MTk3OTQwOTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50Lmgg
Ki8sCiAJCQkJOTk0QzYwNDgyNTNGODIwMjAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uY3BwICovLAogCQkJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0
b3JDb25maWd1cmF0aW9uLmggKi8sCisJCQkJOTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQ
SUluc3BlY3RvckV4dGVuc2lvbi5jcHAgKi8sCiAJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFD
IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQx
RUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggMGZlZjJmOGVkMTI4NjU3
NTZjNDUyMjJmMWY2MGFlMWYzMzUyY2I2Ni4uMTE3N2I1MjY3MDk2ZWE3MjQzN2JlZjM1ZmRhODU3
Njc3OTkwMmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKQogCiBPcHRpb25hbDxJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJz
ZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKLSAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIHN3aXRj
aCAocmVzdWx0LmVycm9yKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDoKICAg
ICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZDsKQEAgLTE0OSw2ICsxNDksNjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW4KICAgICB9KTsK
IH0KIAorSlNDOjpKU09iamVjdCogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1
bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVz
dWx0LnZhbHVlKCk7CisgICAgaWYgKCF2YWx1ZU9yRXhjZXB0aW9uLmhhc192YWx1ZSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4gdmFsdWVPckV4Y2VwdGlvbi52
YWx1ZSgpLmdldE9iamVjdCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklE
JiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25V
UkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
VmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7CisgICAgICAgIEpTT046OlZhbHVl
OjpjcmVhdGUoZXh0ZW5zaW9uSUQpLAorICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKHRhYk5h
bWUpLAorICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKHRhYkljb25VUkwuc3RyaW5nKCkpLAor
ICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKHNvdXJjZVVSTC5zdHJpbmcoKSksCisgICAgfTsK
KyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENv
bW1hbmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShh
cmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8gcGFy
c2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFs
dWF0aW9uUmVzdWx0KHJlc3VsdC52YWx1ZSgpKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuZXhwZWN0ZWQocGFyc2VkRXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRXhwZWN0ZWQgcmVzdWx0IGlzIGVpdGhl
ciBhbiBFcnJvclN0cmluZyBvciB7ZXh0ZW5zaW9uVGFiSUQ6IDxzdHJpbmc+fS4KKyAgICAgICAg
YXV0byBvYmplY3RSZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2Jq
ZWN0KHJlc3VsdCk7CisgICAgICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CisgICAgICAgICAgICBM
T0coSW5zcGVjdG9yLCAiVW5leHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVybmVkIGZyb20g
SW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVu
ZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsK
KyAgICAgICAgSlNDOjpKU1ZhbHVlIGZvdW5kUHJvcGVydHkgPSBvYmplY3RSZXN1bHQtPmdldChm
cm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5k
R2xvYmFsT2JqZWN0LT52bSgpLCAiZXh0ZW5zaW9uVGFiSUQiX3MpKTsKKyAgICAgICAgaWYgKCFm
b3VuZFByb3BlcnR5IHx8ICFmb3VuZFByb3BlcnR5LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGZvdW5kUHJvcGVydHkudG9XVEZTdHJpbmcoZnJvbnRl
bmRHbG9iYWxPYmplY3QpIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IDY1YjE1MjhmZDNiNzAzZmQ5YmU5NDc0
MmJmYTUzYzRhNmZkYjQ1ZGMuLmM5NDQ1YWU2ZGM1MGMxNWY3MzZkODg1YmY3MzRhMmI0MmFiNjQz
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtNjQs
OCArNjQsMTAgQEAgcHVibGljOgogICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlciBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklE
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJ
Y29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBKU0M6OkpTT2JqZWN0KiB1bndyYXBFdmFsdWF0aW9u
UmVzdWx0QXNPYmplY3QoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpF
dmFsdWF0aW9uUmVzdWx0KTsKICAgICBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CiAKICAg
ICBXZWFrUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xp
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5t
ZXNzYWdlcy5pbgppbmRleCAyYzc4ZWQ3NWNjYzNhOTc2ZWZlNzYwY2NiZjhkOGM2MTA0NTQ2NWM0
Li5kY2JlYWEwMmY5YmE1YWI2YzQ4ZTk3ZTgxYmEzOTk3NmUyY2ZiZjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAt
MjUsNiArMjUsOCBAQAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIE5vdFJlZkNvdW50ZWQgewogICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNp
b25JRCwgU3RyaW5nIGRpc3BsYXlOYW1lKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIFVucmVnaXN0ZXJFeHRlbnNp
b24oU3RyaW5nIGV4dGVuc2lvbklEKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYworCisgICAgQ3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHRhYk5hbWUsIFVSTCB0YWJJY29uVVJMLCBV
Ukwgc291cmNlVVJMKSAtPiAoRXhwZWN0ZWQ8U3RyaW5nLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVu
c2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415691</attachid>
            <date>2020-12-08 16:51:43 -0800</date>
            <delta_ts>2020-12-09 08:39:51 -0800</delta_ts>
            <desc>Patch v2.2 - fix API test failure</desc>
            <filename>bug-219380-20201208165142.patch</filename>
            <type>text/plain</type>
            <size>46434</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBk
YjI3ODExZWNmYjhlMGJkMmZkMjBjNWZmYzJjMGI5NDlkNmEzNTM1Li5kY2ViOGU3NjJlZmViMWNj
MWU3M2IzNTU2MGQwMTgzNTIyMTczMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBl
eHRlbnNpb24gdGFicyBpbiBXZWJJbnNwZWN0b3JVSSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoK
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX21ha2VOZXh0RXh0
ZW5zaW9uVGFiSUQpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5wcm90b3R5cGUudW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5HZW5lcmFsVGFiQmFy
SXRlbS5mcm9tVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuR2VuZXJhbFRhYkJhckl0ZW0u
Z2V0IGRpc3BsYXlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Bpbm5lZFRhYkJhckl0ZW0uanM6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21U
YWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5QaW5uZWRUYWJCYXJJdGVtKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGFi
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCB0YWJCYXJJdGVtKToKKyAgICAgICAgKFdJLlRhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZS50YWJJbmZvKToKKyAgICAgICAgKFdJLlRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5nZXQgbWFuYWdlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmF0dGFjaGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oLgorICAgICAgICAoLmNvbnRlbnQtdmlldy53ZWIt
aW5zcGVjdG9yLWV4dGVuc2lvbi10YWIgPiBpZnJhbWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaC4K
KyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJJ
bmZvKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3Nlcik6Cisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Z2V0IGV4dGVuc2lvblRhYklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKwogMjAyMC0xMi0wNCAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBGQUxMQkFDS19QTEFU
Rk9STSBhZG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmM2ZhYmMyZjQ3OGU0MWEwYTUzYTI2NmMwOTQ2NTFh
ZTBhOWU1MDBmLi40ZTk1ZTczYzUyNGE3OTA5YTlhNzkwZWNiZTE5NTI2NDAzMGFkYTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogYWRkIHN1cHBvcnQgZm9y
IGNyZWF0aW5nIGV4dGVuc2lvbiB0YWJzIGluIFdlYkluc3BlY3RvclVJIHZpYSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGZvciBjcmVhdGlu
ZyBhbiBleHRlbnNpb24gdGFiIGluIFdlYklucGVjdG9yVUkuCisgICAgICAgIFRoaXMgY2FuIGJl
IHVzZWQgdG8gaW1wbGVtZW50IGJyb3dzZXIuZGV2dG9vbHMucGFuZWxzLmNyZWF0ZSgpIGFzIHBy
b3ZpZGVkIGJ5IHRoZSBXZWIgRXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9M
b2dnaW5nLmg6IEFkZCBJbnNwZWN0b3IgY2hhbm5lbCBmb3IgZXJyb3IgbG9nZ2luZy4KKyAgICAg
ICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDogQWRkIGEgbWlzc2luZyBFbnVt
VHJhaXRzIGNhc2UuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6IEFkZCBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNp
b246Okluc3BlY3RvckV4dGVuc2lvbik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIp
OgorICAgICAgICBJbnNwZWN0b3IgZXh0ZW5zaW9ucyBuZWVkIHRvIGJlIGFibGUgdG8gaW52b2tl
IGNvbW1hbmRzIGluIHRoZSBXZWJQcm9jZXNzLXNpZGUKKyAgICAgICAgZXh0ZW5zaW9uIHByb3h5
IGNvbnRyb2xsZXIsIHNvIGtlZXAgYSBXZWFrUmVmIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxl
ciB0aGF0CisgICAgICAgIGNyZWF0ZWQgdGhlIGV4dGVuc2lvbiBvYmplY3QuIEFsc28sIGltcGxl
bWVudCB0aGUgbmV3IEFQSSBieSBmb3J3YXJkaW5nIGl0IG9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciBy
ZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBhcyBleHBsYWluZWQgYWJvdmUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbklu
dGVybmFsLmg6CisgICAgICAgIEV4cG9zZSBtZW1iZXIgbV9yZW1vdGVJbnNwZWN0b3JQb3J4eSBm
b3IgdXNlIGluIHRoZSBBUEk6OjpJbnNwZWN0b3JFeHRlbnNpb24gY29uc3RydWN0b3IuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAg
ICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gaW5pdFdpdGhJZGVudGlmaWVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFt
ZTp0YWJJY29uVVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1w
bGVtZW50IG5ldyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIE1h
a2UgdGhlIFJlZlB0cjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gbWVtYmVyIHZhcmlhYmxlIGFj
Y2Vzc2libGUgdG8gdGhlIEFQSSBvYmplY3QgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgor
ICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4
dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRhcHQgdG8gbmV3IGNvbnN0cnVjdG9yIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAgICAg
IEZvcndhcmQgdGhlIHJlcXVlc3QgdG8gdGhlIGluc3BlY3RvciBmcm9udGVuZCBXZWJQcm9jZXNz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBBZGQgYSBuZXcgYXN5bmMgSVBDIGNv
bW1hbmQgZm9yIGNyZWF0aW5nIGEgbmV3IGluc3BlY3RvciBleHRlbnNpb24gdGFiLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QpOgorICAgICAg
ICBBZGRlZC4gUHVsbCBvdXQgdGhlIGNvZGUgbmVlZGVkIGZvciBlcnJvci1oYW5kbGluZyB0aGlz
IGNvbW1vbiBvcGVyYXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICBBZGRlZC4g
Q2FsbCBpbnRvIEluc3BlY3RvckZyb250ZW5kQVBJIHRvIHJlcXVlc3QgYSBuZXcgdGFiLiBUdXJu
IHRoZSByZXN1bHQKKyAgICAgICAgaW50byBhbiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBvciBJ
bnNwZWN0b3JFeHRlbnNpb25UYWJJRCBhbmQgc2VuZCB0aGUgSVBDIHJlcGx5LgorCisKIDIwMjAt
MTItMDQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBBZG9wdCBBVk91dHB1dERldmljZS5hbGxvd3NIZWFkVHJhY2tlZFNwYXRpYWxBdWRpbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanMKaW5kZXggMDJlMzk2YzM0MjRmNjI0N2UwMWEwZmFmNTA5YzNiYjI5Nzc5YjFlZS4uMWU4
Y2NiOGE3ZjZjYzA0NTk3NThhY2E2Yjg4Y2YzYmI5ODM4NmU5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0y
OSwzNCArMjksNjEgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNz
IFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICB7CiAgICAgICAgIHN1
cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAgPSBuZXcgTWFwOworICAgICAg
ICB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRo
aXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAgPSBuZXcgTWFw
OworICAgICAgICB0aGlzLl90YWJJRHNGb3JFeHRlbnNpb25JRE1hcCA9IG5ldyBNdWx0aW1hcDsK
KyAgICAgICAgdGhpcy5fbmV4dEV4dGVuc2lvblRhYklEID0gMTsKICAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9leHRlbnNpb25JRE1hcC5oYXMoZXh0ZW5zaW9uSUQp
KSB7Ci0gICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gcmVnaXN0
ZXIgZXh0ZW5zaW9uLCBpdCdzIGFscmVhZHkgcmVnaXN0ZXJlZDogIiwgZXh0ZW5zaW9uSUQsIGRp
c3BsYXlOYW1lKTsKKyAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklETWFw
LmhhcyhleHRlbnNpb25JRCkpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3Io
IlVuYWJsZSB0byByZWdpc3RlciBleHRlbnNpb24sIGl0J3MgYWxyZWFkeSByZWdpc3RlcmVkOiAi
ICsgZXh0ZW5zaW9uSUQpOwogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbi5FcnJvckNvZGUuUmVnaXN0cmF0aW9uRmFpbGVkOwogICAgICAgICB9CiAKICAgICAgICAg
bGV0IGV4dGVuc2lvbiA9IG5ldyBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQs
IGRpc3BsYXlOYW1lKTsKLSAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAuc2V0KGV4dGVuc2lv
bklELCBleHRlbnNpb24pOworICAgICAgICB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1h
cC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5F
eHRlbnNpb25BZGRlZCwge2V4dGVuc2lvbn0pOwogICAgIH0KIAogICAgIHVucmVnaXN0ZXJFeHRl
bnNpb24oZXh0ZW5zaW9uSUQpCiAgICAgewotICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5f
ZXh0ZW5zaW9uSURNYXAudGFrZShleHRlbnNpb25JRCk7CisgICAgICAgIGxldCBleHRlbnNpb24g
PSB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1hcC50YWtlKGV4dGVuc2lvbklEKTsKICAg
ICAgICAgaWYgKCFleHRlbnNpb24pIHsKLSAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJy
b3IoIlVuYWJsZSB0byB1bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIsIGV4
dGVuc2lvbklEKTsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0
byB1bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIgKyBleHRlbnNpb25JRCk7
CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5J
bnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCisgICAgICAgIGxldCBleHRlbnNpb25UYWJJRHNU
b1JlbW92ZSA9IHRoaXMuX3RhYklEc0ZvckV4dGVuc2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQp
IHx8IFtdOworICAgICAgICBmb3IgKGxldCBleHRlbnNpb25UYWJJRCBvZiBleHRlbnNpb25UYWJJ
RHNUb1JlbW92ZSkgeworICAgICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0
ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC50YWtlKGV4dGVuc2lvblRh
YklEKTsKKyAgICAgICAgICAgIFdJLnRhYkJyb3dzZXIuY2xvc2VUYWJGb3JDb250ZW50Vmlldyh0
YWJDb250ZW50Vmlldyk7CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVu
c2lvblJlbW92ZWQsIHtleHRlbnNpb259KTsKICAgICB9CisKKyAgICBjcmVhdGVUYWJGb3JFeHRl
bnNpb24oZXh0ZW5zaW9uSUQsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCkKKyAgICB7
CisgICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1h
cC5nZXQoZXh0ZW5zaW9uSUQpOworICAgICAgICBpZiAoIWV4dGVuc2lvbikgeworICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGNyZWF0ZSB0YWIgZm9yIGV4dGVu
c2lvbiB3aXRoIHVua25vd24gSUQ6ICIgKyBleHRlbnNpb25JRCArICIgc291cmNlVVJMOiAiICsg
c291cmNlVVJMKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
RXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgbGV0IGV4dGVu
c2lvblRhYklEID0gYFdlYkV4dGVuc2lvblRhYi0ke2V4dGVuc2lvbklEfS0ke3RoaXMuX25leHRF
eHRlbnNpb25UYWJJRCsrfWA7CisgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IG5ldyBXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyhleHRlbnNpb24sIGV4dGVuc2lvblRh
YklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOworCisgICAgICAgIHRoaXMuX3Rh
YklEc0ZvckV4dGVuc2lvbklETWFwLmFkZChleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwor
ICAgICAgICB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFw
LnNldChleHRlbnNpb25UYWJJRCwgdGFiQ29udGVudFZpZXcpOworICAgICAgICBXSS50YWJCcm93
c2VyLmFkZFRhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKKworICAgICAgICByZXR1
cm4ge2V4dGVuc2lvblRhYklEfTsKKyAgICB9CiB9OwogCiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b25Db250cm9sbGVyLkV2ZW50ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCmluZGV4IGI4NmRmNWZmMDU5ZWViZjgwZTAzMjQ5ZjhmMzM4YzU5NWIz
ZWQ5OGMuLmI5ZmY1NWQzMmNhYjJhYTZhNDkyNWM2MTZjMzY3MDI1Y2NhZDAxZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTI0Niw2ICsy
NDYsNyBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVVJMQnJlYWtw
b2ludFBvcG92ZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvVmFyaWFibGVzLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvV2ViU29ja2V0Q29udGVudFZp
ZXcuY3NzIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udHJvbGxlcnMv
Q29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmNzcyI+CkBAIC01ODEsNiArNTgyLDcgQEAK
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRh
aWxzU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RldGFpbHNT
ZWN0aW9uRGF0YUdyaWRSb3cuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcwppbmRleCBmOWQyMGFmMTFmNDZjY2RlZDY1ZDNkYzFhOWI0NjgzYmY0YWQ2
ZDkyLi4wYWQ3ZGFlZDdhOTU1NzU5N2YyNjFiZDBmZjRjNzcwZjYzM2VkMzA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtMjA5LDQgKzIwOSwxMSBAQCBJbnNw
ZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICB7CiAgICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAu
ZXh0ZW5zaW9uQ29udHJvbGxlci51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklEKTsKICAg
ICB9LAorCisgICAgLy8gUmV0dXJucyBhIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNv
ZGUgaWYgYW4gZXJyb3Igb2NjdXJyZWQsIG90aGVyd2lzZSBhbiBvYmplY3QKKyAgICAvLyB3aXRo
IGFuICdpbnNwZWN0b3JFeHRlbnNpb25JRCcga2V5IHJlcHJlc2VudGluZyB0aGUgdGFiIGlkZW50
aWZpZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIHRhYi4KKyAgICBjcmVhdGVUYWJGb3JFeHRlbnNp
b24oZXh0ZW5zaW9uSUQsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5jcmVhdGVUYWJG
b3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCk7
CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMKaW5kZXggMzA2ZTcxOGZhYmVi
MTdjYzZhZTg4MGFkZDI4NjcyNDliOTNlZDZmZC4uNTM5M2VlNDI4ZDNkMGViMzliZWMwMTQ2MzZm
MzQ4YzVjNTI0ZGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMKQEAgLTMyLDcgKzMy
LDcgQEAgV0kuR2VuZXJhbFRhYkJhckl0ZW0gPSBjbGFzcyBHZW5lcmFsVGFiQmFySXRlbSBleHRl
bmRzIFdJLlRhYkJhckl0ZW0KICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRl
bnRWaWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpOwogCi0gICAgICAgIGxldCB7aW1h
Z2UsIGRpc3BsYXlOYW1lLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci50YWJJ
bmZvKCk7CisgICAgICAgIGxldCB7aW1hZ2UsIGRpc3BsYXlOYW1lLCB0aXRsZX0gPSB0YWJDb250
ZW50Vmlldy50YWJJbmZvKCk7CiAgICAgICAgIHJldHVybiBuZXcgV0kuR2VuZXJhbFRhYkJhckl0
ZW0odGFiQ29udGVudFZpZXcsIGltYWdlLCBkaXNwbGF5TmFtZSwgdGl0bGUpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlu
bmVkVGFiQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMKaW5kZXggMzQyYzY3OTg4NDkxOTRjZTNkZGQ4MWU1OWE1
ODExMzJmMDRkYmU0OS4uMTllODU2M2FjNzEzYmMwNGJjYWFjMzQyOGFlODQ2ZmM3M2NhY2JjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlu
bmVkVGFiQmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzCkBAIC0zOCw3ICszOCw3IEBAIFdJLlBpbm5lZFRh
YkJhckl0ZW0gPSBjbGFzcyBQaW5uZWRUYWJCYXJJdGVtIGV4dGVuZHMgV0kuVGFiQmFySXRlbQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBX
SS5UYWJDb250ZW50Vmlldyk7CiAKLSAgICAgICAgbGV0IHtpbWFnZSwgZGlzcGxheU5hbWUsIHRp
dGxlfSA9IHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnRhYkluZm8oKTsKKyAgICAgICAgbGV0
IHtpbWFnZSwgZGlzcGxheU5hbWUsIHRpdGxlfSA9IHRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKTsK
ICAgICAgICAgcmV0dXJuIG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3LCBp
bWFnZSwgZGlzcGxheU5hbWUsIHRpdGxlKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5q
cwppbmRleCBmZDMyMDgzNGU0YjE3ZjYwMjFmMzU1NDE0ZTIxN2UxZjU4OTNhMzRiLi5lMDRjYzhm
ZWU5ZTA4ZTlmODY3MTkwYjc5ZDVlMDA5N2NmZjMzNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5q
cwpAQCAtMzMsNyArMzMsNiBAQCBXSS5UYWJDb250ZW50VmlldyA9IGNsYXNzIFRhYkNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgc3VwZXIobnVsbCk7CiAKICAgICAg
ICAgdGhpcy5faWRlbnRpZmllciA9IHRhYkluZm8uaWRlbnRpZmllcjsKLSAgICAgICAgdGhpcy5f
dGFiQmFySXRlbSA9IHRoaXMuY29uc3RydWN0b3Iuc2hvdWxkUGluVGFiKCkgPyBXSS5QaW5uZWRU
YWJCYXJJdGVtLmZyb21UYWJDb250ZW50Vmlldyh0aGlzKSA6IFdJLkdlbmVyYWxUYWJCYXJJdGVt
LmZyb21UYWJDb250ZW50Vmlldyh0aGlzKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGVi
YXJQYW5lbENvbnN0cnVjdG9yID0gbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yIHx8
IG51bGw7CiAgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBk
ZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzIHx8IFtdOwogCkBAIC04Miw2ICs4MSwxMSBA
QCBXSS5UYWJDb250ZW50VmlldyA9IGNsYXNzIFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudFZpZXcKIAogICAgIGdldCB0YWJCYXJJdGVtKCkKICAgICB7CisgICAgICAgIC8vIFRoaXMg
aXMgY3JlYXRlZCBsYXppbHkgdG8gYnJlYWsgYSBkZXBlbmRlbmN5IGN5Y2xlIGZvciBkeW5hbWlj
YWxseS1jcmVhdGVkIFRhYkNvbnRlbnRWaWV3cy4KKyAgICAgICAgLy8gVGFiQ29udGVudFZpZXdz
IHdpdGggYSBub24tc3RhdGljIHRhYkluZm8oKSBtdXN0IGJlIGZ1bGx5IGNvbnN0cnVjdGVkIGJl
Zm9yZSBjYWxsaW5nIHRhYkluZm8oKS4KKyAgICAgICAgaWYgKCF0aGlzLl90YWJCYXJJdGVtKQor
ICAgICAgICAgICAgdGhpcy5fdGFiQmFySXRlbSA9IHRoaXMuY29uc3RydWN0b3Iuc2hvdWxkUGlu
VGFiKCkgPyBXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21UYWJDb250ZW50Vmlldyh0aGlzKSA6IFdJ
LkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJDb250ZW50Vmlldyh0aGlzKTsKKwogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGFiQmFySXRlbTsKICAgICB9CiAKQEAgLTEyNSw2ICsxMjksMTIgQEAgV0ku
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICB0YWJJbmZvKCkKKyAgICB7
CisgICAgICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgIHJl
dHVybiB0aGlzLmNvbnN0cnVjdG9yLnRhYkluZm8oKTsKKyAgICB9CisKICAgICBhdHRhY2hlZCgp
CiAgICAgewogICAgICAgICBzdXBlci5hdHRhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFi
Q29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0
NzUzNjA3YTgzODI5MWFiYTEwNTE2NDQxNTg4Y2MyNmUxM2M0ZDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50Vmlldy5jc3MKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky5jb250ZW50LXZpZXcudGFiLndlYi1pbnNwZWN0b3ItZXh0ZW5zaW9uLXRhYiA+IGlmcmFtZSB7
CisgICAgYm9yZGVyOiAwOworCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsK
KyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKworICAgIC8qIFRo
aXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBpZnJhbWUgdG8gZXhwYW5kIGlmIGl0cyBpbnRyaW5zaWMg
c2l6ZQorICAgICAgIGlzIHNtYWxsZXIgdGhhbiB0aGUgdGFiIGNvbnRlbnQgdmlldy4gKi8KKyAg
ICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25U
YWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2
ODc4YTBhODdlNzliMzk5OTg4MTg1YmRhZjIxOTdmZjEwMzliZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3Cit7Cisg
ICAgY29uc3RydWN0b3IoZXh0ZW5zaW9uLCBleHRlbnNpb25UYWJJRCwgdGFiTGFiZWwsIGljb25V
UkwsIHNvdXJjZVVSTCkKKyAgICB7CisgICAgICAgIGxldCB0YWJJbmZvID0geworICAgICAgICAg
ICAgaWRlbnRpZmllcjogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuVHlw
ZSwKKyAgICAgICAgICAgIGltYWdlOiBpY29uVVJMLAorICAgICAgICAgICAgZGlzcGxheU5hbWU6
IHRhYkxhYmVsLAorICAgICAgICAgICAgdGl0bGU6IHRhYkxhYmVsLAorICAgICAgICB9OworICAg
ICAgICBzdXBlcih0YWJJbmZvKTsKKworICAgICAgICB0aGlzLl9leHRlbnNpb24gPSBleHRlbnNp
b247CisgICAgICAgIHRoaXMuX2V4dGVuc2lvblRhYklEID0gZXh0ZW5zaW9uVGFiSUQ7CisgICAg
ICAgIHRoaXMuX3RhYkluZm8gPSB0YWJJbmZvOworICAgICAgICB0aGlzLl9zb3VyY2VVUkwgPSBz
b3VyY2VVUkw7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICB0YWJJbmZvKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBPYmplY3Quc2hhbGxvd0NvcHkodGhpcy5fdGFiSW5mbyk7CisgICAg
fQorCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGU7CisgICAgfQorCisgICAgZ2V0IHN1cHBvcnRz
U3BsaXRDb250ZW50QnJvd3NlcigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBnZXQgZXh0ZW5zaW9uVGFiSUQoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25UYWJJ
RDsgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyLmluaXRpYWxMYXlvdXQoKTsKKworICAgICAgICBsZXQgaWZyYW1lRWxlbWVu
dCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKSk7CisgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gdGhpcy5fc291cmNlVVJMOworICAg
IH0KK307CisKK1dJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGUgPSAi
d2ViLWluc3BlY3Rvci1leHRlbnNpb24tdGFiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5k
ZXggZDA4NTc5MGZlM2IwY2ZjYmRkNzE1ZDIxMWJkMTEzYTM0ZjY1NWM0ZC4uZjQ5ZjM4YjZhNWY5
ZDNkNzA5NTJkMmUxMjFjODk5NWRlY2U5OGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
QEAgLTYwLDggKzYwLDggQEAgZXh0ZXJuICJDIiB7CiAgICAgTShJbWFnZXMpIFwKICAgICBNKElu
Y3JlbWVudGFsUERGKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERlZlcmJvc2UpIFwKLSAgICBNKElu
c3BlY3RvcikgXAogICAgIE0oSW5kZXhlZERCKSBcCisgICAgTShJbnNwZWN0b3IpIFwKICAgICBN
KEtleUhhbmRsaW5nKSBcCiAgICAgTShMYXllcnMpIFwKICAgICBNKExheW91dCkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKaW5kZXggZWYzZjVl
YmZiOGQxNzA1MmQwYjM2ZWEyNzRjY2ZmNWQ3MDM2NWE0ZC4uNjk1MzkyYjljMDhjMjRjMGE4OGJk
NGMwYWViODIxN2EyNWE3MDA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oCkBAIC01MCw4ICs1MCw5IEBAIG5hbWVzcGFjZSBXVEYgewogdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9y
PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvciwKLSAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QsCiAgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I6OkludGVybmFsRXJyb3IsCisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAogICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IGNiNzhiYjIyYjY3MzI3NDQ1MWNhM2NjZGM1NmE1ZWZlZjY3NzU5ODAuLjNiZjJjZGRkMmViMTI3
MWU2ZGI3OGM1ZTc1NDlmODI1MWM4YmFhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzUxLDYgKzM1MSw3
IEBAIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVUcmVlTm9kZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
SFRUUENvb2tpZVN0b3JlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmNwcAog
VUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcAorVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUludGVybmFsRGVi
dWdGZWF0dXJlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAogVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzZGQ0ZGQy
NTFjNDYzOTgzY2E0NDMwNTU3MmI0N2JhMDI0YmYwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisKK25hbWVzcGFjZSBBUEkgewor
CitJbnNwZWN0b3JFeHRlbnNpb246Okluc3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCisgICAgLCBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShtYWtlV2Vha1B0cihleHRl
bnNpb25Db250cm9sbGVyUHJveHkpKQoreworfQorCitSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uPiBJ
bnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwg
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckV4
dGVuc2lvbihpZGVudGlmaWVyLCBleHRlbnNpb25Db250cm9sbGVyUHJveHkpKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFt
ZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkws
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKG1faWRlbnRpZmllciwgdGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCmluZGV4IDdlMGYxOGFmZTJjOTRl
Yzk3NTI3ZjZiN2FmYjQwZGFjZWVlMDQ4MGIuLmRkZjViMDg4ZWRlZDU2ZWJmNDY3YjdhODVjYmMz
YTFjNWZjNjdmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTI4LDI2ICsyOCwzMCBAQAogI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OworfQogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uIGZpbmFsIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Okluc3BlY3RvckV4dGVuc2lvbj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNw
ZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllcikpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IEluc3Bl
Y3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKLSAgICAgICAgOiBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQorICAgIEluc3BlY3RvckV4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRXh0
ZW5zaW9uPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmKTsKIAogICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAg
ICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpV
UkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOworCiBwcml2YXRlOgogICAgIFdU
Rjo6U3RyaW5nIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFdlYktpdDo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCAyNjc5NjcyYzBiMGU4NWU1ZDA1YTZiOGNm
ZDdiZGY1NGU1NjYwOGE0Li5mMDRmOWE0MjRhNDRhMTI4OTFkODIyODAzZjdiNmMyZTJjOWUwODVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3IubW0KQEAgLTIwNyw3ICsyMDcsNyBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElE
OihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtb
d3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lv
bklELmdldCgpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjYXB0dXJlZEJsb2Nr
KG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVk
RXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPl9pbnNwZWN0b3ItPmV4dGVuc2lvbkNv
bnRyb2xsZXIoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKICAgICB9KTsKICNlbHNlCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5o
CmluZGV4IDZjNWE2MDFlZDJjZjMxNGU3YThiZjg2MjM5ZTgwYjRiMWFhOWJjODAuLjkzNTljMDAw
ZWIwYWM0YjM2MWRmNDFhMWJlMmJkYzBhZjcyNGVkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAg
LTIzLDE4ICsyMywzNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI3ByYWdtYSBvbmNlCisKICNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorI2lmIFRBUkdFVF9PU19PU1gKKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSkKIEBpbnRlcmZhY2UgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNPYmplY3QKIAorLSAoaW5zdGFuY2V0eXBlKW5ldyBOU19V
TkFWQUlMQUJMRTsKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwogCisvKioK
KyAqIEBhYnN0cmFjdCBDcmVhdGVzIGEgbmV3IHRhYiBpbiB0aGUgV2ViIEluc3BlY3RvciBpbnRl
cmZhY2UgZm9yIHRoaXMgZXh0ZW5zaW9uLgorICogQHBhcmFtIHRhYk5hbWUgQSBsb2NhbGl6ZWQg
ZGlzcGxheSBuYW1lIGZvciB0aGUgdGFiLgorICogQHBhcmFtIHRhYkljb25VUkwgVGhlIGxvY2F0
aW9uIG9mIGFuIGltYWdlIHJlc291cmNlIHRvIHVzZSBmb3IgZGlzcGxheSBpbiB0aGUgY3JlYXRl
ZCB0YWIncyB0aXRsZS4KKyAqIEBwYXJhbSBzb3VyY2VVUkwgVGhlIGxvY2F0aW9uIG9mIHRoZSBt
YWluIHJlc291cmNlIHRvIGxvYWQgaW4gdGhlIG5ldyB0YWIncyBpZnJhbWUgYnJvd3NpbmcgY29u
dGV4dC4KKyAqIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVy
IHRvIGJlIGNhbGxlZCB3aGVuIGNyZWF0aW5nIGEgdGFiIHN1Y2NlZWRzIG9yIGZhaWxzLgorICov
CistICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmluZyAqKXRhYk5hbWUgdGFiSWNvblVS
TDooTlNVUkwgKil0YWJJY29uVVJMIHNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgTlNTdHJpbmcgKiBfTnVs
bGFibGUgaW5zcGVjdG9yVGFiSUQpKWNvbXBsZXRpb25IYW5kbGVyOworCiBAcHJvcGVydHkgKHJl
YWRvbmx5LCBub25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNpb25JRDsKIAogQGVuZAogCiBOU19B
U1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tCmluZGV4IDNmN2RlOTQzZDVhYzMxMzFmZDE1N2ZjOGZiNTg1OWYxMjcxODQxMzAuLjM2
N2MwZWJkNjlkMGRjODQ1OTRhZTNiYTU4ZWFhMjM0Yjg0ZGVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5tbQpAQCAtMjYsMjEgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKIAotTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
LQotQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbgotCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVy
OihOU1N0cmluZyAqKWV4dGVuc2lvbklECi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxmLCBleHRlbnNpb25JRCk7Ci0gICAg
Ci0gICAgcmV0dXJuIHNlbGY7Ci19CitAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uCiAKIC0gKHZvaWQpZGVhbGxvYwogewpAQCAtNDksMTIgKzM3LDI1IEBAIC0gKHZvaWQpZGVh
bGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9i
amVjdAogewogICAgIHJldHVybiAqX2V4dGVuc2lvbjsKIH0KIAorLy8gTUFSSzogQVBJCisKKy0g
KHZvaWQpY3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihO
U1VSTCAqKXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJj
ZVVSTCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVk
QmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogaW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmls
LCByZXN1bHQudmFsdWUoKSk7CisgICAgfSk7Cit9CisKIC8vIE1BUks6IFByb3BlcnRpZXMuCiAK
IC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKQEAgLTYyLDggKzYzLDYgQEAgLSAoTlNTdHJpbmcg
KilleHRlbnNpb25JRAogICAgIHJldHVybiBfZXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7CiB9CiAK
LSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0KIEBlbmQKIAotTlNfQVNT
VU1FX05PTk5VTExfRU5ECisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaAppbmRleCA5MGM0NWQ1NDA4ODFkNTRmODc0
N2QyMTU2NDJjZDg4YWZjOWQwZDBjLi4wYTBmYWJjOGEzNzAyZDMyNzI5NmY1NzE2NDBlYzE3MWZj
NDUxMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMzgsMTcgKzM4
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLU5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCi0KIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICgpIDxXS09iamVjdD4gewog
QHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+
IF9leHRlbnNpb247CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5T
U3RyaW5nICopZXh0ZW5zaW9uSWRlbnRpZmllcjsKLQogQGVuZAogCi1OU19BU1NVTUVfTk9OTlVM
TF9FTkQKLQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA5MWJkNThmNGQxMjI4
YjhmZTRmNTAxZDJjOGY4YTVkMGE3M2VhNzdlLi42MTMzMzcwNzM3ZTgyNmFiMDVlODA5MTk5Njc4
MGZhOGU2ZDU5NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCIKKyNpbXBv
cnQgIl9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaCIKIAogI2lm
IFBMQVRGT1JNKE1BQykKIApAQCAtODcsNyArODcsNiBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlciB7Ci0gICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+IG1f
cmVtb3RlSW5zcGVjdG9yUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6X1dLUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+IG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50OwogICAg
IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0aW9uOwogfQpAQCAtMjAxLDcg
KzIwMCw3IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0
ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5z
cGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCkpKSByZXRh
aW5dIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIo
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQo
KSwgcHJvdGVjdGVkU2VsZi0+bV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJv
bGxlcigpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21w
bGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjY1
ZjdlNjJlNTFmYmU5ZmY1MTRkOWMyYmYxYjkyMzdiM2EwYWYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVySW50ZXJuYWwuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCisKKyNp
ZiAhVEFSR0VUX09TX0lQSE9ORQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OworfQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJm
YWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICgpIHsKK0BwYWNrYWdlCisg
ICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+IG1fcmVtb3RlSW5zcGVj
dG9yUHJveHk7Cit9CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8g
IVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuY3BwCmluZGV4IDhiOWFiZDcwYmQwZmY2MzM5ZTIyYjM4MzlmZTdlMzFiZGYy
NjNmOTQuLjA1MjQyMjVlNjc1OTA1MzkzN2NkMzMxYmI1MmNmMzBjZTcyODhkMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtOTgs
NiArOTgsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3IKICAgICB9KTsKIH0KIAordm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5n
JiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFi
SUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBl
eHRlbnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6Q3JlYXRlVGFiRm9yRXh0
ZW5zaW9uIHsgZXh0ZW5zaW9uSUQsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCB9LCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAppbmRleCAyMDM0MTBh
YjRmMTRjOWE4NDFhMDM5YmY4YTM5YTVhMjJiYjc3MGRkLi43Y2I5YWRkOTc0ZDk3ZjU3NjgyZGQ4
MDY1YjFmM2Y2YjIxYjdmNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgLy8gQVBJLgog
ICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+
JiYpOworICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVu
c2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwog
CiAgICAgLy8gTm90aWZpY2F0aW9ucy4KICAgICB2b2lkIGluc3BlY3RvckZyb250ZW5kTG9hZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3NGQ3OTdmZmI2OWQwNjY3MjYzZDA0ZjQzMDlkZWExOWZjYmJhMDMyLi41MDlmNjNhNGUx
NDk5Mjc0NTAwMTJkMDJhZmZiN2RjNzAxMGM3M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2OTcsNiArNDY5Nyw3IEBACiAJCTk5
OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlRm9y
VGVzdGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5NkE5RTI1MDA0QkNC
MDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yVGVzdGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3RvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5OUI3RUQ4MjU1MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5OUI3RjRGMjU1NEJBM0YwMEY0
NTBBNCAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JF
eHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTUyNTJCQjdF
MTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC05NTg2LDYgKzk1ODcsNyBAQAogCQkJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAv
KiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywKIAkJCQk5OTRDNjA0ODI1M0Y4MjAyMDBCREYwNjAg
LyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJOTk0QzYwNDYyNTNDQUNC
ODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk5OTlCN0Y0
RjI1NTRCQTNGMDBGNDUwQTQgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk5
OUJFM0IxMjI1NDIyRjQxMDBDNjU1MUMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCiAJ
CQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNw
cCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmUuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cAppbmRleCAwZmVmMmY4ZWQxMjg2NTc1NmM0NTIyMmYxZjYwYWUxZjMzNTJjYjY2Li4xMTc3YjUy
NjcwOTZlYTcyNDM3YmVmMzVmZGE4NTc2Nzc5OTAyZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cigpCiAKIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVh
dGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1
bHQgcmVzdWx0KQogewotICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgc3dpdGNoIChyZXN1bHQuZXJyb3IoKSkgewogICAgICAgICBjYXNl
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkOgogICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwpAQCAtMTQ5LDYgKzE0OSw2MSBAQCB2b2lkIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbgogICAgIH0pOwogfQogCitKU0M6OkpTT2JqZWN0KiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQorewor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBhdXRv
IHZhbHVlT3JFeGNlcHRpb24gPSByZXN1bHQudmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlT3JFeGNl
cHRpb24uaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIHJl
dHVybiB2YWx1ZU9yRXhjZXB0aW9uLnZhbHVlKCkuZ2V0T2JqZWN0KCk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5h
bWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IW1fZnJvbnRlbmRDbGllbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRz
IHsKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCksCisgICAgICAgIEpT
T046OlZhbHVlOjpjcmVhdGUodGFiTmFtZSksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUo
dGFiSWNvblVSTC5zdHJpbmcoKSksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoc291cmNl
VVJMLnN0cmluZygpKSwKKyAgICB9OworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJ
RGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygiY3JlYXRlVGFiRm9y
RXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0LnZhbHVlKCkpKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChwYXJzZWRFcnJvci52
YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBF
eHBlY3RlZCByZXN1bHQgaXMgZWl0aGVyIGFuIEVycm9yU3RyaW5nIG9yIHtleHRlbnNpb25UYWJJ
RDogPHN0cmluZz59LgorICAgICAgICBhdXRvIG9iamVjdFJlc3VsdCA9IHdlYWtUaGlzLT51bndy
YXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QocmVzdWx0KTsKKyAgICAgICAgaWYgKCFvYmplY3RS
ZXN1bHQpIHsKKyAgICAgICAgICAgIExPRyhJbnNwZWN0b3IsICJVbmV4cGVjdGVkIG5vbi1vYmpl
Y3QgdmFsdWUgcmV0dXJuZWQgZnJvbSBJbnNwZWN0b3JGcm9udGVuZEFQSS5jcmVhdGVUYWJGb3JF
eHRlbnNpb24oKS4iKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBmcm9udGVuZEdsb2JhbE9iamVj
dCA9IHdlYWtUaGlzLT5tX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5m
cm9udGVuZEdsb2JhbE9iamVjdCgpOworICAgICAgICBKU0M6OkpTVmFsdWUgZm91bmRQcm9wZXJ0
eSA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3QtPnZtKCksICJleHRlbnNpb25UYWJJ
RCJfcykpOworICAgICAgICBpZiAoIWZvdW5kUHJvcGVydHkgfHwgIWZvdW5kUHJvcGVydHkuaXNT
dHJpbmcoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZm91bmRQcm9w
ZXJ0eS50b1dURlN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdCkgfSk7CisgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXgg
NjViMTUyOGZkM2I3MDNmZDliZTk0NzQyYmZhNTNjNGE2ZmRiNDVkYy4uYzk0NDVhZTZkYzUwYzE1
ZjczNmQ4ODViZjczNGEyYjQyYWI2NDNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5oCkBAIC02NCw4ICs2NCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgY3JlYXRlVGFi
Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0
YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQs
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwogCiBwcml2YXRlOgorICAgIEpTQzo6SlNP
YmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwogICAgIE9wdGlvbmFsPElu
c3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2
YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpF
dmFsdWF0aW9uUmVzdWx0KTsKIAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDJjNzhlZDc1Y2NjM2E5NzZl
ZmU3NjBjY2JmOGQ4YzYxMDQ1NDY1YzQuLmRjYmVhYTAyZjliYTVhYjZjNDhlOTdlODFiYTM5OTc2
ZTJjZmJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw4IEBACiBtZXNzYWdlcyAtPiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVnaXN0ZXJF
eHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBl
Y3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5j
CiAgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3Rl
ZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisK
KyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFi
TmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcs
IFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>
<flag name="review"
          id="432968"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="432969"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>