<?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>129809</bug_id>
          
          <creation_ts>2014-03-06 11:07:52 -0800</creation_ts>
          <short_desc>[WebKit2][iOS] Main-frame custom representations</short_desc>
          <delta_ts>2014-03-07 17:02:24 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129600</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>987767</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-06 11:07:52 -0800</bug_when>
    <thetext>Bringing back code that was removed in r152841 and adapting it to iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987772</commentid>
    <comment_count>1</comment_count>
      <attachid>226014</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-06 11:14:45 -0800</bug_when>
    <thetext>Created attachment 226014
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987790</commentid>
    <comment_count>2</comment_count>
      <attachid>226014</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-06 11:49:23 -0800</bug_when>
    <thetext>Comment on attachment 226014
patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Re-introduce custom representations to WebKit2 (removed in r152841), but
&gt; +        for iOS this time.

s/representation/presentation everywhere?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:103
&gt; +    std::unique_ptr&lt;WebKit::CustomRepresentationRegistry&gt; _customRepresentationRegistry;
&gt; +    RetainPtr&lt;UIView &lt;WKCustomRepresentation&gt;&gt; _customRepresentationView;

It&apos;s a bit odd that this registry lives on the WKWebView. I&apos;d expect it to live on WebPageProxy (but then we&apos;d need C++ wrappers around representation providers, though that isn&apos;t terrible).

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:336
&gt; +        Class representationClass = _customRepresentationRegistry-&gt;customRepresentationForMIMEType(mimeType);

What if there is none?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:340
&gt; +        [_scrollView addSubview:_customRepresentationView.get()];
&gt; +        [_contentView removeFromSuperview];

The ordering is surprising.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h:71
&gt; +- (void)_didFinishLoadingDataForCustomRepresentationWithSuggestedFilename:(const WTF::String&amp;)suggestedFilename dataReference:(const IPC::DataReference&amp;)dataReference;

Would be slightly nicer to send in an NSData* I think.

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationRegistry.h:31
&gt; +#if WK_API_ENABLED

Why?

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationRegistry.mm:29
&gt; +#if WK_API_ENABLED

?

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationRegistry.mm:50
&gt; +        WTFLogAlways(&quot;Cannot register two custom representations for the same MIME type.\n&quot;);

Why not just allow the second one to win?

&gt; Source/WebKit2/UIProcess/Cocoa/WKCustomRepresentation.h:41
&gt; +@protocol WKCustomRepresentation &lt;NSObject&gt;

Representation of what? Would be nice if this was slightly more explanatory. Isn&apos;t it more like WKCustomContentPresentation?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:914
&gt; +        m_pluginView = 0;

nullptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987866</commentid>
    <comment_count>3</comment_count>
      <attachid>226014</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-06 14:30:24 -0800</bug_when>
    <thetext>Comment on attachment 226014
patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:103
&gt;&gt; +    RetainPtr&lt;UIView &lt;WKCustomRepresentation&gt;&gt; _customRepresentationView;
&gt; 
&gt; It&apos;s a bit odd that this registry lives on the WKWebView. I&apos;d expect it to live on WebPageProxy (but then we&apos;d need C++ wrappers around representation providers, though that isn&apos;t terrible).

mitz thinks this doesn’t belong on WebPageProxy either. maybe the configuration? (andersca agrees)

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationRegistry.h:27
&gt; +#ifndef CustomRepresentationRegistry_h
&gt; +#define CustomRepresentationRegistry_h

don’t need these in objc headers

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationRegistry.h:31
&gt;&gt; +#if WK_API_ENABLED
&gt; 
&gt; Why?

because it’s part of WKWebView. or the configuration. or whatever. it’s only used with the API

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationRegistry.mm:50
&gt;&gt; +        WTFLogAlways(&quot;Cannot register two custom representations for the same MIME type.\n&quot;);
&gt; 
&gt; Why not just allow the second one to win?

if this is internal, we should just assert or something (like allow the second one to win), if it becomes API, we should raise an exception

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/WKCustomRepresentation.h:41
&gt;&gt; +@protocol WKCustomRepresentation &lt;NSObject&gt;
&gt; 
&gt; Representation of what? Would be nice if this was slightly more explanatory. Isn&apos;t it more like WKCustomContentPresentation?

need an underscore maybe

dan and anders suggest WKWebViewContentProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987998</commentid>
    <comment_count>4</comment_count>
      <attachid>226075</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-06 19:24:06 -0800</bug_when>
    <thetext>Created attachment 226075
patch

new patch, moves things around (addressing review comments); enough has changed that this definitely needs a fresh review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988001</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-06 19:25:11 -0800</bug_when>
    <thetext>Attachment 226075 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:36:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988091</commentid>
    <comment_count>6</comment_count>
      <attachid>226104</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-07 02:55:41 -0800</bug_when>
    <thetext>Created attachment 226104
fix the mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988092</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-07 02:57:21 -0800</bug_when>
    <thetext>Attachment 226104 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:36:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988357</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-03-07 14:35:14 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=226104&amp;action=review

r=me. Ignore all my comments about naming. Pay attention to the other comments.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:50
&gt;  #import &quot;WKVisitedLinkProviderInternal.h&quot;

V &lt; W

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:102
&gt; +    RetainPtr&lt;UIView &lt;WKWebViewContentProvider&gt;&gt; _customContentProviderView;

Probably don’t need “provider” in this variable’s name.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:336
&gt; +- (void)_setPageHasCustomContentProvider:(BOOL)pageHasCustomContentProvider loadedMIMEType:(const WTF::String&amp;)mimeType

-_setHasCustomContentView:loadedMIMEType: (not quite sure why the word “loaded” is needed)

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:343
&gt; +        _customContentProviderView = adoptNS([[representationClass alloc] initWithFrame:CGRectZero]);

Can just call -init if the frame is CGRectZero.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:512
&gt; +- (BOOL)hasContentView

-hasNormalContentView? -hasStandardContentView? Better yet, -usesStandardContentView, since we seem to always “have” _contentView even when it’s not parented.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:36
&gt; +@property (nonatomic, setter=_setContentProviderRegistry:) WKWebViewContentProviderRegistry* _contentProviderRegistry;

Misplaced star.

&gt; Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:32
&gt; +#import &lt;objc/objc.h&gt;

What’s this for? Class?

&gt; Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:47
&gt; +- (void)registerContentProvider:(Class &lt;WKWebViewContentProvider&gt;)contentProvider forMIMEType:(const String&amp;)mimeType;
&gt; +- (Class &lt;WKWebViewContentProvider&gt;)contentProviderForMIMEType:(const String&amp;)mimeType;

Can drop “content” from these names.

&gt; Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:34
&gt; +#import &quot;WebPageProxy.h&quot;
&gt; +#import &quot;WKWebViewInternal.h&quot;

K &lt; e

&gt; Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:46
&gt; +@interface WKWebViewContentProviderRegistry () {
&gt; +    HashMap&lt;String, Class &lt;WKWebViewContentProvider&gt;, CaseFoldingHash&gt; _contentProviderForMIMEType;
&gt; +    HashCountedSet&lt;WebPageProxy*&gt; _pages;
&gt; +}
&gt; +@end

ivars normally go in the @implementation, not a class extension. If you do that, you don’t even need the extension in this case.

&gt; Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:52
&gt; +    _pages.add(&amp;page);

Should probably assert that the page isn’t already in the set.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2280
&gt; +        m_pageClient.didCommitLoadForMainFrame(mimeType, frameHasCustomContentProvider);

Is it OK to send this a second time? Why is this needed?

&gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:44
&gt;  #import &lt;WebCore/SharedBuffer.h&gt;
&gt;  
&gt; +#import &quot;WKWebViewInternal.h&quot;

&quot; &lt; &lt;

&gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:411
&gt; +    RetainPtr&lt;NSData&gt; data = adoptNS([[NSData alloc] initWithBytes:dataReference.data() length:dataReference.size()]);

Is this the best way to get NSData from a DataReference?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:116
&gt; +bool WebFrameLoaderClient::hasHTMLView() const
&gt; +{
&gt; +    return !m_frameHasCustomContentProvider;
&gt; +}

This makes it obvious that the member variable (and many other things) should be about a custom content view, not a custom content provider.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:902
&gt;      }
&gt;  
&gt; -    m_pluginView-&gt;manualLoadDidFinishLoading();
&gt; -    m_pluginView = 0;
&gt; -    m_hasSentResponseToPluginView = false;
&gt; +    if (m_pluginView) {

Can’t this just be } else {, or return } ?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1190
&gt; +    WebPage* webPage = m_frame-&gt;page();
&gt; +    bool isMainFrame = webPage-&gt;mainWebFrame() == m_frame;

Still no better way to check from mainframe-ness?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3842
&gt; +    if (!m_mimeTypesWithCustomContentProviders.contains(response.mimeType()))
&gt; +        return false;
&gt; +
&gt; +    // If a plug-in exists that claims to support this response, it should take precedence over the custom content provider.
&gt; +    return !canPluginHandleResponse(response);

This can be written as one line (+ comment):
return m_mimeTypesWithCustomContentProviders.contains(response.mimeType()) &amp;&amp; !canPluginHandleResponse(response).

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:629
&gt; +    void addMIMETypeWithCustomContentProvider(const String&amp; mimeType);

Can drop the variable name here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988434</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-07 17:02:24 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/165303</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226014</attachid>
            <date>2014-03-06 11:14:45 -0800</date>
            <delta_ts>2014-03-06 19:24:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>customrep.diff</filename>
            <type>text/plain</type>
            <size>56882</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhY2FhMTIyLi5kOGEwMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2
IEBACisyMDE0LTAzLTA2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFtXZWJLaXQyXVtpT1NdIE1haW4tZnJhbWUgY3VzdG9tIHJlcHJlc2VudGF0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5ODA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtaW50
cm9kdWNlIGN1c3RvbSByZXByZXNlbnRhdGlvbnMgdG8gV2ViS2l0MiAocmVtb3ZlZCBpbiByMTUy
ODQxKSwgYnV0CisgICAgICAgIGZvciBpT1MgdGhpcyB0aW1lLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0
aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgIEFkZCBzdG9yYWdlIGZvciBhIEN1c3Rv
bVJlcHJlc2VudGF0aW9uUmVnaXN0cnkgaW5zdGFuY2UsIGFuZCBmb3IgdGhlIGFjdGl2ZQorICAg
ICAgICBjdXN0b20gcmVwcmVzZW50YXRpb24gdmlldy4KKworICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldFBhZ2VIYXNDdXN0b21SZXByZXNlbnRhdGlvbjpsb2FkZWRNSU1FVHlwZTpdKToKKyAgICAg
ICAgSW5zdGFsbC91bmluc3RhbGwgdGhlIGN1c3RvbSByZXByZXNlbnRhdGlvbiB2aWV3LiBDcmVh
dGUgYSB2aWV3LCBpZiBuZWVkZWQsCisgICAgICAgIGJhc2VkIG9uIHRoZSBjbGFzcyB0aGF0IHRo
ZSByZWdpc3RyeSBoYXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBNSU1FIHR5cGUuCisgICAg
ICAgIFdlIHVucGFyZW50IHRoZSBXS0NvbnRlbnRWaWV3IHdoaWxlIHRoZSBjdXN0b20gcmVwcmVz
ZW50YXRpb24gdmlldyBpcyBhY3RpdmUsCisgICAgICAgIGFuZCByZS11c2UgdGhlIGV4aXN0aW5n
IFdLU2Nyb2xsVmlldyB0byBjb250YWluIHRoZSBjdXN0b20gcmVwcmVzZW50YXRpb24gdmlldy4K
KworICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVw
cmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZGF0YVJlZmVyZW5jZTpdKToKKyAgICAg
ICAgRm9yd2FyZCBsb2FkZWQgZGF0YSBvbiB0byB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHZp
ZXcgZm9yIGRpc3BsYXkuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRy
ZWU6V2ViS2l0OjpdKToKKyAgICAgICAgQXNzZXJ0IHRoYXQgd2UgYXJlbid0IGdldHRpbmcgbGF5
ZXIgdHJlZSBjb21taXRzIHdoaWxlIHVzaW5nIGEgY3VzdG9tIHJlcHJlc2VudGF0aW9uLgorCisg
ICAgICAgICgtW1dLV2ViVmlldyB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldzpdKToKKyAgICAg
ICAgSWYgd2UncmUgdXNpbmcgYSBjdXN0b20gcmVwcmVzZW50YXRpb24sIGl0cyB2aWV3IHNob3Vs
ZCBiZSB1c2VkIGZvciB6b29taW5nCisgICAgICAgIGluc3RlYWQgb2YgdGhlICh1bnBhcmVudGVk
KSBjb250ZW50IHZpZXcuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IGhhc0NvbnRlbnRWaWV3XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzp3aXRoVmll
dzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hTY3JvbGxpbmddKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSk6CisgICAgICAgIElmIHdl
IGRvIG5vdCBoYXZlIGEgcGFyZW50ZWQgV0tDb250ZW50VmlldyBiZWNhdXNlIHdlIGFyZSB1c2lu
ZyBhIGN1c3RvbQorICAgICAgICByZXByZXNlbnRhdGlvbiwgd2Ugc2hvdWxkIG5vdCBmb3J3YXJk
IHNjcm9sbCB2aWV3IHJlbGF0ZWQgY2hhbmdlcyB0byBpdC4KKworICAgICAgICAoLVtXS1dlYlZp
ZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAgIFVwZGF0ZSB0aGUgbWluaW11bSBz
aXplIG9mIHRoZSBjdXN0b20gcmVwcmVzZW50YXRpb24gdmlldyBpZiB0aGUgd2ViIHZpZXcgc2l6
ZSBjaGFuZ2VzLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmg6CisgICAgICAgIEFkZCB0d28gbWV0aG9kcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5Lm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeTo6Q3Vz
dG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVJlcHJl
c2VudGF0aW9uUmVnaXN0cnk6On5DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6Q3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJDdXN0b21S
ZXByZXNlbnRhdGlvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUmVwcmVz
ZW50YXRpb25SZWdpc3RyeTo6Y3VzdG9tUmVwcmVzZW50YXRpb25Gb3JNSU1FVHlwZSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tDdXN0b21SZXByZXNlbnRhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgQSBtaW5pbWFsIHByb3RvY29sIGZvciBpbmZvcm1pbmcgY3VzdG9tIHJlcHJlc2Vu
dGF0aW9uIGltcGxlbWVudGF0aW9ucworICAgICAgICBvZiBjaGFuZ2VzIHRvIHRoZSBzaXplIG9m
IHRoZSB2aWV3LCB0aGUgcmVwcmVzZW50ZWQgZGF0YSwgYW5kIHRoZSBvd25pbmcgc2Nyb2xsIHZp
ZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFn
ZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENvbW1p
dExvYWRGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIEFkZCBw
YXJhbWV0ZXJzIHRvIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUsIGluZGljYXRpbmcgaWYgd2Ug
c2hvdWxkIHVzZQorICAgICAgICBhIGN1c3RvbSByZXByZXNlbnRhdGlvbiB0byBkaXNwbGF5IHRo
ZSBtYWluIGZyYW1lLCBhbmQgd2hhdCBNSU1FIHR5cGUKKyAgICAgICAgd2FzIGxvYWRlZCBpbiBz
YWlkIGZyYW1lLCBhbmQgYWRkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50
YXRpb24uCisgICAgICAgIE9uIGlPUywgZm9yd2FyZCB0aGVzZSB0byB0aGUgV0tXZWJWaWV3Lgor
ICAgICAgICBBbHNvLCBnaXZlIFBhZ2VDbGllbnRJbXBsSU9TIGEgcmVmZXJlbmNlIHRvIHRoZSBX
S1dlYlZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHQ6V2Vi
S2l0Ojpjb25maWd1cmF0aW9uOldlYktpdDo6d2ViVmlldzpdKToKKyAgICAgICAgCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgor
ICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBfaGFzQ3VzdG9tUmVwcmVzZW50YXRp
b25dKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaDoKKyAgICAgICAgRXhwb3NlIHdoZXRoZXIgb3Ig
bm90IGEgZ2l2ZW4gZnJhbWUgaGFzIGEgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBwbHVn
LWluLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJG
cmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpoYXNIVE1MVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1Bh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUhhc0N1
c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgUmVzdG9yZSBXZWJGcmFtZUxvYWRlckNsaWVu
dCBjdXN0b20gcmVwcmVzZW50YXRpb24gY29kZSwgd2hpY2ggZW5zdXJlcworICAgICAgICB0aGF0
IGRhdGEgaXMgcm91dGVkIGNvcnJlY3RseSAodG8gdGhlIFVJIHByb2Nlc3MsIGFuZCBub3QgdG8g
V2ViQ29yZSkgYW5kCisgICAgICAgIHRoYXQgd2UgZG9uJ3QgdHJ5IHRvIHVzZSB0aGUgcGFnZSBj
YWNoZSBmb3IgZnJhbWVzIHdpdGggY3VzdG9tIHJlcHJlc2VudGF0aW9ucy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjphZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNob3VsZFVzZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEtlZXAgYSBsaXN0IG9mIE1JTUUgdHlw
ZXMgd2hpY2ggY2FuIGJlIGRpc3BsYXllZCB2aWEgY3VzdG9tIHJlcHJlc2VudGF0aW9ucworICAg
ICAgICBpbiBXZWJQYWdlLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBkb3duIGZyb20gdGhlIHJlZ2lz
dHJ5IGFzIG5ldyByZXByZXNlbnRhdGlvbnMKKyAgICAgICAgYXJlIGFkZGVkLiBQbHVnLWlucyBz
dGlsbCB0YWtlIHByZWNlbmRlbmNlIG92ZXIgY3VzdG9tIHJlcHJlc2VudGF0aW9ucy4KKwogMjAx
NC0wMy0wMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bQ01ha2VdIEdlbmVyYXRlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBET00gYmluZGlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggMTNiYzE4Ni4uNmE5N2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIldLQmFj
a0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCisj
aW1wb3J0ICJXS0N1c3RvbVJlcHJlc2VudGF0aW9uLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxl
Z2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRp
b25EZWxlZ2F0ZS5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdp
c3RyeS5oIgogI2ltcG9ydCAiV0tTY3JvbGxWaWV3LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVBlcmlw
aGVyYWxIb3N0X1ByaXZhdGUuaD4KIApAQCAtOTYsNiArOTgsOSBAQAogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7
CiAgICAgQk9PTCBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5PiBfY3Vz
dG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3IDxXS0N1c3Rv
bVJlcHJlc2VudGF0aW9uPj4gX2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldzsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OwpAQCAtMTU2LDYg
KzE2MSw4IEBACiAgICAgW19jb250ZW50VmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAgIFtfc2Ny
b2xsVmlldyBhZGRTdWJ2aWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CiAKKyAgICBfY3VzdG9tUmVw
cmVzZW50YXRpb25SZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpDdXN0b21SZXBy
ZXNlbnRhdGlvblJlZ2lzdHJ5PigqX3BhZ2UpOworCiAgICAgW3NlbGYgX2ZyYW1lT3JCb3VuZHND
aGFuZ2VkXTsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CkBAIC0zMjEsNiArMzI4LDM1IEBACiAgICAgcmV0
dXJuIFtfY29udGVudFZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl07CiB9CiAKKy0gKHZv
aWQpX3NldFBhZ2VIYXNDdXN0b21SZXByZXNlbnRhdGlvbjooQk9PTClwYWdlSGFzQ3VzdG9tUmVw
cmVzZW50YXRpb24gbG9hZGVkTUlNRVR5cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZQor
eworICAgIGlmIChwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgW19jdXN0
b21SZXByZXNlbnRhdGlvblZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisKKyAgICAgICAgQ2xh
c3MgcmVwcmVzZW50YXRpb25DbGFzcyA9IF9jdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LT5j
dXN0b21SZXByZXNlbnRhdGlvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAgX2N1c3Rv
bVJlcHJlc2VudGF0aW9uVmlldyA9IGFkb3B0TlMoW1tyZXByZXNlbnRhdGlvbkNsYXNzIGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKKworICAgICAgICBbX3Njcm9sbFZpZXcgYWRk
U3VidmlldzpfY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3LmdldCgpXTsKKyAgICAgICAgW19jb250
ZW50VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKworICAgICAgICBbX2N1c3RvbVJlcHJlc2Vu
dGF0aW9uVmlldyB3ZWJfc2V0TWluaW11bVNpemU6c2VsZi5ib3VuZHMuc2l6ZV07CisgICAgICAg
IFtfY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3IHdlYl9zZXRTY3JvbGxWaWV3Ol9zY3JvbGxWaWV3
LmdldCgpXTsKKyAgICB9IGVsc2UgaWYgKF9jdXN0b21SZXByZXNlbnRhdGlvblZpZXcpIHsKKyAg
ICAgICAgW19jdXN0b21SZXByZXNlbnRhdGlvblZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Cisg
ICAgICAgIF9jdXN0b21SZXByZXNlbnRhdGlvblZpZXcgPSBudWxscHRyOworCisgICAgICAgIFtf
c2Nyb2xsVmlldyBhZGRTdWJ2aWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CisgICAgICAgIFtfc2Ny
b2xsVmlldyBzZXRDb250ZW50U2l6ZTpbX2NvbnRlbnRWaWV3IGZyYW1lXS5zaXplXTsKKyAgICB9
Cit9CisKKy0gKHZvaWQpX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0IFN0cmluZyYpc3VnZ2VzdGVkRmlsZW5hbWUg
ZGF0YVJlZmVyZW5jZTooY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJilkYXRhUmVmZXJlbmNlCit7
CisgICAgQVNTRVJUKF9jdXN0b21SZXByZXNlbnRhdGlvblZpZXcpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGFS
ZWZlcmVuY2UuZGF0YSgpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKV0pOworICAgIFtfY3Vz
dG9tUmVwcmVzZW50YXRpb25WaWV3IHdlYl9zZXRDdXN0b21SZXByZXNlbnRhdGlvbkRhdGE6ZGF0
YS5nZXQoKV07Cit9CisKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWUKIHsKICAg
ICBfaXNXYWl0aW5nRm9yTmV3TGF5ZXJUcmVlQWZ0ZXJEaWRDb21taXRMb2FkID0gWUVTOwpAQCAt
MzI4LDYgKzM2NCw4IEBACiAKIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb24KIHsK
KyAgICBBU1NFUlQoIV9jdXN0b21SZXByZXNlbnRhdGlvblZpZXcpOworCiAgICAgW19zY3JvbGxW
aWV3IHNldENvbnRlbnRTaXplOltfY29udGVudFZpZXcgZnJhbWVdLnNpemVdOwogICAgIFtfc2Ny
b2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1pbmltdW1T
Y2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTpsYXll
clRyZWVUcmFuc2FjdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IoKV07CkBAIC00NjYsMTQgKzUwNCwy
NiBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdl
YkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZgogCiAjcHJhZ21hIG1hcmsgLSBVSVNjcm9sbFZp
ZXdEZWxlZ2F0ZQogCistIChCT09MKWhhc0NvbnRlbnRWaWV3Cit7CisgICAgcmV0dXJuICFfY3Vz
dG9tUmVwcmVzZW50YXRpb25WaWV3OworfQorCiAtIChVSVZpZXcgKil2aWV3Rm9yWm9vbWluZ0lu
U2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewogICAgIEFTU0VSVChfc2Ny
b2xsVmlldyA9PSBzY3JvbGxWaWV3KTsKKworICAgIGlmIChfY3VzdG9tUmVwcmVzZW50YXRpb25W
aWV3KQorICAgICAgICByZXR1cm4gX2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldy5nZXQoKTsKKwog
ICAgIHJldHVybiBfY29udGVudFZpZXcuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld1dp
bGxCZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZpZXc6KFVJVmll
dyAqKXZpZXcKIHsKKyAgICBpZiAoIVtzZWxmIGhhc0NvbnRlbnRWaWV3XSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9
PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKICAgICAgICAgW19jb250ZW50VmlldyB3
aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbV07CiAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRa
b29tT3JTY3JvbGxdOwpAQCAtNDgxLDYgKzUzMSw5IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBv
aW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2Zm
CiAKIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilz
Y3JvbGxWaWV3CiB7CisgICAgaWYgKCFbc2VsZiBoYXNDb250ZW50Vmlld10pCisgICAgICAgIHJl
dHVybjsKKwogICAgIGlmIChzY3JvbGxWaWV3LnBhbkdlc3R1cmVSZWNvZ25pemVyLnN0YXRlID09
IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQogICAgICAgICBbX2NvbnRlbnRWaWV3IHdp
bGxTdGFydFVzZXJUcmlnZ2VyZWRTY3JvbGxdOwogICAgIFtfY29udGVudFZpZXcgd2lsbFN0YXJ0
Wm9vbU9yU2Nyb2xsXTsKQEAgLTQ4OCw2ICs1NDEsOSBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQ
b2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9m
ZgogCiAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGxpbmcKIHsKKyAgICBpZiAoIVtzZWxmIGhhc0Nv
bnRlbnRWaWV3XSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNdOwogICAgIFtfY29udGVudFZpZXcgZGlkRmluaXNoU2Nyb2xsaW5nXTsKIH0K
QEAgLTUzNCwxMSArNTkwLDE1IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFp
bkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAgICAgICAgIFtf
Y29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNpemU6Ym91bmRzLnNpemVdOwogICAgIFtfc2Ny
b2xsVmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bVNp
emU6Ym91bmRzLnNpemVdOworICAgIFtfY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3IHdlYl9zZXRN
aW5pbXVtU2l6ZTpib3VuZHMuc2l6ZV07CiAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50
UmVjdHNdOwogfQogCiAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiB7CisgICAg
aWYgKCFbc2VsZiBoYXNDb250ZW50Vmlld10pCisgICAgICAgIHJldHVybjsKKwogICAgIENHUmVj
dCBmdWxsVmlld1JlY3QgPSBzZWxmLmJvdW5kczsKICAgICBDR1JlY3QgdmlzaWJsZVJlY3RJbkNv
bnRlbnRDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OmZ1bGxWaWV3UmVjdCB0b1ZpZXc6
X2NvbnRlbnRWaWV3LmdldCgpXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDY4NTE4YTMuLjljZDFhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgKQEAgLTQ3LDYgKzQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZVByb3h5OwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERhdGFSZWZlcmVu
Y2U7Cit9CisKIEBpbnRlcmZhY2UgV0tXZWJWaWV3ICgpIFdLX1dFQl9WSUVXX1BST1RPQ09MUyB7
CiAKIEBwYWNrYWdlCkBAIC02Miw2ICs2Niw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIC0gKEJP
T0wpX3Njcm9sbFRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgb3JpZ2luOihX
ZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1p
bmltdW1TY3JvbGxEaXN0YW5jZTsKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0
UmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGZp
dEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5p
bXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxE
aXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdp
dGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luOworCistICh2b2lkKV9zZXRQYWdl
SGFzQ3VzdG9tUmVwcmVzZW50YXRpb246KEJPT0wpcGFnZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9u
IGxvYWRlZE1JTUVUeXBlOihjb25zdCBXVEY6OlN0cmluZyYpbWltZVR5cGU7CistICh2b2lkKV9k
aWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOihjb25zdCBXVEY6OlN0cmluZyYpc3VnZ2VzdGVkRmlsZW5hbWUgZGF0YVJlZmVyZW5j
ZTooY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJilkYXRhUmVmZXJlbmNlOwogI2VuZGlmCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21SZXBy
ZXNlbnRhdGlvblJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3Vz
dG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUyOThjNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnlfaAorI2Rl
ZmluZSBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5X2gKKworI2ltcG9ydCA8V2ViS2l0Mi9X
S0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBQTEFURk9STShJT1Mp
CisKKyNpbXBvcnQgPG9iamMvb2JqYy5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCitAcHJvdG9jb2wgV0tDdXN0b21SZXByZXNlbnRhdGlvbjsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgQ3VzdG9tUmVwcmVzZW50YXRpb25S
ZWdpc3RyeSB7CitwdWJsaWM6CisgICAgQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeShXZWJQ
YWdlUHJveHkmKTsKKyAgICB+Q3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeSgpOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IHJlZ2lzdGVyaW5nIGEgY3VzdG9tIHJlcHJlc2Vu
dGF0aW9uIGZvciBhIHNjaGVtZSB0b28uCisgICAgdm9pZCByZWdpc3RlckN1c3RvbVJlcHJlc2Vu
dGF0aW9uRm9yTUlNRVR5cGUoQ2xhc3MgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+LCBTdHJpbmcg
bWltZVR5cGUpOworICAgIENsYXNzIDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiBjdXN0b21SZXBy
ZXNlbnRhdGlvbkZvck1JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSk7CisKK3ByaXZhdGU6CisgICAg
SGFzaE1hcDxTdHJpbmcsIENsYXNzIDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiwgQ2FzZUZvbGRp
bmdIYXNoPiBtX2N1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGU7CisKKyAgICBXZWJQYWdl
UHJveHkmIG1fd2ViUGFnZVByb3h5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorCisjZW5k
aWYgLy8gQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lz
dHJ5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZmUzYmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUmVwcmVz
ZW50YXRpb25SZWdpc3RyeS5tbQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5OjpDdXN0b21SZXByZXNlbnRh
dGlvblJlZ2lzdHJ5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQorICAgIDogbV93ZWJQYWdl
UHJveHkod2ViUGFnZVByb3h5KQoreworfQorCitDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5
Ojp+Q3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeSgpCit7Cit9CisKK3ZvaWQgQ3VzdG9tUmVw
cmVzZW50YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJDdXN0b21SZXByZXNlbnRhdGlvbkZvck1JTUVU
eXBlKENsYXNzIDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiByZXByZXNlbnRhdGlvbiwgU3RyaW5n
IG1pbWVUeXBlKQoreworICAgIGlmIChtX2N1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUu
Y29udGFpbnMobWltZVR5cGUpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IHJlZ2lz
dGVyIHR3byBjdXN0b20gcmVwcmVzZW50YXRpb25zIGZvciB0aGUgc2FtZSBNSU1FIHR5cGUuXG4i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY3VzdG9tUmVwcmVzZW50YXRpb25G
b3JNSU1FVHlwZS5hZGQobWltZVR5cGUsIHJlcHJlc2VudGF0aW9uKTsKKyAgICBtX3dlYlBhZ2VQ
cm94eS5hZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihtaW1lVHlwZSk7Cit9CisK
K0NsYXNzIDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lz
dHJ5OjpjdXN0b21SZXByZXNlbnRhdGlvbkZvck1JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkKK3sK
KyAgICBjb25zdCBhdXRvJiByZXByZXNlbnRhdGlvbiA9IG1fY3VzdG9tUmVwcmVzZW50YXRpb25G
b3JNSU1FVHlwZS5maW5kKG1pbWVUeXBlKTsKKworICAgIGlmIChyZXByZXNlbnRhdGlvbiA9PSBt
X2N1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUuZW5kKCkpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICByZXR1cm4gcmVwcmVzZW50YXRpb24tPnZhbHVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tD
dXN0b21SZXByZXNlbnRhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dL
Q3VzdG9tUmVwcmVzZW50YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42YjJiMDM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dLQ3VzdG9tUmVwcmVzZW50YXRpb24uaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS0N1c3RvbVJlcHJlc2VudGF0aW9uX2gKKyNkZWZpbmUgV0tDdXN0b21SZXBy
ZXNlbnRhdGlvbl9oCisKKyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaWYgUExBVEZPUk0oSU9TKQorCitAY2xhc3MgTlNEYXRhOworQGNs
YXNzIFVJU2Nyb2xsVmlldzsKK0Bwcm90b2NvbCBOU09iamVjdDsKK3N0cnVjdCBDR1NpemU7CisK
Ky8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBBUEkuCitAcHJvdG9jb2wgV0tDdXN0b21SZXByZXNl
bnRhdGlvbiA8TlNPYmplY3Q+CisKKy0gKHZvaWQpd2ViX3NldEN1c3RvbVJlcHJlc2VudGF0aW9u
RGF0YTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpd2ViX3NldE1pbmltdW1TaXplOihDR1NpemUp
c2l6ZTsKKy0gKHZvaWQpd2ViX3NldFNjcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXc7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECisKKyNlbmRpZiAvLyBXS0N1c3RvbVJlcHJlc2VudGF0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGI5NGQ5MGEuLjE2OGNlNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tUmVwcmVz
ZW50YXRpb24pID0gMDsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0g
MDsKQEAgLTI1Niw2ICsyNTYsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIHZpcnR1YWwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgZnVsbFNjcmVl
bk1hbmFnZXJQcm94eUNsaWVudCgpID0gMDsKICNlbmRpZgorCisgICAgLy8gQ3VzdG9tIHJlcHJl
c2VudGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0
b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYWU0NGJiNS4uNzM1
YmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMx
MSw2ICszMTEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9zcGVsbERvY3Vt
ZW50VGFnKDApCiAgICAgLCBtX2hhc1NwZWxsRG9jdW1lbnRUYWcoZmFsc2UpCiAgICAgLCBtX3Bl
bmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCgwKQorICAgICwgbV9tYWluRnJhbWVI
YXNDdXN0b21SZXByZXNlbnRhdGlvbihmYWxzZSkKICAgICAsIG1fZGVsZWdhdGVzU2Nyb2xsaW5n
KGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNlKQog
ICAgICwgbV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSkKQEAgLTIyMzYsNyAr
MjIzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3Mo
KQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
ZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlw
ZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIElQQzo6
TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVz
ZXJEYXRhLCBwcm9jZXNzKCkpOwpAQCAtMjI1MCw3ICsyMjUxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX3Bh
Z2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbik7Ci0gICAgICAgIG1fcGFnZUNs
aWVudC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCk7CisgICAgICAgIG1fcGFnZUNsaWVudC5k
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbVJlcHJlc2Vu
dGF0aW9uKTsKICAgICB9CiAKICNpZiBVU0UoQVBQS0lUKQpAQCAtMjI2NSw2ICsyMjY2LDIwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKICAgICBmcmFtZS0+ZGlkQ29tbWl0TG9hZChtaW1l
VHlwZSwgY2VydGlmaWNhdGVJbmZvKTsKIAorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkg
eworICAgICAgICBtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uID0gZnJhbWVIYXND
dXN0b21SZXByZXNlbnRhdGlvbjsKKworICAgICAgICBpZiAobV9tYWluRnJhbWVIYXNDdXN0b21S
ZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgLy8gQWx3YXlzIGFzc3VtZSB0aGF0IHRoZSBt
YWluIGZyYW1lIGlzIHBpbm5lZCBoZXJlLCBzaW5jZSB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9u
IHZpZXcgd2lsbCBoYW5kbGUKKyAgICAgICAgICAgIC8vIGFueSB3aGVlbCBldmVudHMgYW5kIGRp
c3BhdGNoIHRoZW0gdG8gdGhlIFdLVmlldyB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIG1f
bWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZy
YW1lSXNQaW5uZWRUb1JpZ2h0U2lkZSA9IHRydWU7CisgICAgICAgICAgICBtX21haW5GcmFtZUlz
UGlubmVkVG9Ub3BTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRU
b0JvdHRvbVNpZGUgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1fcGFnZUNsaWVudC5kaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0
aW9uKTsKKyAgICB9CisKICAgICAvLyBFdmVuIGlmIFdlYlBhZ2UgaGFzIHRoZSBkZWZhdWx0IHBh
Z2VTY2FsZUZhY3RvciAoYW5kIHRoZXJlZm9yZSBkb2Vzbid0IHJlc2V0IGl0KSwKICAgICAvLyBX
ZWJQYWdlUHJveHkncyBjYWNoZSBvZiB0aGUgdmFsdWUgY2FuIGdldCBvdXQgb2Ygc3luYyAoZS5n
LiBpbiB0aGUgY2FzZSB3aGVyZSBhCiAgICAgLy8gcGx1Z2luIGlzIGhhbmRsaW5nIHBhZ2Ugc2Nh
bGluZyBpdHNlbGYpIHNvIHdlIHNob3VsZCByZXNldCBpdCB0byB0aGUgZGVmYXVsdApAQCAtNDIz
Nyw2ICs0MjUyLDExIEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpvbnRhbFNj
cm9sbEV2ZW50cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NhblNob3J0Q2lyY3VpdEhvcml6b250
YWxXaGVlbEV2ZW50czsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRpbmdE
YXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAgIG1fcGFn
ZUNsaWVudC5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKHN1Z2dl
c3RlZEZpbGVuYW1lLCBkYXRhUmVmZXJlbmNlKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKQogewogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCks
IG1fcGFnZUlEKTsKQEAgLTQ1NDEsNCArNDU2MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRU
aHVtYm5haWxTY2FsZShkb3VibGUgc2NhbGUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRUaHVtYm5haWxTY2FsZShzY2FsZSksIG1fcGFnZUlEKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihtaW1lVHlwZSksIG1fcGFn
ZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggZTYzMTdiMi4uMDQzYTFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDUxLDYgKzQ1MSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9jZXNzU3VwcHJl
c3NpYmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgdm9pZCBleGVjdXRlRWRpdENv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgUGFzc1JlZlB0cjxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4pOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTk0Niw3ICs5NDgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHVucmVhY2hhYmxlVVJMLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24s
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTE1NCw2ICsxMTU2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2
b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3QgcGx1Z2luQ29tcGxl
eFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRXaW5kb3dIYXNGb2N1
cyk7CiAgICAgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1
Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHVpbnQ2NF90IGNvbXBsZXhUZXh0SW5wdXRT
dGF0ZSk7CiAjZW5kaWYKQEAgLTEzOTIsNiArMTM5NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc1NwZWxsRG9jdW1lbnRUYWc7CiAgICAgdW5zaWduZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9y
ZVdvcmRNZXNzYWdlQ291bnQ7CiAKKyAgICBib29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVz
ZW50YXRpb247CisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFdlYkNvcmU6OkRyYWdT
ZXNzaW9uIG1fY3VycmVudERyYWdTZXNzaW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxNDUyYjc1Li40ZGFi
ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTEyMSw3ICsxMjEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGlj
CiAgICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBXZWJL
aXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwog
ICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAg
RGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgU3RyaW5nIG1pbWVUeXBlLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUs
IGJvb2wgaGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZhaWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIgdXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKQEAgLTEzNyw2ICsxMzcsOSBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1
aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCisgICAgIyBDdXN0b20gcmVwcmVzZW50YXRp
b25zCisgICAgRGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihTdHJp
bmcgc3VnZ2VzdGVkRmlsZW5hbWUsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorCiAgICAgIyBG
b3JtcyBtZXNzYWdlcwogICAgIFdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHNvdXJjZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0
RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkOWI0ZGQ0Li40MmMx
NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBjbGFzcyBXS0NvbnRlbnRWaWV3
OworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgIApAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBQYWdlQ2xpZW50
SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAjZW5kaWYKICAgICB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgUGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAqKTsKKyAgICBleHBsaWNpdCBQYWdl
Q2xpZW50SW1wbChXS0NvbnRlbnRWaWV3ICosIFdLV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5Q
YWdlQ2xpZW50SW1wbCgpOwogICAgIAogcHJpdmF0ZToKQEAgLTYzLDcgKzY0LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiwgR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAsMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKKwogICAgIFdLQ29udGVudFZpZXcg
Km1fY29udGVudFZpZXc7CisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCmluZGV4IDY2NTM1NjYuLjQ1YzVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDEsNiArNDEs
OCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KIAorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKwogQGlu
dGVyZmFjZSBVSVZpZXcgKElQSSkKIC0gKFVJU2Nyb2xsVmlldyAqKV9zY3JvbGxlcjsKIEBlbmQK
QEAgLTQ5LDggKzUxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAq
dmlldykKLSAgICA6IG1fY29udGVudFZpZXcodmlldykKK1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChXS0NvbnRlbnRWaWV3ICpjb250ZW50VmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQor
ICAgIDogbV9jb250ZW50Vmlldyhjb250ZW50VmlldykKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3
KQogewogfQogCkBAIC0xNDYsOCArMTQ5LDkgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JgogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJh
bWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlvbikK
IHsKKyAgICBbbV93ZWJWaWV3IF9zZXRQYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb246dXNlQ3Vz
dG9tUmVwcmVzZW50YXRpb24gbG9hZGVkTUlNRVR5cGU6bWltZVR5cGVdOwogICAgIFttX2NvbnRl
bnRWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIH0KIApAQCAtNDAyLDYgKzQwNiwx
MSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JikKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
IAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit7CisgICAgW21fd2ViVmlldyBfZGlkRmluaXNo
TG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpz
dWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOmRhdGFSZWZlcmVuY2VdOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAwZWM4NWM5Li5kNWU5
ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CkBAIC03Niw3ICs3Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICAgICBJbml0aWFs
aXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
bGllbnRJbXBsPihzZWxmKTsKKyAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogCiAgICAgX3BhZ2UgPSBjb250ZXh0LmNyZWF0
ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsK
ICAgICBfcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCA3MjFhZjU2Li5iN2E2MmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC03OSw3ICs3
OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOwog
ICAgIHZpcnR1YWwgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmIG9sZFRvb2xUaXAsIGNvbnN0
IFN0cmluZyYgbmV3VG9vbFRpcCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JN
YWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0
aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vy
c29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDM4
NzliZTYuLjkzMmFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQpAQCAtMjg1LDcgKzI4NSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp0
b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmIG9sZFRvb2xUaXAsIGNvbnN0IFN0cmluZyYgbmV3
VAogICAgIFttX3drVmlldyBfdG9vbFRpcENoYW5nZWRGcm9tOm5zU3RyaW5nRnJvbVdlYkNvcmVT
dHJpbmcob2xkVG9vbFRpcCkgdG86bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhuZXdUb29sVGlw
KV07CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUo
KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKQoreworfQorCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3MzE3YTcuLjg1Zjg4NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ5OCw2ICs0OTgsNyBAQAogCQkyRDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVt
Ym5haWxWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5tbSAqLzsgfTsK
IAkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1
MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLzsgfTsKIAkJMkQ2Q0QxMUExODkwNThB
NTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdT
bmFwc2hvdFN0b3JlLm1tICovOyB9OworCQkyRDdBQUZEMzE4Qzg2NDA2MDBBN0FDRDQgLyogV0tD
dXN0b21SZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLQ3VzdG9tUmVwcmVzZW50
YXRpb24uaCAqLzsgfTsKIAkJMkQ4MTlCOUUxODYyN0VFOTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ4MTlCOTkxODYyNzVCMzAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuY3BwICovOyB9OwogCQkyRDgxOUJBMTE4NjI4MDBFMDAxRjAzRDEgLyogVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgxOUI5RjE4NjI4MDBFMDAxRjAz
RDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTJEODE5QkEyMTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEODE5QkEwMTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTUyOSw2ICs1MzAsOCBAQAogCQkyREFDRTY0RTE4
QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUNFNjREMThBREJGRjAwMEU0Q0E3
NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovOyB9OwogCQkyREFGMDZENjE4QkQxQTQ3
MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIx
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkRBRjA2RDcxOEJE
MUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENTE4QkQxQTQ3MDA4
MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJMkRDNkQ5
QzMxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzZEOUMxMThDNDRB
NjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmggKi87IH07CisJCTJE
QzZEOUM0MThDNDRBNjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNkQ5QzIx
OEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkubW0gKi87IH07
CiAJCTJEREUwQUZBMTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
REUwQUY4MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIu
aCAqLzsgfTsKIAkJMkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0
eUFwcGxpZXIubW0gKi87IH07CiAJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
QEAgLTIyNTUsNiArMjI1OCw3IEBACiAJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3
U25hcHNob3RTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFZpZXdTbmFwc2hvdFN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcw
QUIxMzE4QTFENTFBMDAwMjZENkUgLyogSW5mby1pT1MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9ICJJ
bmZvLWlPUy5wbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzBBQjE0MThB
MUQ1N0MwMDAyNkQ2RSAvKiBJbmZvLWlPUy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gIkluZm8taU9T
LnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ3QUFGRDIxOEM4NjQwNjAw
QTdBQ0Q0IC8qIFdLQ3VzdG9tUmVwcmVzZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDdXN0b21SZXByZXNlbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDgxOUI5OTE4NjI3NUIzMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ4MTlCOUExODYyNzVCMzAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgxOUI5QjE4NjI3
NUIzMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI5MCw2ICsyMjk0LDggQEAK
IAkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBwYXRoID0g
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEQUYwNkQ4MThCRDIzQkEwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
bWVzc2FnZXMuaW47IHBhdGggPSBpb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzExOEM0NEE2MTAw
NDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9t
UmVwcmVzZW50YXRpb25SZWdpc3RyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEREUwQUY4MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTQ0LDYgKzQxNTAsOSBAQAogCQkxQUJDM0RGMjE4OTlF
NDE1MDA0RjA2MjYgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS0N1c3RvbVJlcHJlc2Vu
dGF0aW9uLmggKi8sCisJCQkJMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJl
c2VudGF0aW9uUmVnaXN0cnkuaCAqLywKKwkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyog
Q3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5tbSAqLywKIAkJCQkwRjBDMzY1OTE4QzA1NTU4
MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5oICovLAogCQkJCTFBNDIyRjhEMThCMjlD
NjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUE0MjJGOEMxOEIyOUM2NDAw
RDhDRDk2IC8qIEhpc3RvcnlDbGllbnQubW0gKi8sCkBAIC02NTUzLDYgKzY1NjIsNyBAQAogCQkJ
CUJDNEJFRUFCMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3OEUxQTRFMTgyMDhENzAwMDMxMDA3QSAvKiBXS05TVVJMLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTFCMEVCODE4QTQyNENEMDAzODQ4MUEgLyogV0tOYXZpZ2F0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ3QUFGRDMxOEM4NjQw
NjAwQTdBQ0Q0IC8qIFdLQ3VzdG9tUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMjkzNUU0MTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8q
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
NEUxMEExMjBCOTA1RTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtNjc1OSw2ICs2NzY5LDcgQEAKIAkJCQkzRjg3QjlDMDE1ODk0MEQ4
MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2Mjkw
MTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkNCNEU1NDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywK
KwkJCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODAzMiw2ICs4MDQzLDcgQEAKIAkJCQk1MUNCQkEw
RjE2NTIxOUI2MDA1QkU4RkQgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE4MjlEQTUxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQzA2OTAxNjM5MEU2
OTAwQUJCOTExIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXJNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRp
b25SZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhG
RSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUEy
RUM1NTE0ODk5ODJFMDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggYzFl
MzdkNy4uZGIwY2FhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUubW0KQEAgLTEwMiw2ICsxMDIsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKICAgICByZXR1cm4gW3dyYXBwZXIoKkFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZShfZnJh
bWUtPmZyYW1lSUQoKSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKKy0gKEJPT0wpX2hh
c0N1c3RvbVJlcHJlc2VudGF0aW9uCit7CisgICAgaWYgKCFfZnJhbWUtPmlzTWFpbkZyYW1lKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBfZnJhbWUtPnBhZ2UoKS0+bWFp
bkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKTsKK30KKwogI3ByYWdtYSBtYXJrIFdLT2Jq
ZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lUHJpdmF0ZS5oCmluZGV4IDEwYjA5ZjAuLjY3OTBlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oCkBAIC0z
NSw2ICszNSw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICpfYnJvd3NlckNvbnRleHRDb250cm9s
bGVyOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2hhc0N1c3RvbVJl
cHJlc2VudGF0aW9uOworCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlY2M3NzFlLi42ODA3YWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTAsNiArOTAsNyBAQCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoKQogICAgIDogbV9mcmFtZSgwKQogICAg
ICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcoZmFsc2UpCiAgICAgLCBtX2RpZENvbXBs
ZXRlUGFnZVRyYW5zaXRpb25BbHJlYWR5KGZhbHNlKQorICAgICwgbV9mcmFtZUhhc0N1c3RvbVJl
cHJlc2VudGF0aW9uKGZhbHNlKQogICAgICwgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlKGZhbHNl
KQogewogfQpAQCAtMTA5LDYgKzExMCwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
cmFtZUxvYWRlckRlc3Ryb3llZCgpCiAgICAgbV9mcmFtZS0+ZGVyZWYoKTsKIH0KIAorYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6aGFzSFRNTFZpZXcoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uOworfQorCiBib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpoYXNXZWJWaWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgp
OwpAQCAtNDQ1LDggKzQ1MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpCiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KIAotICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3Vt
ZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLmxvYWRUeXBlKCksIENlcnRpZmljYXRlSW5mbyhkb2N1bWVudExvYWRlci5yZXNwb25z
ZSgpKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
Ci0KKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExv
YWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25J
RCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0
b21SZXByZXNlbnRhdGlvbiwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBl
KCksIENlcnRpZmljYXRlSW5mbyhkb2N1bWVudExvYWRlci5yZXNwb25zZSgpKSwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+
ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApAQCAtODUyLDYgKzg1NywxMCBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKKyAgICAvLyBJZiB3ZSdyZSBs
b2FkaW5nIGEgY3VzdG9tIHJlcHJlc2VudGF0aW9uLCB3ZSBkb24ndCB3YW50IHRvIGhhbmQgb2Zm
IHRoZSBkYXRhIHRvIFdlYkNvcmUuCisgICAgaWYgKG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRh
dGlvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX3BsdWdpblZpZXcpCiAgICAgICAg
IGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCkBAIC04NzgsMjIgKzg4NywzMyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBpZiAoIW1fcGx1
Z2luVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgd2UganVzdCByZWNlaXZlZCBh
biBlbXB0eSByZXNwb25zZSB3aXRob3V0IGFueSBkYXRhLCB3ZSB3b24ndCBoYXZlIHNlbnQgYSBy
ZXNwb25zZSB0byB0aGUgcGx1Zy1pbiB2aWV3LgotICAgIC8vIE1ha2Ugc3VyZSB0byBkbyB0aGlz
IGJlZm9yZSBjYWxsaW5nIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nLgotICAgIGlmICghbV9o
YXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcpIHsKLSAgICAgICAgbV9wbHVnaW5WaWV3LT5tYW51
YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+cmVzcG9uc2UoKSk7CisgICAgaWYgKCFt
X3BsdWdpblZpZXcpIHsKKyAgICAgICAgaWYgKG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlv
bikgeworICAgICAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAg
ICAgICAgICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHRoZSBhYm92ZSBjYWxsIG51bGxpbmcgb3V0IHRoZSBwbHVn
LWluIChieSB0cnlpbmcgdG8gY2FuY2VsIHRoZSBsb2FkIGZvciBleGFtcGxlKS4KLSAgICAgICAg
aWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBSZWZQ
dHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVz
b3VyY2VEYXRhLT5kYXRhKCkgOiAwKSwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGxv
YWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7Cisg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRGaW5pc2hM
b2FkaW5nKCk7Ci0gICAgbV9wbHVnaW5WaWV3ID0gMDsKLSAgICBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luVmlldyA9IGZhbHNlOworICAgIGlmIChtX3BsdWdpblZpZXcpIHsKKyAgICAgICAgLy8g
SWYgd2UganVzdCByZWNlaXZlZCBhbiBlbXB0eSByZXNwb25zZSB3aXRob3V0IGFueSBkYXRhLCB3
ZSB3b24ndCBoYXZlIHNlbnQgYSByZXNwb25zZSB0byB0aGUgcGx1Zy1pbiB2aWV3LgorICAgICAg
ICAvLyBNYWtlIHN1cmUgdG8gZG8gdGhpcyBiZWZvcmUgY2FsbGluZyBtYW51YWxMb2FkRGlkRmlu
aXNoTG9hZGluZy4KKyAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldykg
eworICAgICAgICAgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+cmVzcG9uc2UoKSk7CisKKyAgICAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCB0
aGUgYWJvdmUgY2FsbCBudWxsaW5nIG91dCB0aGUgcGx1Zy1pbiAoYnkgdHJ5aW5nIHRvIGNhbmNl
bCB0aGUgbG9hZCBmb3IgZXhhbXBsZSkuCisgICAgICAgICAgICBpZiAoIW1fcGx1Z2luVmlldykK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3BsdWdpblZp
ZXctPm1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CisgICAgICAgIG1fcGx1Z2luVmlldyA9
IDA7CisgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gZmFsc2U7CisgICAg
fQogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkK
QEAgLTExNjYsNiArMTE4NiwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFt
ZSopCiB7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBib29s
IGlzTWFpbkZyYW1lID0gd2ViUGFnZS0+bWFpbldlYkZyYW1lKCkgPT0gbV9mcmFtZTsKKworICAg
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CisgICAgbV9mcmFtZUhhc0N1
c3RvbVJlcHJlc2VudGF0aW9uID0gaXNNYWluRnJhbWUgJiYgd2ViUGFnZS0+c2hvdWxkVXNlQ3Vz
dG9tUmVwcmVzZW50YXRpb25Gb3JSZXNwb25zZShyZXNwb25zZSk7CisgICAgbV9mcmFtZUNhbWVG
cm9tUGFnZUNhY2hlID0gdHJ1ZTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCkBAIC0xMTg1LDYgKzEyMTEsOCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkK
ICAgICAgICAgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
dmlldygpLT5maXhlZFZpc2libGVDb250ZW50UmVjdCgpOwogI2VuZGlmCiAKKyAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOworICAgIG1fZnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbiA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnNob3VsZFVzZUN1c3RvbVJlcHJl
c2VudGF0aW9uRm9yUmVzcG9uc2UocmVzcG9uc2UpOwogICAgIG1fZnJhbWVDYW1lRnJvbVBhZ2VD
YWNoZSA9IGZhbHNlOwogCiAgICAgU2Nyb2xsYmFyTW9kZSBkZWZhdWx0U2Nyb2xsYmFyTW9kZSA9
IHNob3VsZEhpZGVTY3JvbGxiYXJzID8gU2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Nyb2xsYmFyQXV0
bzsKQEAgLTEyNDQsNiArMTI3MiwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wgdmFsdWUpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpGcmFtZURpZEJlY29tZUZyYW1lU2V0KG1fZnJhbWUtPmZyYW1l
SUQoKSwgdmFsdWUpKTsKIH0KIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQ
YWdlKCkgY29uc3QKK3sKKyAgICAvLyBXZSBjYW5ub3QgY2FjaGUgZnJhbWVzIHRoYXQgaGF2ZSBj
dXN0b20gcmVwcmVzZW50YXRpb25zIGJlY2F1c2UgdGhleSBhcmUKKyAgICAvLyByZW5kZXJlZCBp
biB0aGUgVUlQcm9jZXNzLgorICAgIHJldHVybiAhbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0
aW9uOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvY3VtZW50TG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIG1fZnJhbWUtPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVu
dExvYWRlciwgcmVxdWVzdCwgcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IGJhMWU0OTYuLjc5MmNjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDEwICs0MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJGcmFtZShXZWJGcmFt
ZSogd2ViRnJhbWUpIHsgbV9mcmFtZSA9IHdlYkZyYW1lOyB9CiAgICAgV2ViRnJhbWUqIHdlYkZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCisgICAgYm9vbCBmcmFtZUhhc0N1c3Rv
bVJlcHJlc2VudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2Vu
dGF0aW9uOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJv
eWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CkBAIC0xNzUsOSArMTc3LDkgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAKKwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGlu
ZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKICAgICAKQEAg
LTIzMiw2ICsyMzQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBtX3BsdWdp
blZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldzsKICAgICBib29s
IG1fZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbkFscmVhZHk7CisgICAgYm9vbCBtX2ZyYW1lSGFz
Q3VzdG9tUmVwcmVzZW50YXRpb247CiAgICAgYm9vbCBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNDNjZjU4Mi4uNTU4NDUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzA3NSw2ICszMDc1LDIyIEBAIHZvaWQgV2ViUGFnZTo6
Y2xlYXJTZWxlY3Rpb24oKQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViUGFnZTo6bWFpbkZyYW1lSGFz
Q3VzdG9tUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIGlmIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWUoKSkgeworICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2Fk
ZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KSk7CisgICAgICAgIEFTU0VSVCh3ZWJGcmFtZUxvYWRlckNsaWVudCk7CisgICAgICAgIHJldHVy
biB3ZWJGcmFtZUxvYWRlckNsaWVudC0+ZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbigpOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJQYWdlOjphZGRNSU1FVHlw
ZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAg
IG1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9ucy5hZGQobWltZVR5cGUpOworfQor
CiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKQogewog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CkBAIC0zODE3LDYgKzM4MzMs
MTUgQEAgYm9vbCBXZWJQYWdlOjpjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKICNlbmRpZgogfQogCitib29sIFdlYlBhZ2U6OnNob3VsZFVz
ZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit7CisgICAgaWYgKCFtX21pbWVUeXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlv
bnMuY29udGFpbnMocmVzcG9uc2UubWltZVR5cGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIElmIGEgcGx1Zy1pbiBleGlzdHMgdGhhdCBjbGFpbXMgdG8gc3VwcG9ydCB0aGlz
IHJlc3BvbnNlLCBpdCBzaG91bGQgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGN1c3RvbSByZXBy
ZXNlbnRhdGlvbi4KKyAgICByZXR1cm4gIWNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKHJlc3BvbnNl
KTsKK30KKwogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JF
ZGl0aW5nKFdlYlBhZ2UqIHBhZ2UpCiB7CkBAIC0zOTYyLDYgKzM5ODcsOSBAQCBib29sIFdlYlBh
Z2U6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdAogICAgIGlm
IChNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoTUlNRVR5cGUpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAorICAgIGlmIChtX21pbWVUeXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlv
bnMuY29udGFpbnMoTUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGNvbnN0
IFBsdWdpbkRhdGEmIHBsdWdpbkRhdGEgPSBtX3BhZ2UtPnBsdWdpbkRhdGEoKTsKICAgICBpZiAo
cGx1Z2luRGF0YS5zdXBwb3J0c01pbWVUeXBlKE1JTUVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVn
aW5zKSAmJiBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigp
LmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGUxZTcwNzMuLjUzNWU5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtNjI1LDYgKzYyNSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwogCisgICAgYm9vbCBtYWluRnJhbWVI
YXNDdXN0b21SZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgYWRkTUlNRVR5cGVXaXRo
Q3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICB2b2lk
IG1haW5GcmFtZURpZExheW91dCgpOwogCiAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoKSBjb25zdCB7IHJldHVybiBtX2NhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bDsgfQpAQCAtNjc5LDYgKzY4Miw3IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBuYXRpdmVXaW5k
b3dIYW5kbGUoKSB7IHJldHVybiBtX25hdGl2ZVdpbmRvd0hhbmRsZTsgfQogI2VuZGlmCiAKKyAg
ICBib29sIHNob3VsZFVzZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgY2FuUGx1Z2luSGFuZGxlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwogCiAgICAgYm9v
bCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZDsgfQpAQCAtMTEwNyw2
ICsxMTExLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0
b3JDbGllbnQ7CiAKKyAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVU
eXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlvbnM7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9iYWNr
Z3JvdW5kQ29sb3I7CiAKICAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2FjdGl2ZVJlbmRlcmluZ1N1
cHByZXNzaW9uVG9rZW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyNjhlMmNkLi42YjVlMTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMTgzLDYgKzE4Myw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQogICAgIEhpZGVG
aW5kVUkoKQogICAgIENvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBm
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKKyAgICAKKyAgICBBZGRNSU1FVHlw
ZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihTdHJpbmcgbWltZVR5cGUpCiAKICAgICAjIERyYWcg
YW5kIGRyb3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQo=
</data>
<flag name="review"
          id="250200"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226075</attachid>
            <date>2014-03-06 19:24:06 -0800</date>
            <delta_ts>2014-03-07 02:55:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>customrep.diff</filename>
            <type>text/plain</type>
            <size>64633</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhY2FhMTIyLi44ODFkN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3
IEBACisyMDE0LTAzLTA2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFtXZWJLaXQyXVtpT1NdIE1haW4tZnJhbWUgY3VzdG9tIGNvbnRlbnQgcHJvdmlk
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk4
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1p
bnRyb2R1Y2UgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXJzIHRvIFdlYktpdDIgKHJlbW92ZWQgaW4g
cjE1Mjg0MSksIGJ1dAorICAgICAgICBmb3IgaU9TIHRoaXMgdGltZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgaW5p
dFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICBTZW5kIHRoZSBpbml0aWFsIE1J
TUUgdHlwZXMgdGhhdCBoYXZlIGN1c3RvbSBjb250ZW50IHByb3ZpZGVycyB0byB0aGUgV2ViUHJv
Y2Vzcy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgZGVhbGxvY10pOgorICAgICAgICBVbnJlZ2lz
dGVyIG91ciBwYWdlIGZyb20gdGhlIGNvbnRlbnQgcHJvdmlkZXIgcmVnaXN0cnkuCisgICAgICAg
IAorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2VIYXNDdXN0b21Db250ZW50UHJvdmlkZXI6
bG9hZGVkTUlNRVR5cGU6XSk6CisgICAgICAgIEluc3RhbGwvdW5pbnN0YWxsIHRoZSBjdXN0b20g
Y29udGVudCBwcm92aWRlci4gQ3JlYXRlIGEgdmlldywgaWYgbmVlZGVkLAorICAgICAgICBiYXNl
ZCBvbiB0aGUgY2xhc3MgdGhhdCB0aGUgcmVnaXN0cnkgaGFzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
Z2l2ZW4gTUlNRSB0eXBlLgorICAgICAgICBXZSB1bnBhcmVudCB0aGUgV0tDb250ZW50VmlldyB3
aGlsZSB0aGUgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXIgaXMgYWN0aXZlLAorICAgICAgICBhbmQg
cmUtdXNlIHRoZSBleGlzdGluZyBXS1Njcm9sbFZpZXcgdG8gY29udGFpbiB0aGUgY3VzdG9tIGNv
bnRlbnQgcHJvdmlkZXIuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpkYXRhUmVm
ZXJlbmNlOl0pOgorICAgICAgICBGb3J3YXJkIGxvYWRlZCBkYXRhIG9uIHRvIHRoZSBjdXN0b20g
Y29udGVudCBwcm92aWRlciBmb3IgZGlzcGxheS4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX2Rp
ZENvbW1pdExheWVyVHJlZTpXZWJLaXQ6Ol0pOgorICAgICAgICBBc3NlcnQgdGhhdCB3ZSBhcmVu
J3QgZ2V0dGluZyBsYXllciB0cmVlIGNvbW1pdHMgd2hpbGUgdXNpbmcgYSBjdXN0b20gY29udGVu
dCBwcm92aWRlci4KKworICAgICAgICAoLVtXS1dlYlZpZXcgdmlld0Zvclpvb21pbmdJblNjcm9s
bFZpZXc6XSk6CisgICAgICAgIElmIHdlJ3JlIHVzaW5nIGEgY3VzdG9tIGNvbnRlbnQgcHJvdmlk
ZXIsIGl0cyB2aWV3IHNob3VsZCBiZSB1c2VkIGZvciB6b29taW5nCisgICAgICAgIGluc3RlYWQg
b2YgdGhlICh1bnBhcmVudGVkKSB3ZWIgY29udGVudCB2aWV3LgorCisgICAgICAgICgtW1dLV2Vi
VmlldyBoYXNDb250ZW50Vmlld10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2Nyb2xsVmlld1dp
bGxCZWdpblpvb21pbmc6d2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxW
aWV3V2lsbEJlZ2luRHJhZ2dpbmc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRmluaXNo
U2Nyb2xsaW5nXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0c10pOgorICAgICAgICBJZiB3ZSBkbyBub3QgaGF2ZSBhIHBhcmVudGVkIFdLQ29udGVudFZp
ZXcgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBjdXN0b20KKyAgICAgICAgY29udGVudCBwcm92aWRl
ciwgd2Ugc2hvdWxkIG5vdCBmb3J3YXJkIHNjcm9sbCB2aWV3IHJlbGF0ZWQgY2hhbmdlcyB0byBp
dC4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisgICAg
ICAgIFVwZGF0ZSB0aGUgbWluaW11bSBzaXplIG9mIHRoZSBjdXN0b20gY29udGVudCBwcm92aWRl
ciBpZiB0aGUgd2ViIHZpZXcgc2l6ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfc2V0Q29udGVudFByb3ZpZGVyUmVnaXN0cnk6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaDogQWRk
ZWQuCisgICAgICAgIEFkZCBhbiBpbnRlcm5hbCBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHByb3Bl
cnR5LCB0aGUgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICBB
IG1pbmltYWwgcHJvdG9jb2wgZm9yIGluZm9ybWluZyBjdXN0b20gY29udGVudCBwcm92aWRlcnMg
b2YgY2hhbmdlcyB0bworICAgICAgICB0aGUgc2l6ZSBvZiB0aGUgdmlldywgdGhlIHJlcHJlc2Vu
dGVkIGRhdGEsIGFuZCB0aGUgb3duaW5nIHNjcm9sbCB2aWV3LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5t
bTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IGFk
ZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IHJl
bW92ZVBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
IHJlZ2lzdGVyQ29udGVudFByb3ZpZGVyOmZvck1JTUVUeXBlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSBjb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgbWltZVR5cGVz
V2l0aENvbnRlbnRQcm92aWRlcnNdKToKKyAgICAgICAgTmV3IGNsYXNzLCBrZWVwcyB0cmFjayBv
ZiBhIG1hcHBpbmcgZnJvbSBNSU1FIHR5cGVzIHRvIFVJVmlld3MgdGhhdAorICAgICAgICBjb25m
b3JtIHRvIHRoZSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIgcHJvdG9jb2wuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRpbmdE
YXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAgQWRkIHBhcmFtZXRlcnMgdG8g
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSwgaW5kaWNhdGluZyBpZiB3ZSBzaG91bGQgdXNlCisg
ICAgICAgIGEgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXIgdG8gZGlzcGxheSB0aGUgbWFpbiBmcmFt
ZSwgYW5kIHdoYXQgTUlNRSB0eXBlCisgICAgICAgIHdhcyBsb2FkZWQgaW4gc2FpZCBmcmFtZSwg
YW5kIGFkZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlci4KKyAg
ICAgICAgT24gaU9TLCBmb3J3YXJkIHRoZXNlIHRvIHRoZSBXS1dlYlZpZXcuCisgICAgICAgIEFs
c28sIGdpdmUgUGFnZUNsaWVudEltcGxJT1MgYSByZWZlcmVuY2UgdG8gdGhlIFdLV2ViVmlldy4K
KyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dDpXZWJLaXQ6OmNvbmZp
Z3VyYXRpb246V2ViS2l0Ojp3ZWJWaWV3Ol0pOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIF9oYXNDdXN0b21Db250ZW50UHJvdmlkZXJdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZVByaXZhdGUuaDoKKyAgICAgICAgRXhwb3NlIHdoZXRoZXIgb3Igbm90IGEgZ2l2
ZW4gZnJhbWUgaGFzIGEgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXIgdG8gdGhlIHBsdWctaW4uCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hU
TUxWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKToKKyAgICAgICAgUmVzdG9yZSBXZWJGcmFtZUxvYWRlckNsaWVudCBjdXN0
b20gcmVwcmVzZW50YXRpb24gY29kZSwgd2hpY2ggZW5zdXJlcworICAgICAgICB0aGF0IGRhdGEg
aXMgcm91dGVkIGNvcnJlY3RseSAodG8gdGhlIFVJIHByb2Nlc3MsIGFuZCBub3QgdG8gV2ViQ29y
ZSkgYW5kCisgICAgICAgIHRoYXQgd2UgZG9uJ3QgdHJ5IHRvIHVzZSB0aGUgcGFnZSBjYWNoZSBm
b3IgZnJhbWVzIHdpdGggY29udGVudCBwcm92aWRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFk
ZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZFVzZUN1c3RvbUNvbnRlbnRQcm92aWRlckZvclJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBLZWVwIGEgbGlzdCBvZiBNSU1FIHR5cGVzIHdoaWNo
IGNhbiBiZSBkaXNwbGF5ZWQgdmlhIGN1c3RvbSBjb250ZW50IHByb3ZpZGVycworICAgICAgICBp
biBXZWJQYWdlLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBkb3duIGZyb20gdGhlIHJlZ2lzdHJ5IGFz
IG5ldyBwcm92aWRlcnMKKyAgICAgICAgYXJlIGFkZGVkLiBQbHVnLWlucyBzdGlsbCB0YWtlIHBy
ZWNlbmRlbmNlIG92ZXIgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXJzLgorCiAyMDE0LTAzLTAzICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtD
TWFrZV0gR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIERPTSBiaW5kaW5ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxM2Jj
MTg2Li4zNWZiMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtNDUsNyArNDUsOCBAQAogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLVUlEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXS1Zpc2l0ZWRMaW5r
UHJvdmlkZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW1w
b3J0ICJXZWJDb250ZXh0LmgiCkBAIC01Nyw2ICs1OCw3IEBACiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVBlcmlwaGVyYWxIb3N0X1ByaXZhdGUu
aD4KIAogQGludGVyZmFjZSBVSVNjcm9sbFZpZXcgKFVJU2Nyb2xsVmlld0ludGVybmFsKQpAQCAt
OTYsNiArOTgsOCBAQAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgQk9PTCBfYWxsb3dzQmFja0Zvcndh
cmROYXZpZ2F0aW9uR2VzdHVyZXM7CisKKyAgICBSZXRhaW5QdHI8VUlWaWV3IDxXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXI+PiBfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldzsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OwpAQCAtMTMyLDYg
KzEzNiw5IEBACiAgICAgaWYgKCFbX2NvbmZpZ3VyYXRpb24gdmlzaXRlZExpbmtQcm92aWRlcl0p
CiAgICAgICAgIFtfY29uZmlndXJhdGlvbiBzZXRWaXNpdGVkTGlua1Byb3ZpZGVyOmFkb3B0TlMo
W1tXS1Zpc2l0ZWRMaW5rUHJvdmlkZXIgYWxsb2NdIGluaXRdKS5nZXQoKV07CiAKKyAgICBpZiAo
IVtfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldKQorICAgICAgICBbX2Nv
bmZpZ3VyYXRpb24gX3NldENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OmFkb3B0TlMoW1tXS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSBhbGxvY10gaW5pdF0pLmdldCgpXTsKKwogICAgIENH
UmVjdCBib3VuZHMgPSBzZWxmLmJvdW5kczsKIAogICAgIFdlYktpdDo6V2ViQ29udGV4dCYgY29u
dGV4dCA9ICpbX2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdLT5fY29udGV4dDsKQEAgLTE2Myw2
ICsxNzAsOCBAQAogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoX2tleWJvYXJkRGlkQ2hhbmdlRnJhbWU6KSBuYW1lOlVJS2V5Ym9hcmREaWRDaGFuZ2VGcmFt
ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKF9rZXlib2FyZFdpbGxTaG93OikgbmFtZTpVSUtleWJvYXJkV2ls
bFNob3dOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmRXaWxsSGlkZTopIG5hbWU6VUlLZXlib2Fy
ZFdpbGxIaWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCisgICAgW1tfY29uZmlndXJhdGlv
biBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIGFkZFBhZ2U6Kl9wYWdlXTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtMTgyLDYgKzE5MSw4IEBACiAKIC0gKHZvaWQpZGVhbGxvYwog
eworICAgIFtbX2NvbmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5XSByZW1vdmVQ
YWdlOipfcGFnZV07CisKICAgICBbX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZhbGlkYXRlXTsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKQEAgLTMyMSw2ICszMzIsMzUgQEAKICAgICByZXR1
cm4gW19jb250ZW50VmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXTsKIH0KIAorLSAodm9p
ZClfc2V0UGFnZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcjooQk9PTClwYWdlSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyIGxvYWRlZE1JTUVUeXBlOihjb25zdCBXVEY6OlN0cmluZyYpbWltZVR5cGUK
K3sKKyAgICBpZiAocGFnZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcikgeworICAgICAgICBbX2N1
c3RvbUNvbnRlbnRQcm92aWRlclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisKKyAgICAgICAg
Q2xhc3MgcmVwcmVzZW50YXRpb25DbGFzcyA9IFtbX2NvbmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5XSBjb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTptaW1lVHlwZV07CisgICAg
ICAgIEFTU0VSVChyZXByZXNlbnRhdGlvbkNsYXNzKTsKKyAgICAgICAgX2N1c3RvbUNvbnRlbnRQ
cm92aWRlclZpZXcgPSBhZG9wdE5TKFtbcmVwcmVzZW50YXRpb25DbGFzcyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvXSk7CisKKyAgICAgICAgW19jb250ZW50VmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKyAgICAgICAgW19zY3JvbGxWaWV3IGFkZFN1YnZpZXc6X2N1c3RvbUNvbnRl
bnRQcm92aWRlclZpZXcuZ2V0KCldOworCisgICAgICAgIFtfY3VzdG9tQ29udGVudFByb3ZpZGVy
VmlldyB3ZWJfc2V0TWluaW11bVNpemU6c2VsZi5ib3VuZHMuc2l6ZV07CisgICAgICAgIFtfY3Vz
dG9tQ29udGVudFByb3ZpZGVyVmlldyB3ZWJfc2V0U2Nyb2xsVmlldzpfc2Nyb2xsVmlldy5nZXQo
KV07CisgICAgfSBlbHNlIGlmIChfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldykgeworICAgICAg
ICBbX2N1c3RvbUNvbnRlbnRQcm92aWRlclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAg
ICAgIF9jdXN0b21Db250ZW50UHJvdmlkZXJWaWV3ID0gbnVsbHB0cjsKKworICAgICAgICBbX3Nj
cm9sbFZpZXcgYWRkU3VidmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAgICAgICBbX3Njcm9s
bFZpZXcgc2V0Q29udGVudFNpemU6W19jb250ZW50VmlldyBmcmFtZV0uc2l6ZV07CisgICAgfQor
fQorCistICh2b2lkKV9kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRl
cldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooY29uc3QgU3RyaW5nJilzdWdnZXN0ZWRGaWxlbmFtZSBk
YXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgQVNTRVJUKF9jdXN0b21Db250ZW50UHJvdmlkZXJW
aWV3KTsKKyAgICBbX2N1c3RvbUNvbnRlbnRQcm92aWRlclZpZXcgd2ViX3NldENvbnRlbnRQcm92
aWRlckRhdGE6ZGF0YV07Cit9CisKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWUK
IHsKICAgICBfaXNXYWl0aW5nRm9yTmV3TGF5ZXJUcmVlQWZ0ZXJEaWRDb21taXRMb2FkID0gWUVT
OwpAQCAtMzI4LDYgKzM2OCw4IEBACiAKIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29u
c3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rp
b24KIHsKKyAgICBBU1NFUlQoIV9jdXN0b21Db250ZW50UHJvdmlkZXJWaWV3KTsKKwogICAgIFtf
c2Nyb2xsVmlldyBzZXRDb250ZW50U2l6ZTpbX2NvbnRlbnRWaWV3IGZyYW1lXS5zaXplXTsKICAg
ICBbX3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5t
aW5pbXVtU2NhbGVGYWN0b3IoKV07CiAgICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2Nh
bGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWF4aW11bVNjYWxlRmFjdG9yKCldOwpAQCAtNDY2LDE0
ICs1MDgsMjYgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9m
ZnNldChXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKIAogI3ByYWdtYSBtYXJrIC0gVUlT
Y3JvbGxWaWV3RGVsZWdhdGUKIAorLSAoQk9PTCloYXNDb250ZW50VmlldworeworICAgIHJldHVy
biAhX2N1c3RvbUNvbnRlbnRQcm92aWRlclZpZXc7Cit9CisKIC0gKFVJVmlldyAqKXZpZXdGb3Ja
b29taW5nSW5TY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiB7CiAgICAgQVNT
RVJUKF9zY3JvbGxWaWV3ID09IHNjcm9sbFZpZXcpOworCisgICAgaWYgKF9jdXN0b21Db250ZW50
UHJvdmlkZXJWaWV3KQorICAgICAgICByZXR1cm4gX2N1c3RvbUNvbnRlbnRQcm92aWRlclZpZXcu
Z2V0KCk7CisKICAgICByZXR1cm4gX2NvbnRlbnRWaWV3LmdldCgpOwogfQogCiAtICh2b2lkKXNj
cm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhW
aWV3OihVSVZpZXcgKil2aWV3CiB7CisgICAgaWYgKCFbc2VsZiBoYXNDb250ZW50Vmlld10pCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChzY3JvbGxWaWV3LnBpbmNoR2VzdHVyZVJlY29nbml6
ZXIuc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQmVnYW4pCiAgICAgICAgIFtfY29u
dGVudFZpZXcgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21dOwogICAgIFtfY29udGVudFZpZXcg
d2lsbFN0YXJ0Wm9vbU9yU2Nyb2xsXTsKQEAgLTQ4MSw2ICs1MzUsOSBAQCBzdGF0aWMgV2ViQ29y
ZTo6RmxvYXRQb2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQg
Y29udGVudE9mZgogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzooVUlTY3Jv
bGxWaWV3ICopc2Nyb2xsVmlldwogeworICAgIGlmICghW3NlbGYgaGFzQ29udGVudFZpZXddKQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoc2Nyb2xsVmlldy5wYW5HZXN0dXJlUmVjb2duaXpl
ci5zdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKICAgICAgICAgW19jb250
ZW50VmlldyB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkU2Nyb2xsXTsKICAgICBbX2NvbnRlbnRWaWV3
IHdpbGxTdGFydFpvb21PclNjcm9sbF07CkBAIC00ODgsNiArNTQ1LDkgQEAgc3RhdGljIFdlYkNv
cmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJDb3JlOjpGbG9hdFBvaW50
IGNvbnRlbnRPZmYKIAogLSAodm9pZClfZGlkRmluaXNoU2Nyb2xsaW5nCiB7CisgICAgaWYgKCFb
c2VsZiBoYXNDb250ZW50Vmlld10pCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF91cGRh
dGVWaXNpYmxlQ29udGVudFJlY3RzXTsKICAgICBbX2NvbnRlbnRWaWV3IGRpZEZpbmlzaFNjcm9s
bGluZ107CiB9CkBAIC01MzQsMTEgKzU5NCwxNSBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2lu
dCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZgog
ICAgICAgICBbX2NvbnRlbnRWaWV3IHNldE1pbmltdW1MYXlvdXRTaXplOmJvdW5kcy5zaXplXTsK
ICAgICBbX3Njcm9sbFZpZXcgc2V0RnJhbWU6Ym91bmRzXTsKICAgICBbX2NvbnRlbnRWaWV3IHNl
dE1pbmltdW1TaXplOmJvdW5kcy5zaXplXTsKKyAgICBbX2N1c3RvbUNvbnRlbnRQcm92aWRlclZp
ZXcgd2ViX3NldE1pbmltdW1TaXplOmJvdW5kcy5zaXplXTsKICAgICBbc2VsZiBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0c107CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVj
dHMKIHsKKyAgICBpZiAoIVtzZWxmIGhhc0NvbnRlbnRWaWV3XSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgQ0dSZWN0IGZ1bGxWaWV3UmVjdCA9IHNlbGYuYm91bmRzOwogICAgIENHUmVjdCB2aXNp
YmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6ZnVsbFZpZXdS
ZWN0IHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0K
aW5kZXggNzg1NzEwNS4uMTIyN2RiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMjQs
MTAgKzI0LDExIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMzYsNiArMzcsOSBAQAogICAgIFJldGFpblB0cjxX
S1ByZWZlcmVuY2VzPiBfcHJlZmVyZW5jZXM7CiAgICAgUmV0YWluUHRyPFdLVmlzaXRlZExpbmtQ
cm92aWRlcj4gX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CiAgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxX
S1dlYlZpZXc+IF9yZWxhdGVkV2ViVmlldzsKKyNpZiBQTEFURk9STShJT1MpCisgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5PiBfY29udGVudFByb3ZpZGVyUmVn
aXN0cnk7CisjZW5kaWYKIH0KIAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgpAQCAtNTAsNiAr
NTQsOSBAQAogICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSBfcHJvY2Vzc1Bvb2wuZ2V0
KCk7CiAgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IF9wcmVmZXJlbmNlcy5nZXQoKTsK
ICAgICBjb25maWd1cmF0aW9uLl9yZWxhdGVkV2ViVmlldyA9IF9yZWxhdGVkV2ViVmlldy5nZXQo
KS5nZXQoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29uZmlndXJhdGlvbi5fY29udGVudFBy
b3ZpZGVyUmVnaXN0cnkgPSBfY29udGVudFByb3ZpZGVyUmVnaXN0cnkuZ2V0KCk7CisjZW5kaWYK
IAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpAQCAtOTQsNiArMTAxLDE4IEBACiAgICAg
X3JlbGF0ZWRXZWJWaWV3ID0gcmVsYXRlZFdlYlZpZXc7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
CistIChXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSAqKV9jb250ZW50UHJvdmlkZXJS
ZWdpc3RyeQoreworICAgIHJldHVybiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnkuZ2V0KCk7Cit9
CisKKy0gKHZvaWQpX3NldENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OihXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeSAqKXJlZ2lzdHJ5Cit7CisgICAgX2NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5ID0gcmVnaXN0cnk7Cit9CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNjg2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGNsYXNzIFdLV2Vi
VmlldzsKK0BjbGFzcyBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeTsKKworQGludGVy
ZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9uICgpCisKKyNpZiBQTEFURk9STShJT1MpCitAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDb250ZW50UHJvdmlkZXJSZWdpc3RyeTopIFdL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5KiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7
CisjZW5kaWYKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCA2ODUxOGEzLi4yMDc1
ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02Miw2ICs2Miw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IC0gKEJPT0wpX3Njcm9sbFRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgb3Jp
Z2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZs
b2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6
OkZsb2F0UmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3Jp
Z2luIGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJs
ZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1T
Y3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9v
bU91dFdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luOworCistICh2b2lkKV9z
ZXRQYWdlSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyOihCT09MKXBhZ2VIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIgbG9hZGVkTUlNRVR5cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZTsKKy0g
KHZvaWQpX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOihjb25zdCBXVEY6OlN0cmluZyYpc3VnZ2VzdGVkRmlsZW5hbWUgZGF0
YTooTlNEYXRhICopZGF0YTsKICNlbmRpZgogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3YjE1NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXIu
aApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBQTEFURk9STShJT1MpCisKK0Bj
bGFzcyBOU0RhdGE7CitAY2xhc3MgVUlTY3JvbGxWaWV3OworQHByb3RvY29sIE5TT2JqZWN0Owor
c3RydWN0IENHU2l6ZTsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIEFQSS4KK0Bwcm90b2Nv
bCBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIgPE5TT2JqZWN0PgorCistICh2b2lkKXdlYl9zZXRD
b250ZW50UHJvdmlkZXJEYXRhOihOU0RhdGEgKilkYXRhOworLSAodm9pZCl3ZWJfc2V0TWluaW11
bVNpemU6KENHU2l6ZSlzaXplOworLSAodm9pZCl3ZWJfc2V0U2Nyb2xsVmlldzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldzsKKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjVmYWZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
PFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaWYgUExB
VEZPUk0oSU9TKQorCisjaW1wb3J0IDxvYmpjL29iamMuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30K
KworQHByb3RvY29sIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlcjsKKworQGludGVyZmFjZSBXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSA6IE5TT2JqZWN0CisKKy0gKHZvaWQpYWRkUGFn
ZTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2U7CistICh2b2lkKXJlbW92ZVBhZ2U6KFdlYktp
dDo6V2ViUGFnZVByb3h5JilwYWdlOworCistICh2b2lkKXJlZ2lzdGVyQ29udGVudFByb3ZpZGVy
OihDbGFzcyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyPiljb250ZW50UHJvdmlkZXIgZm9yTUlN
RVR5cGU6KGNvbnN0IFN0cmluZyYpbWltZVR5cGU7CistIChDbGFzcyA8V0tXZWJWaWV3Q29udGVu
dFByb3ZpZGVyPiljb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTooY29uc3QgU3RyaW5nJiltaW1l
VHlwZTsKKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTJjMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5Lm1tCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworQGludGVyZmFjZSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eSAoKSB7CisgICAgSGFzaE1hcDxTdHJpbmcsIENsYXNzIDxXS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXI+LCBDYXNlRm9sZGluZ0hhc2g+IF9jb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTsKKyAgICBI
YXNoQ291bnRlZFNldDxXZWJQYWdlUHJveHkqPiBfcGFnZXM7Cit9CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeQorCistICh2b2lkKWFkZFBh
Z2U6KFdlYlBhZ2VQcm94eSYpcGFnZQoreworICAgIF9wYWdlcy5hZGQoJnBhZ2UpOworCisgICAg
Zm9yIChhdXRvJiBtaW1lVHlwZSA6IF9jb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZS5rZXlzKCkp
CisgICAgICAgIHBhZ2UuYWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVU
eXBlKTsKK30KKworLSAodm9pZClyZW1vdmVQYWdlOihXZWJQYWdlUHJveHkmKXBhZ2UKK3sKKyAg
ICBBU1NFUlQoX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7CisKKyAgICBfcGFnZXMucmVtb3ZlKCZw
YWdlKTsKK30KKworLSAodm9pZClyZWdpc3RlckNvbnRlbnRQcm92aWRlcjooQ2xhc3MgPFdLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlcj4pY29udGVudFByb3ZpZGVyIGZvck1JTUVUeXBlOihjb25zdCBT
dHJpbmcmKW1pbWVUeXBlCit7CisgICAgX2NvbnRlbnRQcm92aWRlckZvck1JTUVUeXBlLnNldCht
aW1lVHlwZSwgY29udGVudFByb3ZpZGVyKTsKKworICAgIGZvciAoYXV0byYgcGFnZSA6IF9wYWdl
cykKKyAgICAgICAgcGFnZS5rZXktPmFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRl
cihtaW1lVHlwZSk7Cit9CisKKy0gKENsYXNzIDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXI+KWNv
bnRlbnRQcm92aWRlckZvck1JTUVUeXBlOihjb25zdCBTdHJpbmcmKW1pbWVUeXBlCit7CisgICAg
Y29uc3QgYXV0byYgcmVwcmVzZW50YXRpb24gPSBfY29udGVudFByb3ZpZGVyRm9yTUlNRVR5cGUu
ZmluZChtaW1lVHlwZSk7CisKKyAgICBpZiAocmVwcmVzZW50YXRpb24gPT0gX2NvbnRlbnRQcm92
aWRlckZvck1JTUVUeXBlLmVuZCgpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJu
IHJlcHJlc2VudGF0aW9uLT52YWx1ZTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGI5NGQ5MGEuLjg5ZmM0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyKSA9IDA7
CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURp
ZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CkBAIC0yNTYsNiAr
MjU2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFs
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlD
bGllbnQoKSA9IDA7CiAjZW5kaWYKKworICAgIC8vIEN1c3RvbSByZXByZXNlbnRhdGlvbnMuCisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhZTQ0YmI1Li5jNzkyMWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzExLDYgKzMxMSw3IEBA
IFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgLCBtX3NwZWxsRG9jdW1lbnRUYWcoMCkKICAg
ICAsIG1faGFzU3BlbGxEb2N1bWVudFRhZyhmYWxzZSkKICAgICAsIG1fcGVuZGluZ0xlYXJuT3JJ
Z25vcmVXb3JkTWVzc2FnZUNvdW50KDApCisgICAgLCBtX21haW5GcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlcihmYWxzZSkKICAgICAsIG1fZGVsZWdhdGVzU2Nyb2xsaW5nKGZhbHNlKQogICAg
ICwgbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNlKQogICAgICwgbV9tYWlu
RnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSkKQEAgLTIyMzYsNyArMjIzNyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQz
Ml90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJv
Y2VzcygpKTsKQEAgLTIyNTAsNyArMjI1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21t
aXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAK
ICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgbV9wYWdlTG9hZFN0YXRl
LmRpZENvbW1pdExvYWQodHJhbnNhY3Rpb24pOwotICAgICAgICBtX3BhZ2VDbGllbnQuZGlkQ29t
bWl0TG9hZEZvck1haW5GcmFtZSgpOworICAgICAgICBtX3BhZ2VDbGllbnQuZGlkQ29tbWl0TG9h
ZEZvck1haW5GcmFtZShtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIpOwog
ICAgIH0KIAogI2lmIFVTRShBUFBLSVQpCkBAIC0yMjY1LDYgKzIyNjYsMjAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQKIAogICAgIGZyYW1lLT5kaWRDb21taXRMb2FkKG1pbWVUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8pOwogCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAg
IG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyID0gZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXI7CisKKyAgICAgICAgaWYgKG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyKSB7CisgICAgICAgICAgICAvLyBBbHdheXMgYXNzdW1lIHRoYXQgdGhlIG1haW4gZnJh
bWUgaXMgcGlubmVkIGhlcmUsIHNpbmNlIHRoZSBjdXN0b20gcmVwcmVzZW50YXRpb24gdmlldyB3
aWxsIGhhbmRsZQorICAgICAgICAgICAgLy8gYW55IHdoZWVsIGV2ZW50cyBhbmQgZGlzcGF0Y2gg
dGhlbSB0byB0aGUgV0tWaWV3IHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICAgICAgbV9tYWluRnJh
bWVJc1Bpbm5lZFRvTGVmdFNpZGUgPSB0cnVlOworICAgICAgICAgICAgbV9tYWluRnJhbWVJc1Bp
bm5lZFRvUmlnaHRTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRU
b1RvcFNpZGUgPSB0cnVlOworICAgICAgICAgICAgbV9tYWluRnJhbWVJc1Bpbm5lZFRvQm90dG9t
U2lkZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9wYWdlQ2xpZW50LmRpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUobWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyKTsK
KyAgICB9CisKICAgICAvLyBFdmVuIGlmIFdlYlBhZ2UgaGFzIHRoZSBkZWZhdWx0IHBhZ2VTY2Fs
ZUZhY3RvciAoYW5kIHRoZXJlZm9yZSBkb2Vzbid0IHJlc2V0IGl0KSwKICAgICAvLyBXZWJQYWdl
UHJveHkncyBjYWNoZSBvZiB0aGUgdmFsdWUgY2FuIGdldCBvdXQgb2Ygc3luYyAoZS5nLiBpbiB0
aGUgY2FzZSB3aGVyZSBhCiAgICAgLy8gcGx1Z2luIGlzIGhhbmRsaW5nIHBhZ2Ugc2NhbGluZyBp
dHNlbGYpIHNvIHdlIHNob3VsZCByZXNldCBpdCB0byB0aGUgZGVmYXVsdApAQCAtNDIzNyw2ICs0
MjUyLDExIEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2
ZW50cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVl
bEV2ZW50czsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9y
Q3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAgICBtX3BhZ2VDbGll
bnQuZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoc3VnZ2VzdGVk
RmlsZW5hbWUsIGRhdGFSZWZlcmVuY2UpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9w
YWdlSUQpOwpAQCAtNDU0MSw0ICs0NTYxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRodW1i
bmFpbFNjYWxlKGRvdWJsZSBzY2FsZSkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFRodW1ibmFpbFNjYWxlKHNjYWxlKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJ
RCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGU2MzE3YjIuLmJkYTI5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ1MSw2ICs0NTEsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBjb25zdDsKICAgICBib29sIGlzUHJvY2Vzc1N1cHByZXNz
aWJsZSgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBQYXNzUmVmUHRyPFZhbGlkYXRlQ29tbWFuZENh
bGxiYWNrPik7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtOTQ2LDcgKzk0OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdW5yZWFjaGFibGVVUkwsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGRpZENvbW1p
dExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTE1NCw2ICsxMTU2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAg
dm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9j
dXMpOwogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0
U3RhdGUpOwogI2VuZGlmCkBAIC0xMzkyLDYgKzEzOTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNTcGVsbERvY3VtZW50VGFnOwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0xlYXJuT3JJZ25v
cmVXb3JkTWVzc2FnZUNvdW50OwogCisgICAgYm9vbCBtX21haW5GcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlcjsKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgV2ViQ29yZTo6RHJh
Z1Nlc3Npb24gbV9jdXJyZW50RHJhZ1Nlc3Npb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE0NTJiNzUuLjhk
MzRiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMTIxLDcgKzEyMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwg
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFk
aWMKICAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmwsIFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGlj
CiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKLSAg
ICBEaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgbWltZVR5cGUsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIERpZENvbW1pdExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZhaWxMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVu
Y29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKQEAgLTEzNyw2ICsxMzcsOSBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRnJhbWVEaWRCZWNvbWVGcmFtZVNl
dCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCisgICAgIyBDdXN0b20gcmVwcmVzZW50
YXRpb25zCisgICAgRGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIo
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKwogICAg
ICMgRm9ybXMgbWVzc2FnZXMKICAgICBXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBzb3VyY2VGcmFtZUlELCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4g
dGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZDliNGRkNC4u
NTZkZTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaApAQCAtMzIsNyArMzIsOCBAQAogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1AY2xhc3MgV0tDb250ZW50
VmlldzsKK09CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKK09CSkNfQ0xBU1MgV0tXZWJWaWV3Owog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKQEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgUGFnZUNs
aWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudAogI2VuZGlmCiAgICAgewogcHVibGljOgotICAg
IGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBsKFdLQ29udGVudFZpZXcgKik7CisgICAgZXhwbGljaXQg
UGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAqLCBXS1dlYlZpZXcgKik7CiAgICAgdmlydHVh
bCB+UGFnZUNsaWVudEltcGwoKTsKICAgICAKIHByaXZhdGU6CkBAIC02Myw3ICs2NCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBXZWJTZWN1cml0eU9yaWdpbiYs
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCB1c2VDdXN0b21Db250ZW50UHJvdmlkZXIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwpAQCAtMTI5LDcgKzEzMCwxMCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmluYWxGcmFt
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKKwogICAgIFdLQ29udGVu
dFZpZXcgKm1fY29udGVudFZpZXc7CisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDY2NTM1NjYuLmZkYTdhOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDEs
NiArNDEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
KwogQGludGVyZmFjZSBVSVZpZXcgKElQSSkKIC0gKFVJU2Nyb2xsVmlldyAqKV9zY3JvbGxlcjsK
IEBlbmQKQEAgLTQ5LDggKzUxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tDb250ZW50
VmlldyAqdmlldykKLSAgICA6IG1fY29udGVudFZpZXcodmlldykKK1BhZ2VDbGllbnRJbXBsOjpQ
YWdlQ2xpZW50SW1wbChXS0NvbnRlbnRWaWV3ICpjb250ZW50VmlldywgV0tXZWJWaWV3ICp3ZWJW
aWV3KQorICAgIDogbV9jb250ZW50Vmlldyhjb250ZW50VmlldykKKyAgICAsIG1fd2ViVmlldyh3
ZWJWaWV3KQogewogfQogCkBAIC0xNDYsOCArMTQ5LDkgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5
JgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRM
b2FkRm9yTWFpbkZyYW1lKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JN
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250ZW50UHJv
dmlkZXIpCiB7CisgICAgW21fd2ViVmlldyBfc2V0UGFnZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
cjp1c2VDdXN0b21Db250ZW50UHJvdmlkZXIgbG9hZGVkTUlNRVR5cGU6bWltZVR5cGVdOwogICAg
IFttX2NvbnRlbnRWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIH0KIApAQCAtNDAy
LDYgKzQwNiwxMiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNv
bnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGFS
ZWZlcmVuY2UuZGF0YSgpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKV0pOworICAgIFttX3dl
YlZpZXcgX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lIGRhdGE6ZGF0YS5nZXQoKV07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDBlYzg1Yzku
LmQ1ZTlkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KQEAgLTc2LDcgKzc2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogICAgIElu
aXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KHNlbGYpOworICAgIF9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAKICAgICBfcGFnZSA9IGNvbnRleHQu
Y3JlYXRlV2ViUGFnZSgqX3BhZ2VDbGllbnQsIHN0ZDo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlv
bikpOwogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDcyMWFmNTYuLmFhYjE4MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTc5
LDcgKzc5LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNz
KCk7CiAgICAgdmlydHVhbCB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYgb2xkVG9vbFRpcCwg
Y29uc3QgU3RyaW5nJiBuZXdUb29sVGlwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9h
ZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVu
dFByb3ZpZGVyKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0Rh
dGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpp
bmRleCAzODc5YmU2Li44NjYyYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI4NSw3ICsyODUsMTEgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25zdCBTdHJp
bmcmIG5ld1QKICAgICBbbV93a1ZpZXcgX3Rvb2xUaXBDaGFuZ2VkRnJvbTpuc1N0cmluZ0Zyb21X
ZWJDb3JlU3RyaW5nKG9sZFRvb2xUaXApIHRvOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcobmV3
VG9vbFRpcCldOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFp
bkZyYW1lKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250ZW50UHJvdmlkZXIpCit7
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
Q29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3MzE3YTcuLjRh
MWU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTQ5OCw2ICs0OTgsOCBAQAogCQkyRDZCMzcxQzE4QTk2N0FEMDA0MkFFODAg
LyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5t
bSAqLzsgfTsKIAkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDEx
NzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLzsgfTsKIAkJMkQ2Q0Qx
MUExODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMTgxODkwNThBNTAwRTVBNEEw
IC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovOyB9OworCQkyRDdBQUZEMzE4Qzg2NDA2MDBBN0FD
RDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdBQUZEMjE4Qzg2NDA2MDBBN0FDRDQgLyogV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyLmggKi87IH07CisJCTJEN0FBRkQ2MThDOTU2QUYwMEE3QUNENCAv
KiBXS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0FBRkQ1MThDOTU2QUYwMEE3QUNENCAvKiBXS1dl
YlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJMkQ4MTlCOUUxODYyN0VFOTAw
MUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4MTlCOTkxODYyNzVCMzAwMUYwM0Qx
IC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwICovOyB9OwogCQkyRDgxOUJBMTE4
NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDgxOUI5RjE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTJEODE5QkEyMTg2MjgwMEUwMDFGMDNEMSAvKiBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODE5QkEwMTg2MjgwMEUwMDFGMDNEMSAvKiBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTUyOSw2ICs1
MzEsOCBAQAogCQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovOyB9
OwogCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRB
RjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJMkRBRjA2RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREFGMDZENTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tbSAqLzsgfTsKKwkJMkRDNkQ5QzMxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyUmVnaXN0cnkuaCAqLzsgfTsKKwkJMkRDNkQ5QzQxOEM0NEE2MTAwNDNCQUQ0IC8qIFdL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tICovOyB9OwogCQkyRERFMEFGQTE4Mjk4Q0M5
MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMEFGODE4Mjk4Q0M5MDBGOTdF
QUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi87IH07CiAJCTJEREUwQUZC
MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMEFGOTE4Mjk4
Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovOyB9Owog
CQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0yMjU1LDYgKzIyNTksOCBA
QAogCQkyRDZDRDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3U25hcHNob3RTdG9yZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3MEFCMTMxOEExRDUxQTAwMDI2RDZF
IC8qIEluZm8taU9TLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiSW5mby1pT1MucGxpc3QiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcwQUIxNDE4QTFENTdDMDAwMjZENkUgLyogSW5m
by1pT1MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9ICJJbmZvLWlPUy5wbGlzdCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEN0FB
RkQ1MThDOTU2QUYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJWaWV3Q29uZmlndXJhdGlvbklu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODE5Qjk5MTg2Mjc1QjMw
MDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgxOUI5QTE4NjI3NUIzMDAxRjAzRDEg
LyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEODE5QjlCMTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjkwLDEwICsyMjk2LDEyIEBACiAJCTJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VC
MSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9T
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFGMDZEODE4QkQyM0JB
MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1Nt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
UmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRERTBB
RjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFNjk0M0Ix
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4
MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNDQsNiArNDE1Miw5IEBACiAJ
CTFBQkMzREYyMTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdL
V2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLAorCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFE
NCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAorCQkJCTJEQzZEOUMy
MThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAq
LywKIAkJCQkwRjBDMzY1OTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5o
ICovLAogCQkJCTFBNDIyRjhEMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50LmggKi8s
CiAJCQkJMUE0MjJGOEMxOEIyOUM2NDAwRDhDRDk2IC8qIEhpc3RvcnlDbGllbnQubW0gKi8sCkBA
IC00NTQ3LDYgKzQ1NTgsNyBAQAogCQkJCTFBREY1OTE5MTg5MDUyOEUwMDQzQzE0NSAvKiBXS1dl
YlZpZXdDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMUFERjU5MTgxODkwNTI4RTAwNDNDMTQ1IC8q
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJMUFDMTQxNTAxOEFDNDdFRTAwNkM2
MDJDIC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggKi8sCisJCQkJMkQ3QUFGRDUx
OEM5NTZBRjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovLAog
CQkJCTFBNjZCRjhFMThBMDUyRUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRlcm5hbC5oICovLAog
CQkJCTI2RjlBODNBMThBMzQ2M0YwMEFFQjg4QSAvKiBXS1dlYlZpZXdQcml2YXRlLmggKi8sCiAJ
CQkpOwpAQCAtNjU1Myw2ICs2NTY1LDcgQEAKIAkJCQlCQzRCRUVBQjEyMEEwQTVGMDBGQkEwQzcg
LyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzhFMUE0
RTE4MjA4RDcwMDAzMTAwN0EgLyogV0tOU1VSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExQjBF
QjgxOEE0MjRDRDAwMzg0ODFBIC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJEN0FBRkQzMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250
ZW50UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0QjY5
NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNEUxMEExMjBCOTA1RTAwODI2QzBDIC8q
IEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc1OSw2
ICs2NzcyLDcgQEAKIAkJCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU1NDE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkyREM2RDlDMzE4QzQ0QTYxMDA0
M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MjkyMTQ3MzEyQkUwMDZD
NjgxQSAvKiBXZWJDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFGRUMx
RDE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKQEAgLTY3OTMsNiArNjgwNyw3IEBACiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8q
IEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAw
NUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
RjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCTJEN0FBRkQ2MThDOTU2QUYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAvKiBX
S1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1NzhCODMxMjA5
RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkREMTJB
REM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
ODAzMiw2ICs4MDQ3LDcgQEAKIAkJCQk1MUNCQkEwRjE2NTIxOUI2MDA1QkU4RkQgLyogTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4MjlEQTUx
NjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEyQzA2OTAxNjM5MEU2OTAwQUJCOTExIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyREM2RDlDNDE4QzQ0QTYx
MDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNTUxNDg5OTgyRTAwODEwRDcxIC8q
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMx
MzEyNjFFMTQ4RkY4MkMwMEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IGMxZTM3ZDcuLjEwMWNiNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC0x
MDIsNiArMTAyLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgcmV0dXJuIFt3cmFw
cGVyKCpBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUoX2ZyYW1lLT5mcmFtZUlEKCkpLmxlYWtSZWYo
KSkgYXV0b3JlbGVhc2VdOwogfQogCistIChCT09MKV9oYXNDdXN0b21Db250ZW50UHJvdmlkZXIK
K3sKKyAgICBpZiAoIV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIF9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIoKTsKK30KKwogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVu
dGF0aW9uCiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oCmluZGV4IDEw
YjA5ZjAuLjVjMGU5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw4IEBACiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyICpfYnJvd3NlckNvbnRleHRDb250cm9sbGVyOwogCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2hhc0N1c3RvbUNvbnRlbnRQcm92aWRlcjsKKwogQGVu
ZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggZWNjNzcxZS4uNjkzNjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50KCkKICAgICA6IG1fZnJhbWUoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW5WaWV3KGZhbHNlKQogICAgICwgbV9kaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uQWxy
ZWFkeShmYWxzZSkKKyAgICAsIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIoZmFsc2Up
CiAgICAgLCBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUoZmFsc2UpCiB7CiB9CkBAIC0xMDksNiAr
MTEwLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVk
KCkKICAgICBtX2ZyYW1lLT5kZXJlZigpOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpoYXNIVE1MVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2ZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyOworfQorCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJWaWV3
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpOwpAQCAtNDQ1LDggKzQ1MSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiAK
ICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KIAotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCks
IENlcnRpZmljYXRlSW5mbyhkb2N1bWVudExvYWRlci5yZXNwb25zZSgpKSwgSW5qZWN0ZWRCdW5k
bGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7Ci0KKyAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1l
LT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRl
ci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpLCBDZXJ0aWZpY2F0ZUlu
Zm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9m
cmFtZSk7CiB9CiAKQEAgLTgyNiw3ICs4MzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkRmFp
bChlcnJvcik7Ci0gICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICBtX3BsdWdpblZpZXcgPSBudWxs
cHRyOwogICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gZmFsc2U7CiB9CiAKQEAg
LTg1Miw2ICs4NTcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0
ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCiB7CisgICAgLy8gSWYgd2UncmUgbG9hZGluZyBhIGN1c3RvbSByZXByZXNlbnRhdGlvbiwg
d2UgZG9uJ3Qgd2FudCB0byBoYW5kIG9mZiB0aGUgZGF0YSB0byBXZWJDb3JlLgorICAgIGlmICht
X2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0
aCk7CiAKQEAgLTg3OCwyMiArODg3LDMzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciog
bG9hZGVyKQogewotICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBJZiB3ZSBqdXN0IHJlY2VpdmVkIGFuIGVtcHR5IHJlc3BvbnNlIHdpdGhvdXQgYW55IGRh
dGEsIHdlIHdvbid0IGhhdmUgc2VudCBhIHJlc3BvbnNlIHRvIHRoZSBwbHVnLWluIHZpZXcuCi0g
ICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRoaXMgYmVmb3JlIGNhbGxpbmcgbWFudWFsTG9hZERpZEZp
bmlzaExvYWRpbmcuCi0gICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldykgewot
ICAgICAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVy
LT5yZXNwb25zZSgpKTsKKyAgICBpZiAoIW1fcGx1Z2luVmlldykgeworICAgICAgICBpZiAobV9m
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcikgeworICAgICAgICAgICAgV2ViUGFnZSogd2Vi
UGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgICAgIGlmICghd2ViUGFnZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHRoZSBhYm92
ZSBjYWxsIG51bGxpbmcgb3V0IHRoZSBwbHVnLWluIChieSB0cnlpbmcgdG8gY2FuY2VsIHRoZSBs
b2FkIGZvciBleGFtcGxlKS4KLSAgICAgICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiAwKSwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmls
ZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOworICAgICAgICB9CiAgICAgfQogCi0gICAgbV9wbHVn
aW5WaWV3LT5tYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOwotICAgIG1fcGx1Z2luVmlldyA9
IDA7Ci0gICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcgPSBmYWxzZTsKKyAgICBpZiAo
bV9wbHVnaW5WaWV3KSB7CisgICAgICAgIC8vIElmIHdlIGp1c3QgcmVjZWl2ZWQgYW4gZW1wdHkg
cmVzcG9uc2Ugd2l0aG91dCBhbnkgZGF0YSwgd2Ugd29uJ3QgaGF2ZSBzZW50IGEgcmVzcG9uc2Ug
dG8gdGhlIHBsdWctaW4gdmlldy4KKyAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRoaXMgYmVm
b3JlIGNhbGxpbmcgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcuCisgICAgICAgIGlmICghbV9o
YXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcpIHsKKyAgICAgICAgICAgIG1fcGx1Z2luVmlldy0+
bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPnJlc3BvbnNlKCkpOworCisgICAg
ICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgdGhlIGFib3ZlIGNhbGwgbnVsbGluZyBvdXQgdGhl
IHBsdWctaW4gKGJ5IHRyeWluZyB0byBjYW5jZWwgdGhlIGxvYWQgZm9yIGV4YW1wbGUpLgorICAg
ICAgICAgICAgaWYgKCFtX3BsdWdpblZpZXcpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkRmluaXNoTG9hZGlu
ZygpOworICAgICAgICBtX3BsdWdpblZpZXcgPSBudWxscHRyOworICAgICAgICBtX2hhc1NlbnRS
ZXNwb25zZVRvUGx1Z2luVmlldyA9IGZhbHNlOworICAgIH0KIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCkBAIC0xMTY2LDYgKzExODYsMTIgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQogeworICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYm9vbCBpc01haW5GcmFtZSA9IHdlYlBhZ2Ut
Pm1haW5XZWJGcmFtZSgpID09IG1fZnJhbWU7CisKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpOworICAgIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIgPSBp
c01haW5GcmFtZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21Db250ZW50UHJvdmlkZXJGb3JS
ZXNwb25zZShyZXNwb25zZSk7CisgICAgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlID0gdHJ1ZTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCkBAIC0xMTg1LDYgKzEyMTEsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICAgICAgZml4ZWRWaXNpYmxl
Q29udGVudFJlY3QgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5maXhlZFZpc2libGVD
b250ZW50UmVjdCgpOwogI2VuZGlmCiAKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5y
ZXNwb25zZSgpOworICAgIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIgPSBpc01haW5G
cmFtZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21Db250ZW50UHJvdmlkZXJGb3JSZXNwb25z
ZShyZXNwb25zZSk7CiAgICAgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlID0gZmFsc2U7CiAKICAg
ICBTY3JvbGxiYXJNb2RlIGRlZmF1bHRTY3JvbGxiYXJNb2RlID0gc2hvdWxkSGlkZVNjcm9sbGJh
cnMgPyBTY3JvbGxiYXJBbHdheXNPZmYgOiBTY3JvbGxiYXJBdXRvOwpAQCAtMTI0NCw2ICsxMjcy
LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQmVjb21lRnJhbWVz
ZXQoYm9vbCB2YWx1ZSkKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkZyYW1lRGlkQmVjb21lRnJhbWVTZXQobV9mcmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZSkpOwogfQog
Citib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAoreworICAg
IC8vIFdlIGNhbm5vdCBjYWNoZSBmcmFtZXMgdGhhdCBoYXZlIGN1c3RvbSByZXByZXNlbnRhdGlv
bnMgYmVjYXVzZSB0aGV5IGFyZQorICAgIC8vIHJlbmRlcmVkIGluIHRoZSBVSVByb2Nlc3MuCisg
ICAgcmV0dXJuICFtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyOworfQorCiB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9j
dW1lbnRMb2FkZXIgKmRvY3VtZW50TG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIG1fZnJhbWUtPmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVxdWVzdCwg
cmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJhMWU0OTYuLjU5
MzY2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQxLDEwICs0MSwxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJGcmFtZShXZWJGcmFtZSogd2ViRnJhbWUpIHsgbV9m
cmFtZSA9IHdlYkZyYW1lOyB9CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZTsgfQogCisgICAgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXI7IH0KKwogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBvdmVycmlkZTsKQEAgLTE3NSw5ICsxNzcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIAorCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lk
dGgsIGludCBtYXJnaW5IZWlnaHQpIG92ZXJyaWRlOwogICAgIApAQCAtMjMyLDYgKzIzNCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29s
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uQWxyZWFkeTsKKyAgICBib29sIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJv
dmlkZXI7CiAgICAgYm9vbCBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNDNjZjU4Mi4u
OGVhYjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzA3NSw2ICszMDc1LDIyIEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24o
KQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViUGFnZTo6bWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyKCkgY29uc3QKK3sKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCkpIHsK
KyAgICAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9X
ZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpOworICAgICAgICBB
U1NFUlQod2ViRnJhbWVMb2FkZXJDbGllbnQpOworICAgICAgICByZXR1cm4gd2ViRnJhbWVMb2Fk
ZXJDbGllbnQtPmZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyKCk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlBhZ2U6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbUNv
bnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIG1fbWltZVR5cGVz
V2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMuYWRkKG1pbWVUeXBlKTsKK30KKwogdm9pZCBXZWJQ
YWdlOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCkKIHsKICAgICBGcmFtZSYg
ZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwpAQCAtMzgxNyw2ICszODMzLDE1IEBAIGJvb2wg
V2ViUGFnZTo6Y2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAjZW5kaWYKIH0KIAorYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VDdXN0b21Db250
ZW50UHJvdmlkZXJGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICBpZiAoIW1fbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMuY29udGFp
bnMocmVzcG9uc2UubWltZVR5cGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IElmIGEgcGx1Zy1pbiBleGlzdHMgdGhhdCBjbGFpbXMgdG8gc3VwcG9ydCB0aGlzIHJlc3BvbnNl
LCBpdCBzaG91bGQgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGN1c3RvbSBjb250ZW50IHByb3Zp
ZGVyLgorICAgIHJldHVybiAhY2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpOworfQor
CiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZvckVkaXRpbmco
V2ViUGFnZSogcGFnZSkKIHsKQEAgLTM5NjIsNiArMzk4Nyw5IEBAIGJvb2wgV2ViUGFnZTo6Y2Fu
U2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CiAgICAgaWYgKE1JTUVU
eXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZShNSU1FVHlwZSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCisgICAgaWYgKG1fbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMuY29u
dGFpbnMoTUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGNvbnN0IFBsdWdp
bkRhdGEmIHBsdWdpbkRhdGEgPSBtX3BhZ2UtPnBsdWdpbkRhdGEoKTsKICAgICBpZiAocGx1Z2lu
RGF0YS5zdXBwb3J0c01pbWVUeXBlKE1JTUVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAm
JiBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93
UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUx
ZTcwNzMuLmU4YWY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNjI1LDYgKzYyNSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlTWFp
bkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwogCisgICAgYm9vbCBtYWluRnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIoKSBjb25zdDsKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3Rv
bUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIHZvaWQgbWFp
bkZyYW1lRGlkTGF5b3V0KCk7CiAKICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOyB9
CkBAIC02NzksNiArNjgyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hh
bmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93SGFuZGxlOyB9CiAjZW5kaWYKIAorICAgIGJv
b2wgc2hvdWxkVXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyRm9yUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgY2FuUGx1Z2luSGFuZGxlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwogCiAgICAgYm9vbCBh
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZDsgfQpAQCAtMTEwNyw2ICsx
MTExLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JD
bGllbnQ7CiAKKyAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVUeXBl
c1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dy
b3VuZENvbG9yOwogCiAgICAgSGFzaFNldDx1bnNpZ25lZD4gbV9hY3RpdmVSZW5kZXJpbmdTdXBw
cmVzc2lvblRva2VuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMjY4ZTJjZC4uNjBhNTU1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTE4Myw2ICsxODMsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBIaWRlRmlu
ZFVJKCkKICAgICBDb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCisgICAgCisgICAgQWRkTUlNRVR5cGVX
aXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKFN0cmluZyBtaW1lVHlwZSkKIAogICAgICMgRHJhZyBh
bmQgZHJvcC4KICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226104</attachid>
            <date>2014-03-07 02:55:41 -0800</date>
            <delta_ts>2014-03-07 17:02:12 -0800</delta_ts>
            <desc>fix the mac build</desc>
            <filename>customrep.diff</filename>
            <type>text/plain</type>
            <size>64650</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhY2FhMTIyLi44ODFkN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3
IEBACisyMDE0LTAzLTA2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFtXZWJLaXQyXVtpT1NdIE1haW4tZnJhbWUgY3VzdG9tIGNvbnRlbnQgcHJvdmlk
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk4
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1p
bnRyb2R1Y2UgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXJzIHRvIFdlYktpdDIgKHJlbW92ZWQgaW4g
cjE1Mjg0MSksIGJ1dAorICAgICAgICBmb3IgaU9TIHRoaXMgdGltZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgaW5p
dFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICBTZW5kIHRoZSBpbml0aWFsIE1J
TUUgdHlwZXMgdGhhdCBoYXZlIGN1c3RvbSBjb250ZW50IHByb3ZpZGVycyB0byB0aGUgV2ViUHJv
Y2Vzcy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgZGVhbGxvY10pOgorICAgICAgICBVbnJlZ2lz
dGVyIG91ciBwYWdlIGZyb20gdGhlIGNvbnRlbnQgcHJvdmlkZXIgcmVnaXN0cnkuCisgICAgICAg
IAorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2VIYXNDdXN0b21Db250ZW50UHJvdmlkZXI6
bG9hZGVkTUlNRVR5cGU6XSk6CisgICAgICAgIEluc3RhbGwvdW5pbnN0YWxsIHRoZSBjdXN0b20g
Y29udGVudCBwcm92aWRlci4gQ3JlYXRlIGEgdmlldywgaWYgbmVlZGVkLAorICAgICAgICBiYXNl
ZCBvbiB0aGUgY2xhc3MgdGhhdCB0aGUgcmVnaXN0cnkgaGFzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
Z2l2ZW4gTUlNRSB0eXBlLgorICAgICAgICBXZSB1bnBhcmVudCB0aGUgV0tDb250ZW50VmlldyB3
aGlsZSB0aGUgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXIgaXMgYWN0aXZlLAorICAgICAgICBhbmQg
cmUtdXNlIHRoZSBleGlzdGluZyBXS1Njcm9sbFZpZXcgdG8gY29udGFpbiB0aGUgY3VzdG9tIGNv
bnRlbnQgcHJvdmlkZXIuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpkYXRhUmVm
ZXJlbmNlOl0pOgorICAgICAgICBGb3J3YXJkIGxvYWRlZCBkYXRhIG9uIHRvIHRoZSBjdXN0b20g
Y29udGVudCBwcm92aWRlciBmb3IgZGlzcGxheS4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX2Rp
ZENvbW1pdExheWVyVHJlZTpXZWJLaXQ6Ol0pOgorICAgICAgICBBc3NlcnQgdGhhdCB3ZSBhcmVu
J3QgZ2V0dGluZyBsYXllciB0cmVlIGNvbW1pdHMgd2hpbGUgdXNpbmcgYSBjdXN0b20gY29udGVu
dCBwcm92aWRlci4KKworICAgICAgICAoLVtXS1dlYlZpZXcgdmlld0Zvclpvb21pbmdJblNjcm9s
bFZpZXc6XSk6CisgICAgICAgIElmIHdlJ3JlIHVzaW5nIGEgY3VzdG9tIGNvbnRlbnQgcHJvdmlk
ZXIsIGl0cyB2aWV3IHNob3VsZCBiZSB1c2VkIGZvciB6b29taW5nCisgICAgICAgIGluc3RlYWQg
b2YgdGhlICh1bnBhcmVudGVkKSB3ZWIgY29udGVudCB2aWV3LgorCisgICAgICAgICgtW1dLV2Vi
VmlldyBoYXNDb250ZW50Vmlld10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2Nyb2xsVmlld1dp
bGxCZWdpblpvb21pbmc6d2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxW
aWV3V2lsbEJlZ2luRHJhZ2dpbmc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRmluaXNo
U2Nyb2xsaW5nXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0c10pOgorICAgICAgICBJZiB3ZSBkbyBub3QgaGF2ZSBhIHBhcmVudGVkIFdLQ29udGVudFZp
ZXcgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBjdXN0b20KKyAgICAgICAgY29udGVudCBwcm92aWRl
ciwgd2Ugc2hvdWxkIG5vdCBmb3J3YXJkIHNjcm9sbCB2aWV3IHJlbGF0ZWQgY2hhbmdlcyB0byBp
dC4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisgICAg
ICAgIFVwZGF0ZSB0aGUgbWluaW11bSBzaXplIG9mIHRoZSBjdXN0b20gY29udGVudCBwcm92aWRl
ciBpZiB0aGUgd2ViIHZpZXcgc2l6ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfc2V0Q29udGVudFByb3ZpZGVyUmVnaXN0cnk6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaDogQWRk
ZWQuCisgICAgICAgIEFkZCBhbiBpbnRlcm5hbCBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHByb3Bl
cnR5LCB0aGUgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICBB
IG1pbmltYWwgcHJvdG9jb2wgZm9yIGluZm9ybWluZyBjdXN0b20gY29udGVudCBwcm92aWRlcnMg
b2YgY2hhbmdlcyB0bworICAgICAgICB0aGUgc2l6ZSBvZiB0aGUgdmlldywgdGhlIHJlcHJlc2Vu
dGVkIGRhdGEsIGFuZCB0aGUgb3duaW5nIHNjcm9sbCB2aWV3LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5t
bTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IGFk
ZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IHJl
bW92ZVBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
IHJlZ2lzdGVyQ29udGVudFByb3ZpZGVyOmZvck1JTUVUeXBlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSBjb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgbWltZVR5cGVz
V2l0aENvbnRlbnRQcm92aWRlcnNdKToKKyAgICAgICAgTmV3IGNsYXNzLCBrZWVwcyB0cmFjayBv
ZiBhIG1hcHBpbmcgZnJvbSBNSU1FIHR5cGVzIHRvIFVJVmlld3MgdGhhdAorICAgICAgICBjb25m
b3JtIHRvIHRoZSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIgcHJvdG9jb2wuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRpbmdE
YXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAgQWRkIHBhcmFtZXRlcnMgdG8g
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSwgaW5kaWNhdGluZyBpZiB3ZSBzaG91bGQgdXNlCisg
ICAgICAgIGEgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXIgdG8gZGlzcGxheSB0aGUgbWFpbiBmcmFt
ZSwgYW5kIHdoYXQgTUlNRSB0eXBlCisgICAgICAgIHdhcyBsb2FkZWQgaW4gc2FpZCBmcmFtZSwg
YW5kIGFkZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlci4KKyAg
ICAgICAgT24gaU9TLCBmb3J3YXJkIHRoZXNlIHRvIHRoZSBXS1dlYlZpZXcuCisgICAgICAgIEFs
c28sIGdpdmUgUGFnZUNsaWVudEltcGxJT1MgYSByZWZlcmVuY2UgdG8gdGhlIFdLV2ViVmlldy4K
KyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dDpXZWJLaXQ6OmNvbmZp
Z3VyYXRpb246V2ViS2l0Ojp3ZWJWaWV3Ol0pOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIF9oYXNDdXN0b21Db250ZW50UHJvdmlkZXJdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZVByaXZhdGUuaDoKKyAgICAgICAgRXhwb3NlIHdoZXRoZXIgb3Igbm90IGEgZ2l2
ZW4gZnJhbWUgaGFzIGEgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXIgdG8gdGhlIHBsdWctaW4uCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hU
TUxWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKToKKyAgICAgICAgUmVzdG9yZSBXZWJGcmFtZUxvYWRlckNsaWVudCBjdXN0
b20gcmVwcmVzZW50YXRpb24gY29kZSwgd2hpY2ggZW5zdXJlcworICAgICAgICB0aGF0IGRhdGEg
aXMgcm91dGVkIGNvcnJlY3RseSAodG8gdGhlIFVJIHByb2Nlc3MsIGFuZCBub3QgdG8gV2ViQ29y
ZSkgYW5kCisgICAgICAgIHRoYXQgd2UgZG9uJ3QgdHJ5IHRvIHVzZSB0aGUgcGFnZSBjYWNoZSBm
b3IgZnJhbWVzIHdpdGggY29udGVudCBwcm92aWRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFk
ZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZFVzZUN1c3RvbUNvbnRlbnRQcm92aWRlckZvclJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBLZWVwIGEgbGlzdCBvZiBNSU1FIHR5cGVzIHdoaWNo
IGNhbiBiZSBkaXNwbGF5ZWQgdmlhIGN1c3RvbSBjb250ZW50IHByb3ZpZGVycworICAgICAgICBp
biBXZWJQYWdlLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBkb3duIGZyb20gdGhlIHJlZ2lzdHJ5IGFz
IG5ldyBwcm92aWRlcnMKKyAgICAgICAgYXJlIGFkZGVkLiBQbHVnLWlucyBzdGlsbCB0YWtlIHBy
ZWNlbmRlbmNlIG92ZXIgY3VzdG9tIGNvbnRlbnQgcHJvdmlkZXJzLgorCiAyMDE0LTAzLTAzICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtD
TWFrZV0gR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIERPTSBiaW5kaW5ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxM2Jj
MTg2Li5iOWRhZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtNDUsNyArNDUsOCBAQAogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLVUlEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXS1Zpc2l0ZWRMaW5r
UHJvdmlkZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW1w
b3J0ICJXZWJDb250ZXh0LmgiCkBAIC01Nyw2ICs1OCw3IEBACiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVBlcmlwaGVyYWxIb3N0X1ByaXZhdGUu
aD4KIAogQGludGVyZmFjZSBVSVNjcm9sbFZpZXcgKFVJU2Nyb2xsVmlld0ludGVybmFsKQpAQCAt
OTYsNiArOTgsOCBAQAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgQk9PTCBfYWxsb3dzQmFja0Zvcndh
cmROYXZpZ2F0aW9uR2VzdHVyZXM7CisKKyAgICBSZXRhaW5QdHI8VUlWaWV3IDxXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXI+PiBfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldzsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OwpAQCAtMTMyLDYg
KzEzNiwxMSBAQAogICAgIGlmICghW19jb25maWd1cmF0aW9uIHZpc2l0ZWRMaW5rUHJvdmlkZXJd
KQogICAgICAgICBbX2NvbmZpZ3VyYXRpb24gc2V0VmlzaXRlZExpbmtQcm92aWRlcjphZG9wdE5T
KFtbV0tWaXNpdGVkTGlua1Byb3ZpZGVyIGFsbG9jXSBpbml0XSkuZ2V0KCldOwogCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIGlmICghW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdp
c3RyeV0pCisgICAgICAgIFtfY29uZmlndXJhdGlvbiBfc2V0Q29udGVudFByb3ZpZGVyUmVnaXN0
cnk6YWRvcHROUyhbW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IGFsbG9jXSBpbml0
XSkuZ2V0KCldOworI2VuZGlmCisKICAgICBDR1JlY3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CiAK
ICAgICBXZWJLaXQ6OldlYkNvbnRleHQmIGNvbnRleHQgPSAqW19jb25maWd1cmF0aW9uIHByb2Nl
c3NQb29sXS0+X2NvbnRleHQ7CkBAIC0xNjMsNiArMTcyLDggQEAKICAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9rZXlib2FyZERpZENoYW5nZUZyYW1lOikg
bmFtZTpVSUtleWJvYXJkRGlkQ2hhbmdlRnJhbWVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmRX
aWxsU2hvdzopIG5hbWU6VUlLZXlib2FyZFdpbGxTaG93Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxd
OwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJv
YXJkV2lsbEhpZGU6KSBuYW1lOlVJS2V5Ym9hcmRXaWxsSGlkZU5vdGlmaWNhdGlvbiBvYmplY3Q6
bmlsXTsKKworICAgIFtbX2NvbmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5XSBh
ZGRQYWdlOipfcGFnZV07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4NCw2ICsx
OTUsNyBAQAogewogICAgIFtfcmVtb3RlT2JqZWN0UmVnaXN0cnkgX2ludmFsaWRhdGVdOwogI2lm
IFBMQVRGT1JNKElPUykKKyAgICBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdp
c3RyeV0gcmVtb3ZlUGFnZToqX3BhZ2VdOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAjZW5kaWYKIApAQCAtMzIxLDYgKzMz
MywzNSBAQAogICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJdOwogfQogCistICh2b2lkKV9zZXRQYWdlSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyOihCT09M
KXBhZ2VIYXNDdXN0b21Db250ZW50UHJvdmlkZXIgbG9hZGVkTUlNRVR5cGU6KGNvbnN0IFdURjo6
U3RyaW5nJiltaW1lVHlwZQoreworICAgIGlmIChwYWdlSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
KSB7CisgICAgICAgIFtfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKKworICAgICAgICBDbGFzcyByZXByZXNlbnRhdGlvbkNsYXNzID0gW1tfY29uZmlndXJh
dGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIGNvbnRlbnRQcm92aWRlckZvck1JTUVUeXBl
Om1pbWVUeXBlXTsKKyAgICAgICAgQVNTRVJUKHJlcHJlc2VudGF0aW9uQ2xhc3MpOworICAgICAg
ICBfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldyA9IGFkb3B0TlMoW1tyZXByZXNlbnRhdGlvbkNs
YXNzIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKKworICAgICAgICBbX2NvbnRl
bnRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBbX3Njcm9sbFZpZXcgYWRkU3Vi
dmlldzpfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldy5nZXQoKV07CisKKyAgICAgICAgW19jdXN0
b21Db250ZW50UHJvdmlkZXJWaWV3IHdlYl9zZXRNaW5pbXVtU2l6ZTpzZWxmLmJvdW5kcy5zaXpl
XTsKKyAgICAgICAgW19jdXN0b21Db250ZW50UHJvdmlkZXJWaWV3IHdlYl9zZXRTY3JvbGxWaWV3
Ol9zY3JvbGxWaWV3LmdldCgpXTsKKyAgICB9IGVsc2UgaWYgKF9jdXN0b21Db250ZW50UHJvdmlk
ZXJWaWV3KSB7CisgICAgICAgIFtfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKyAgICAgICAgX2N1c3RvbUNvbnRlbnRQcm92aWRlclZpZXcgPSBudWxscHRy
OworCisgICAgICAgIFtfc2Nyb2xsVmlldyBhZGRTdWJ2aWV3Ol9jb250ZW50Vmlldy5nZXQoKV07
CisgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50U2l6ZTpbX2NvbnRlbnRWaWV3IGZyYW1l
XS5zaXplXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tQ29udGVudFByb3ZpZGVyV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihjb25zdCBTdHJpbmcmKXN1
Z2dlc3RlZEZpbGVuYW1lIGRhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBBU1NFUlQoX2N1c3Rv
bUNvbnRlbnRQcm92aWRlclZpZXcpOworICAgIFtfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldyB3
ZWJfc2V0Q29udGVudFByb3ZpZGVyRGF0YTpkYXRhXTsKK30KKwogLSAodm9pZClfZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZQogewogICAgIF9pc1dhaXRpbmdGb3JOZXdMYXllclRyZWVBZnRlckRp
ZENvbW1pdExvYWQgPSBZRVM7CkBAIC0zMjgsNiArMzY5LDggQEAKIAogLSAodm9pZClfZGlkQ29t
bWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJils
YXllclRyZWVUcmFuc2FjdGlvbgogeworICAgIEFTU0VSVCghX2N1c3RvbUNvbnRlbnRQcm92aWRl
clZpZXcpOworCiAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRTaXplOltfY29udGVudFZpZXcg
ZnJhbWVdLnNpemVdOwogICAgIFtfc2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOmxheWVy
VHJlZVRyYW5zYWN0aW9uLm1pbmltdW1TY2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcg
c2V0TWF4aW11bVpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5tYXhpbXVtU2NhbGVGYWN0
b3IoKV07CkBAIC00NjYsMTQgKzUwOSwyNiBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBj
b25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZgogCiAj
cHJhZ21hIG1hcmsgLSBVSVNjcm9sbFZpZXdEZWxlZ2F0ZQogCistIChCT09MKWhhc0NvbnRlbnRW
aWV3Cit7CisgICAgcmV0dXJuICFfY3VzdG9tQ29udGVudFByb3ZpZGVyVmlldzsKK30KKwogLSAo
VUlWaWV3ICopdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9s
bFZpZXcKIHsKICAgICBBU1NFUlQoX3Njcm9sbFZpZXcgPT0gc2Nyb2xsVmlldyk7CisKKyAgICBp
ZiAoX2N1c3RvbUNvbnRlbnRQcm92aWRlclZpZXcpCisgICAgICAgIHJldHVybiBfY3VzdG9tQ29u
dGVudFByb3ZpZGVyVmlldy5nZXQoKTsKKwogICAgIHJldHVybiBfY29udGVudFZpZXcuZ2V0KCk7
CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxCZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAq
KXNjcm9sbFZpZXcgd2l0aFZpZXc6KFVJVmlldyAqKXZpZXcKIHsKKyAgICBpZiAoIVtzZWxmIGhh
c0NvbnRlbnRWaWV3XSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHNjcm9sbFZpZXcucGlu
Y2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdh
bikKICAgICAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbV07CiAg
ICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRab29tT3JTY3JvbGxdOwpAQCAtNDgxLDYgKzUzNiw5
IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2Vi
Q29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAKIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxCZWdp
bkRyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiB7CisgICAgaWYgKCFbc2VsZiBo
YXNDb250ZW50Vmlld10pCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChzY3JvbGxWaWV3LnBh
bkdlc3R1cmVSZWNvZ25pemVyLnN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2Fu
KQogICAgICAgICBbX2NvbnRlbnRWaWV3IHdpbGxTdGFydFVzZXJUcmlnZ2VyZWRTY3JvbGxdOwog
ICAgIFtfY29udGVudFZpZXcgd2lsbFN0YXJ0Wm9vbU9yU2Nyb2xsXTsKQEAgLTQ4OCw2ICs1NDYs
OSBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdl
YkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZgogCiAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGxp
bmcKIHsKKyAgICBpZiAoIVtzZWxmIGhhc0NvbnRlbnRWaWV3XSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOwogICAgIFtfY29udGVudFZp
ZXcgZGlkRmluaXNoU2Nyb2xsaW5nXTsKIH0KQEAgLTUzNCwxMSArNTk1LDE1IEBAIHN0YXRpYyBX
ZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQ
b2ludCBjb250ZW50T2ZmCiAgICAgICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNp
emU6Ym91bmRzLnNpemVdOwogICAgIFtfc2Nyb2xsVmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAg
IFtfY29udGVudFZpZXcgc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOworICAgIFtfY3VzdG9t
Q29udGVudFByb3ZpZGVyVmlldyB3ZWJfc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwogICAg
IFtzZWxmIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXTsKIH0KIAogLSAodm9pZClfdXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0cwogeworICAgIGlmICghW3NlbGYgaGFzQ29udGVudFZpZXddKQor
ICAgICAgICByZXR1cm47CisKICAgICBDR1JlY3QgZnVsbFZpZXdSZWN0ID0gc2VsZi5ib3VuZHM7
CiAgICAgQ0dSZWN0IHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252
ZXJ0UmVjdDpmdWxsVmlld1JlY3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQppbmRleCA3ODU3MTA1Li4xMjI3ZGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tCkBAIC0yNCwxMCArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCisjaW1wb3J0ICJXS1dl
YlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNp
bXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWFr
T2JqQ1B0ci5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0zNiw2ICszNyw5IEBA
CiAgICAgUmV0YWluUHRyPFdLUHJlZmVyZW5jZXM+IF9wcmVmZXJlbmNlczsKICAgICBSZXRhaW5Q
dHI8V0tWaXNpdGVkTGlua1Byb3ZpZGVyPiBfdmlzaXRlZExpbmtQcm92aWRlcjsKICAgICBXZWJL
aXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3JlbGF0ZWRXZWJWaWV3OworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnk+IF9j
b250ZW50UHJvdmlkZXJSZWdpc3RyeTsKKyNlbmRpZgogfQogCiAtIChOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uCkBAIC01MCw2ICs1NCw5IEBACiAgICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9
IF9wcm9jZXNzUG9vbC5nZXQoKTsKICAgICBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzID0gX3By
ZWZlcmVuY2VzLmdldCgpOwogICAgIGNvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3ID0gX3Jl
bGF0ZWRXZWJWaWV3LmdldCgpLmdldCgpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjb25maWd1
cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeSA9IF9jb250ZW50UHJvdmlkZXJSZWdpc3Ry
eS5nZXQoKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkBAIC05NCw2
ICsxMDEsMTggQEAKICAgICBfcmVsYXRlZFdlYlZpZXcgPSByZWxhdGVkV2ViVmlldzsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKKy0gKFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5ICop
X2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Cit7CisgICAgcmV0dXJuIF9jb250ZW50UHJvdmlkZXJS
ZWdpc3RyeS5nZXQoKTsKK30KKworLSAodm9pZClfc2V0Q29udGVudFByb3ZpZGVyUmVnaXN0cnk6
KFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5ICopcmVnaXN0cnkKK3sKKyAgICBfY29u
dGVudFByb3ZpZGVyUmVnaXN0cnkgPSByZWdpc3RyeTsKK30KKyNlbmRpZgorCiBAZW5kCiAKICNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2ODZhMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkludGVybmFsLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCitAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5OworCitAaW50ZXJmYWNlIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKCkKKworI2lmIFBM
QVRGT1JNKElPUykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5OikgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkqIF9jb250ZW50
UHJvdmlkZXJSZWdpc3RyeTsKKyNlbmRpZgorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmlu
ZGV4IDY4NTE4YTMuLjIwNzVkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTYyLDYgKzYyLDkgQEAgY2xh
c3MgV2ViUGFnZVByb3h5OwogLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJl
Y3QpdGFyZ2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIG1pbmltdW1T
Y3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAoQk9PTClfem9v
bVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgd2l0aE9yaWdpbjooV2ViQ29y
ZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50aXJlUmVjdDooQk9PTClmaXRFbnRpcmVSZWN0IG1p
bmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhp
bXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFu
Y2U7CiAtICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmln
aW47CisKKy0gKHZvaWQpX3NldFBhZ2VIYXNDdXN0b21Db250ZW50UHJvdmlkZXI6KEJPT0wpcGFn
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciBsb2FkZWRNSU1FVHlwZTooY29uc3QgV1RGOjpTdHJp
bmcmKW1pbWVUeXBlOworLSAodm9pZClfZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXJXaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0IFdURjo6U3RyaW5nJilzdWdn
ZXN0ZWRGaWxlbmFtZSBkYXRhOihOU0RhdGEgKilkYXRhOwogI2VuZGlmCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50
UHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzdiMTU0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmll
d0NvbnRlbnRQcm92aWRlci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBM
QVRGT1JNKElPUykKKworQGNsYXNzIE5TRGF0YTsKK0BjbGFzcyBVSVNjcm9sbFZpZXc7CitAcHJv
dG9jb2wgTlNPYmplY3Q7CitzdHJ1Y3QgQ0dTaXplOworCisvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgQVBJLgorQHByb3RvY29sIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlciA8TlNPYmplY3Q+CisK
Ky0gKHZvaWQpd2ViX3NldENvbnRlbnRQcm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGE7CistICh2
b2lkKXdlYl9zZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNpemU7CistICh2b2lkKXdlYl9zZXRTY3Jv
bGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3OworCitAZW5kCisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJi
NWZhZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPG9iamMvb2JqYy5oPgorI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViUGFnZVByb3h5OworfQorCitAcHJvdG9jb2wgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyOwor
CitAaW50ZXJmYWNlIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IDogTlNPYmplY3QK
KworLSAodm9pZClhZGRQYWdlOihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZTsKKy0gKHZvaWQp
cmVtb3ZlUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2U7CisKKy0gKHZvaWQpcmVnaXN0
ZXJDb250ZW50UHJvdmlkZXI6KENsYXNzIDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXI+KWNvbnRl
bnRQcm92aWRlciBmb3JNSU1FVHlwZTooY29uc3QgU3RyaW5nJiltaW1lVHlwZTsKKy0gKENsYXNz
IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXI+KWNvbnRlbnRQcm92aWRlckZvck1JTUVUeXBlOihj
b25zdCBTdHJpbmcmKW1pbWVUeXBlOworCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMmMyYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkubW0KQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0
cnkuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBv
cnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW50ZXJmYWNlIFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5ICgpIHsKKyAgICBIYXNoTWFwPFN0cmluZywgQ2xhc3MgPFdLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlcj4sIENhc2VGb2xkaW5nSGFzaD4gX2NvbnRlbnRQcm92aWRlckZv
ck1JTUVUeXBlOworICAgIEhhc2hDb3VudGVkU2V0PFdlYlBhZ2VQcm94eSo+IF9wYWdlczsKK30K
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
CisKKy0gKHZvaWQpYWRkUGFnZTooV2ViUGFnZVByb3h5JilwYWdlCit7CisgICAgX3BhZ2VzLmFk
ZCgmcGFnZSk7CisKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogX2NvbnRlbnRQcm92aWRlckZv
ck1JTUVUeXBlLmtleXMoKSkKKyAgICAgICAgcGFnZS5hZGRNSU1FVHlwZVdpdGhDdXN0b21Db250
ZW50UHJvdmlkZXIobWltZVR5cGUpOworfQorCistICh2b2lkKXJlbW92ZVBhZ2U6KFdlYlBhZ2VQ
cm94eSYpcGFnZQoreworICAgIEFTU0VSVChfcGFnZXMuY29udGFpbnMoJnBhZ2UpKTsKKworICAg
IF9wYWdlcy5yZW1vdmUoJnBhZ2UpOworfQorCistICh2b2lkKXJlZ2lzdGVyQ29udGVudFByb3Zp
ZGVyOihDbGFzcyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyPiljb250ZW50UHJvdmlkZXIgZm9y
TUlNRVR5cGU6KGNvbnN0IFN0cmluZyYpbWltZVR5cGUKK3sKKyAgICBfY29udGVudFByb3ZpZGVy
Rm9yTUlNRVR5cGUuc2V0KG1pbWVUeXBlLCBjb250ZW50UHJvdmlkZXIpOworCisgICAgZm9yIChh
dXRvJiBwYWdlIDogX3BhZ2VzKQorICAgICAgICBwYWdlLmtleS0+YWRkTUlNRVR5cGVXaXRoQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKTsKK30KKworLSAoQ2xhc3MgPFdLV2ViVmlld0Nv
bnRlbnRQcm92aWRlcj4pY29udGVudFByb3ZpZGVyRm9yTUlNRVR5cGU6KGNvbnN0IFN0cmluZyYp
bWltZVR5cGUKK3sKKyAgICBjb25zdCBhdXRvJiByZXByZXNlbnRhdGlvbiA9IF9jb250ZW50UHJv
dmlkZXJGb3JNSU1FVHlwZS5maW5kKG1pbWVUeXBlKTsKKworICAgIGlmIChyZXByZXNlbnRhdGlv
biA9PSBfY29udGVudFByb3ZpZGVyRm9yTUlNRVR5cGUuZW5kKCkpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICByZXR1cm4gcmVwcmVzZW50YXRpb24tPnZhbHVlOworfQorCitAZW5kCisKKyNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYjk0ZDkwYS4uODlmYzQwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250
ZW50UHJvdmlkZXIpID0gMDsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZp
cnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
ID0gMDsKQEAgLTI1Niw2ICsyNTYsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIHZpcnR1YWwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgZnVsbFNj
cmVlbk1hbmFnZXJQcm94eUNsaWVudCgpID0gMDsKICNlbmRpZgorCisgICAgLy8gQ3VzdG9tIHJl
cHJlc2VudGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFlNDRiYjUu
LmM3OTIxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0zMTEsNiArMzExLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fc3BlbGxE
b2N1bWVudFRhZygwKQogICAgICwgbV9oYXNTcGVsbERvY3VtZW50VGFnKGZhbHNlKQogICAgICwg
bV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQoMCkKKyAgICAsIG1fbWFpbkZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyKGZhbHNlKQogICAgICwgbV9kZWxlZ2F0ZXNTY3Jv
bGxpbmcoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIoZmFs
c2UpCiAgICAgLCBtX21haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGZhbHNlKQpAQCAtMjIz
Niw3ICsyMjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxi
YWNrcygpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIElQQzo6TWVzc2FnZURlY29kZXImIGRl
Y29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8s
IElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNv
ZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwpAQCAtMjI1MCw3ICsyMjUxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAg
ICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbik7Ci0gICAgICAgIG1f
cGFnZUNsaWVudC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCk7CisgICAgICAgIG1fcGFnZUNs
aWVudC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlcik7CiAgICAgfQogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTIyNjUsNiArMjI2
NiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiAgICAgZnJhbWUtPmRpZENvbW1pdExv
YWQobWltZVR5cGUsIGNlcnRpZmljYXRlSW5mbyk7CiAKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKKyAgICAgICAgbV9tYWluRnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIgPSBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcjsKKworICAgICAgICBpZiAobV9tYWluRnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIpIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBhc3N1bWUg
dGhhdCB0aGUgbWFpbiBmcmFtZSBpcyBwaW5uZWQgaGVyZSwgc2luY2UgdGhlIGN1c3RvbSByZXBy
ZXNlbnRhdGlvbiB2aWV3IHdpbGwgaGFuZGxlCisgICAgICAgICAgICAvLyBhbnkgd2hlZWwgZXZl
bnRzIGFuZCBkaXNwYXRjaCB0aGVtIHRvIHRoZSBXS1ZpZXcgd2hlbiBuZWNlc3NhcnkuCisgICAg
ICAgICAgICBtX21haW5GcmFtZUlzUGlubmVkVG9MZWZ0U2lkZSA9IHRydWU7CisgICAgICAgICAg
ICBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUgPSB0cnVlOworICAgICAgICAgICAgbV9t
YWluRnJhbWVJc1Bpbm5lZFRvVG9wU2lkZSA9IHRydWU7CisgICAgICAgICAgICBtX21haW5GcmFt
ZUlzUGlubmVkVG9Cb3R0b21TaWRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3BhZ2VD
bGllbnQuZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIpOworICAgIH0KKwogICAgIC8vIEV2ZW4gaWYgV2ViUGFnZSBoYXMgdGhl
IGRlZmF1bHQgcGFnZVNjYWxlRmFjdG9yIChhbmQgdGhlcmVmb3JlIGRvZXNuJ3QgcmVzZXQgaXQp
LAogICAgIC8vIFdlYlBhZ2VQcm94eSdzIGNhY2hlIG9mIHRoZSB2YWx1ZSBjYW4gZ2V0IG91dCBv
ZiBzeW5jIChlLmcuIGluIHRoZSBjYXNlIHdoZXJlIGEKICAgICAvLyBwbHVnaW4gaXMgaGFuZGxp
bmcgcGFnZSBzY2FsaW5nIGl0c2VsZikgc28gd2Ugc2hvdWxkIHJlc2V0IGl0IHRvIHRoZSBkZWZh
dWx0CkBAIC00MjM3LDYgKzQyNTIsMTEgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVI
b3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKICAgICByZXR1cm4gIW1fY2FuU2hvcnRDaXJj
dWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQor
eworICAgIG1fcGFnZUNsaWVudC5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQ
cm92aWRlcihzdWdnZXN0ZWRGaWxlbmFtZSwgZGF0YVJlZmVyZW5jZSk7Cit9CisKIHZvaWQgV2Vi
UGFnZVByb3h5OjpiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKIHsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJk
SXRlbShpdGVtSUQpLCBtX3BhZ2VJRCk7CkBAIC00NTQxLDQgKzQ1NjEsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxlKQogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGh1bWJuYWlsU2NhbGUoc2NhbGUpLCBtX3BhZ2VJ
RCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50
UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlciht
aW1lVHlwZSksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZTYzMTdiMi4uYmRhMjllNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDUxLDYgKzQ1MSw4IEBA
IHB1YmxpYzoKICAgICBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wg
aXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0
aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIHZv
aWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpOwogICAgIHZv
aWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFBhc3NSZWZQdHI8
VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s+KTsKICNpZiBQTEFURk9STShJT1MpCkBAIC05NDYsNyAr
OTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwor
ICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7
CkBAIC0xMTU0LDYgKzExNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQ
cm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKICAgICB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWlu
dDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9j
dXNBbmRXaW5kb3dIYXNGb2N1cyk7CiAgICAgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0
U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHVpbnQ2NF90
IGNvbXBsZXhUZXh0SW5wdXRTdGF0ZSk7CiAjZW5kaWYKQEAgLTEzOTIsNiArMTM5NSw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhc1NwZWxsRG9jdW1lbnRUYWc7CiAgICAgdW5zaWduZWQgbV9w
ZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKKyAgICBib29sIG1fbWFpbkZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyOworCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBXZWJDb3JlOjpEcmFnU2Vzc2lvbiBtX2N1cnJlbnREcmFnU2Vzc2lvbjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggMTQ1MmI3NS4uOGQzNGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMjEsNyArMTIxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHVybCwgU3RyaW5n
IHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
IHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU3RyaW5nIHVybCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1
c2VyRGF0YSkgVmFyaWFkaWMKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKSBWYXJpYWRpYwotICAgIERpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgdWludDMyX3QgbG9hZFR5
cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCisgICAgRGlk
Q29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMy
X3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGlj
CiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKICAgICBEaWRGaW5pc2hM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJL
aXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwpA
QCAtMTM3LDYgKzEzNyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBGcmFt
ZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCiAKKyAgICAj
IEN1c3RvbSByZXByZXNlbnRhdGlvbnMKKyAgICBEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bUNvbnRlbnRQcm92aWRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhKQorCiAgICAgIyBGb3JtcyBtZXNzYWdlcwogICAgIFdpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGlj
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAppbmRleCBkOWI0ZGQ0Li41NmRlMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW1wb3J0ICJX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
LUBjbGFzcyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19D
TEFTUyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIApAQCAtNDIsNyArNDMs
NyBAQCBjbGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAjZW5kaWYKICAg
ICB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAq
KTsKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1wbChXS0NvbnRlbnRWaWV3ICosIFdLV2ViVmll
dyAqKTsKICAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50SW1wbCgpOwogICAgIAogcHJpdmF0ZToKQEAg
LTYzLDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmVyZW5jZXNEaWRD
aGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIFdl
YlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJv
b2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CkBAIC0xMjks
NyArMTMwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmaW5hbEZyYW1lKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRl
OworCiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKKyAgICBXS1dlYlZpZXcgKm1f
d2ViVmlldzsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNjY1MzU2Ni4uZmRh
N2E4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC00MSw2ICs0MSw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2Ny
ZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCisjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgorCiBAaW50ZXJmYWNlIFVJVmlldyAoSVBJKQogLSAoVUlTY3JvbGxW
aWV3ICopX3Njcm9sbGVyOwogQGVuZApAQCAtNDksOCArNTEsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChXS0NvbnRlbnRWaWV3ICp2aWV3KQotICAgIDogbV9jb250ZW50Vmlldyh2aWV3KQor
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLQ29udGVudFZpZXcgKmNvbnRlbnRWaWV3
LCBXS1dlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQor
ICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTE0Niw4ICsxNDksOSBAQCBib29s
IFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdlYkZyYW1lUHJveHkmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVz
ZUN1c3RvbUNvbnRlbnRQcm92aWRlcikKIHsKKyAgICBbbV93ZWJWaWV3IF9zZXRQYWdlSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyOnVzZUN1c3RvbUNvbnRlbnRQcm92aWRlciBsb2FkZWRNSU1FVHlw
ZTptaW1lVHlwZV07CiAgICAgW21fY29udGVudFZpZXcgX2RpZENvbW1pdExvYWRGb3JNYWluRnJh
bWVdOwogfQogCkBAIC00MDIsNiArNDA2LDEyIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmJlZ2Fu
RXhpdEZ1bGxTY3JlZW4oY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaW5p
c2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit7
CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6ZGF0YVJlZmVyZW5jZS5kYXRhKCkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6
ZSgpXSk7CisgICAgW21fd2ViVmlldyBfZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXJXaXRoU3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWUgZGF0YTpk
YXRhLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KaW5kZXggMGVjODVjOS4uZDVlOWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzYsNyArNzYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCiAgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIF9wYWdlQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZik7CisgICAgX3BhZ2VDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKIAogICAg
IF9wYWdlID0gY29udGV4dC5jcmVhdGVXZWJQYWdlKCpfcGFnZUNsaWVudCwgc3RkOjptb3ZlKHdl
YlBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNzIx
YWY1Ni4uYWFiMTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwuaApAQCAtNzksNyArNzksOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWxhdW5jaFByb2Nlc3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBvbGRUb29sVGlwLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2xUaXApOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCB1c2VDdXN0b21Db250ZW50UHJvdmlkZXIpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEF0dHJpYnV0ZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCmluZGV4IDM4NzliZTYuLjg2NjJjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtMjg1LDcgKzI4NSwxMSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmIG9sZFRv
b2xUaXAsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIFttX3drVmlldyBfdG9vbFRpcENoYW5nZWRG
cm9tOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcob2xkVG9vbFRpcCkgdG86bnNTdHJpbmdGcm9t
V2ViQ29yZVN0cmluZyhuZXdUb29sVGlwKV07CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNv
bnRlbnRQcm92aWRlcikKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9h
ZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjczMTdhNy4uNGExZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTJENkIzNzFD
MThBOTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyog
V0tUaHVtYm5haWxWaWV3Lm1tICovOyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyog
Vmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5o
ICovOyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDEx
ODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07CisJCTJEN0FB
RkQzMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0FBRkQyMThDODY0MDYw
MEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAqLzsgfTsKKwkJMkQ3QUFGRDYx
OEM5NTZBRjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3QUFGRDUxOEM5NTZB
RjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovOyB9OwogCQky
RDgxOUI5RTE4NjI3RUU5MDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgxOUI5
OTE4NjI3NUIzMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgKi87
IH07CiAJCTJEODE5QkExMTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEODE5QjlGMTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMkQ4MTlCQTIxODYy
ODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4MTlCQTAxODYy
ODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oICov
OyB9OwpAQCAtNTI5LDYgKzUzMSw4IEBACiAJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAvKiBX
S1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmll
d0ludGVybmFsLmggKi87IH07CiAJCTJEQUYwNkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREFGMDZENDE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci5oICovOyB9OwogCQkyREFGMDZENzE4QkQxQTQ3MDA4MUNFQjEgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLm1tICovOyB9OworCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQg
LyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBX
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovOyB9OworCQkyREM2RDlDNDE4QzQ0
QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM2RDlDMjE4QzQ0QTYx
MDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi87IH07CiAJ
CTJEREUwQUZBMTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUw
QUY4MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAq
LzsgfTsKIAkJMkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIubW0gKi87IH07CiAJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAg
LTIyNTUsNiArMjI1OSw4IEBACiAJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25h
cHNob3RTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZp
ZXdTbmFwc2hvdFN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcwQUIx
MzE4QTFENTFBMDAwMjZENkUgLyogSW5mby1pT1MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9ICJJbmZv
LWlPUy5wbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzBBQjE0MThBMUQ1
N0MwMDAyNkQ2RSAvKiBJbmZvLWlPUy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gIkluZm8taU9TLnBs
aXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdB
Q0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkQ3QUFGRDUxOEM5NTZBRjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ4MTlCOTkxODYyNzVCMzAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODE5QjlB
MTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4MTlCOUIxODYyNzVCMzAwMUYwM0Qx
IC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTAsMTAgKzIyOTYsMTIgQEAKIAkJMkRBRjA2
RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5oOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBwYXRoID0gaW9zL1NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEQUYwNkQ4MThCRDIzQkEwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMu
aW47IHBhdGggPSBpb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8q
IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBw
YXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU2OTQzQzE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEy
MDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRo
ID0gaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNh
dGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJO
b3RpZmljYXRpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE0
NCw2ICs0MTUyLDkgQEAKIAkJMUFCQzNERjIxODk5RTQxNTAwNEYwNjI2IC8qIENvY29hICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRDdBQUZEMjE4Qzg2
NDA2MDBBN0FDRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggKi8sCisJCQkJMkRDNkQ5
QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmgg
Ki8sCisJCQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5Lm1tICovLAogCQkJCTBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXll
clJlcHJlc2VudGF0aW9uLmggKi8sCiAJCQkJMUE0MjJGOEQxOEIyOUM2NDAwRDhDRDk2IC8qIEhp
c3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTQyMkY4QzE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9y
eUNsaWVudC5tbSAqLywKQEAgLTQ1NDcsNiArNDU1OCw3IEBACiAJCQkJMUFERjU5MTkxODkwNTI4
RTAwNDNDMTQ1IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkxQURGNTkxODE4
OTA1MjhFMDA0M0MxNDUgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSAqLywKIAkJCQkxQUMx
NDE1MDE4QUM0N0VFMDA2QzYwMkMgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCAq
LywKKwkJCQkyRDdBQUZENTE4Qzk1NkFGMDBBN0FDRDQgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkludGVybmFsLmggKi8sCiAJCQkJMUE2NkJGOEUxOEEwNTJFRDAwMjA3MUI0IC8qIFdLV2ViVmll
d0ludGVybmFsLmggKi8sCiAJCQkJMjZGOUE4M0ExOEEzNDYzRjAwQUVCODhBIC8qIFdLV2ViVmll
d1ByaXZhdGUuaCAqLywKIAkJCSk7CkBAIC02NTUzLDYgKzY1NjUsNyBAQAogCQkJCUJDNEJFRUFC
MTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3OEUxQTRFMTgyMDhENzAwMDMxMDA3QSAvKiBXS05TVVJMLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTFCMEVCODE4QTQyNENEMDAzODQ4MUEgLyogV0tOYXZpZ2F0aW9uUmVzcG9u
c2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ3QUFGRDMxOEM4NjQwNjAwQTdBQ0Q0
IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyOTM1
RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE0RTEwQTEy
MEI5MDVFMDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NzU5LDYgKzY3NzIsNyBAQAogCQkJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2
MiAvKiBXZWJDb2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTAxNDczMTJC
RTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTU0
MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
QzZEOUMzMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0
QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjc5Myw2ICs2ODA3LDcgQEAKIAkJCQkxQTI0NjRGMzE4
OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzFERDdCMjExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkQ3QUFGRDYxOEM5NTZBRjAwQTdBQ0Q0IC8qIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0U2NEUxOEFE
QkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjZBMjVGREQxMkFEQzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MDMyLDYgKzgwNDcsNyBAQAogCQkJCTUxQ0JCQTBGMTY1MjE5QjYw
MDVCRThGRCAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTgyOURBNTE2MzdDNzBDMDAwOTUzRDYgLyogTmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJDMDY5MDE2MzkwRTY5MDBBQkI5MTEg
LyogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTJEQzZEOUM0MThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdp
c3RyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBO
ZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM1NTE0
ODk5ODJFMDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggYzFlMzdkNy4u
MTAxY2I1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWUubW0KQEAgLTEwMiw2ICsxMDIsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICAgICByZXR1cm4gW3dyYXBwZXIoKkFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZShfZnJhbWUtPmZy
YW1lSUQoKSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKKy0gKEJPT0wpX2hhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlcgoreworICAgIGlmICghX2ZyYW1lLT5pc01haW5GcmFtZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcigpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVQ
cml2YXRlLmgKaW5kZXggMTBiMDlmMC4uNWMwZTllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVQcml2YXRlLmgKQEAgLTM1LDYg
KzM1LDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKl9icm93c2VyQ29udGV4dENvbnRyb2xsZXI7
CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyOworCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlY2M3NzFlLi42OTM2NTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTAsNiArOTAsNyBAQCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoKQogICAgIDogbV9mcmFtZSgwKQogICAgICwg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcoZmFsc2UpCiAgICAgLCBtX2RpZENvbXBsZXRl
UGFnZVRyYW5zaXRpb25BbHJlYWR5KGZhbHNlKQorICAgICwgbV9mcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlcihmYWxzZSkKICAgICAsIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZShmYWxzZSkK
IHsKIH0KQEAgLTEwOSw2ICsxMTAsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKQogICAgIG1fZnJhbWUtPmRlcmVmKCk7CiB9CiAKK2Jvb2wgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1f
ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXI7Cit9CisKIGJvb2wgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6Omhhc1dlYlZpZXcoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCk7
CkBAIC00NDUsOCArNDUxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUo
bV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1l
bnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkubG9hZFR5cGUoKSwgQ2VydGlmaWNhdGVJbmZvKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNl
KCkpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsK
LQorICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9h
ZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklE
KCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBl
KCksIENlcnRpZmljYXRlSW5mbyhkb2N1bWVudExvYWRlci5yZXNwb25zZSgpKSwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+
ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApAQCAtODI2LDcgKzgzMSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3BsdWdpblZpZXct
Pm1hbnVhbExvYWREaWRGYWlsKGVycm9yKTsKLSAgICBtX3BsdWdpblZpZXcgPSAwOworICAgIG1f
cGx1Z2luVmlldyA9IG51bGxwdHI7CiAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcg
PSBmYWxzZTsKIH0KIApAQCAtODUyLDYgKzg1NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKIHsKKyAgICAvLyBJZiB3ZSdyZSBsb2FkaW5nIGEgY3VzdG9t
IHJlcHJlc2VudGF0aW9uLCB3ZSBkb24ndCB3YW50IHRvIGhhbmQgb2ZmIHRoZSBkYXRhIHRvIFdl
YkNvcmUuCisgICAgaWYgKG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmICghbV9wbHVnaW5WaWV3KQogICAgICAgICBsb2FkZXItPmNvbW1p
dERhdGEoZGF0YSwgbGVuZ3RoKTsKIApAQCAtODc4LDIyICs4ODcsMzMgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBjaGFyKiBkYXQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlIGp1c3QgcmVjZWl2ZWQgYW4gZW1wdHkgcmVzcG9u
c2Ugd2l0aG91dCBhbnkgZGF0YSwgd2Ugd29uJ3QgaGF2ZSBzZW50IGEgcmVzcG9uc2UgdG8gdGhl
IHBsdWctaW4gdmlldy4KLSAgICAvLyBNYWtlIHN1cmUgdG8gZG8gdGhpcyBiZWZvcmUgY2FsbGlu
ZyBtYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZy4KLSAgICBpZiAoIW1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW5WaWV3KSB7Ci0gICAgICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2Vp
dmVSZXNwb25zZShsb2FkZXItPnJlc3BvbnNlKCkpOworICAgIGlmICghbV9wbHVnaW5WaWV3KSB7
CisgICAgICAgIGlmIChtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyKSB7CisgICAgICAg
ICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICAgICAgaWYg
KCF3ZWJQYWdlKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBQcm90ZWN0
IGFnYWluc3QgdGhlIGFib3ZlIGNhbGwgbnVsbGluZyBvdXQgdGhlIHBsdWctaW4gKGJ5IHRyeWlu
ZyB0byBjYW5jZWwgdGhlIGxvYWQgZm9yIGV4YW1wbGUpLgotICAgICAgICBpZiAoIW1fcGx1Z2lu
VmlldykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAg
ICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRh
dGEoKSA6IDApLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9u
c2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7Ci0g
ICAgbV9wbHVnaW5WaWV3ID0gMDsKLSAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9
IGZhbHNlOworICAgIGlmIChtX3BsdWdpblZpZXcpIHsKKyAgICAgICAgLy8gSWYgd2UganVzdCBy
ZWNlaXZlZCBhbiBlbXB0eSByZXNwb25zZSB3aXRob3V0IGFueSBkYXRhLCB3ZSB3b24ndCBoYXZl
IHNlbnQgYSByZXNwb25zZSB0byB0aGUgcGx1Zy1pbiB2aWV3LgorICAgICAgICAvLyBNYWtlIHN1
cmUgdG8gZG8gdGhpcyBiZWZvcmUgY2FsbGluZyBtYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZy4K
KyAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldykgeworICAgICAgICAg
ICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+cmVz
cG9uc2UoKSk7CisKKyAgICAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCB0aGUgYWJvdmUgY2Fs
bCBudWxsaW5nIG91dCB0aGUgcGx1Zy1pbiAoYnkgdHJ5aW5nIHRvIGNhbmNlbCB0aGUgbG9hZCBm
b3IgZXhhbXBsZSkuCisgICAgICAgICAgICBpZiAoIW1fcGx1Z2luVmlldykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3BsdWdpblZpZXctPm1hbnVhbExv
YWREaWRGaW5pc2hMb2FkaW5nKCk7CisgICAgICAgIG1fcGx1Z2luVmlldyA9IG51bGxwdHI7Cisg
ICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gZmFsc2U7CisgICAgfQogfQog
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKQEAgLTEx
NjYsNiArMTE4NiwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1E
YXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCiB7
CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBib29sIGlzTWFp
bkZyYW1lID0gd2ViUGFnZS0+bWFpbldlYkZyYW1lKCkgPT0gbV9mcmFtZTsKKworICAgIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CisgICAgbV9mcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnNob3VsZFVzZUN1c3RvbUNv
bnRlbnRQcm92aWRlckZvclJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBtX2ZyYW1lQ2FtZUZyb21Q
YWdlQ2FjaGUgPSB0cnVlOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKQEAgLTExODUsNiArMTIxMSw4IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
ICAgICBmaXhlZFZpc2libGVDb250ZW50UmVjdCA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3
KCktPmZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjZW5kaWYKIAorICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CisgICAgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnNob3VsZFVzZUN1c3RvbUNvbnRlbnRQ
cm92aWRlckZvclJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2Fj
aGUgPSBmYWxzZTsKIAogICAgIFNjcm9sbGJhck1vZGUgZGVmYXVsdFNjcm9sbGJhck1vZGUgPSBz
aG91bGRIaWRlU2Nyb2xsYmFycyA/IFNjcm9sbGJhckFsd2F5c09mZiA6IFNjcm9sbGJhckF1dG87
CkBAIC0xMjQ0LDYgKzEyNzIsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRCZWNvbWVGcmFtZXNldChib29sIHZhbHVlKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RnJhbWVEaWRCZWNvbWVGcmFtZVNldChtX2ZyYW1lLT5mcmFtZUlE
KCksIHZhbHVlKSk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFn
ZSgpIGNvbnN0Cit7CisgICAgLy8gV2UgY2Fubm90IGNhY2hlIGZyYW1lcyB0aGF0IGhhdmUgY3Vz
dG9tIHJlcHJlc2VudGF0aW9ucyBiZWNhdXNlIHRoZXkgYXJlCisgICAgLy8gcmVuZGVyZWQgaW4g
dGhlIFVJUHJvY2Vzcy4KKyAgICByZXR1cm4gIW1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlk
ZXI7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciAqZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgbV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50
TG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggYmExZTQ5Ni4uNTkzNjZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNDEsMTAgKzQxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYkZyYW1lKFdlYkZyYW1l
KiB3ZWJGcmFtZSkgeyBtX2ZyYW1lID0gd2ViRnJhbWU7IH0KICAgICBXZWJGcmFtZSogd2ViRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKKyAgICBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlcjsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNIVE1MVmlldygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpAQCAtMTc1LDkgKzE3Nyw5IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgCisK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7CiAgICAgCkBA
IC0yMzIsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGx1Z2luVmlldz4gbV9wbHVn
aW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXc7CiAgICAgYm9v
bCBtX2RpZENvbXBsZXRlUGFnZVRyYW5zaXRpb25BbHJlYWR5OworICAgIGJvb2wgbV9mcmFtZUhh
c0N1c3RvbUNvbnRlbnRQcm92aWRlcjsKICAgICBib29sIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNo
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA0M2NmNTgyLi44ZWFiOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMDc1LDYgKzMwNzUsMjIgQEAgdm9pZCBXZWJQYWdl
OjpjbGVhclNlbGVjdGlvbigpCiB9CiAjZW5kaWYKIAorYm9vbCBXZWJQYWdlOjptYWluRnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIoKSBjb25zdAoreworICAgIGlmIChGcmFtZSogZnJhbWUg
PSBtYWluRnJhbWUoKSkgeworICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVM
b2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKSk7CisgICAgICAgIEFTU0VSVCh3ZWJGcmFtZUxvYWRlckNsaWVudCk7CisgICAgICAgIHJl
dHVybiB3ZWJGcmFtZUxvYWRlckNsaWVudC0+ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWRkTUlN
RVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7
CisgICAgbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVycy5hZGQobWltZVR5cGUp
OworfQorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmco
KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CkBAIC0zODE3LDYg
KzM4MzMsMTUgQEAgYm9vbCBXZWJQYWdlOjpjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICNlbmRpZgogfQogCitib29sIFdlYlBhZ2U6OnNo
b3VsZFVzZUN1c3RvbUNvbnRlbnRQcm92aWRlckZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmICghbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVu
dFByb3ZpZGVycy5jb250YWlucyhyZXNwb25zZS5taW1lVHlwZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gSWYgYSBwbHVnLWluIGV4aXN0cyB0aGF0IGNsYWltcyB0byBzdXBw
b3J0IHRoaXMgcmVzcG9uc2UsIGl0IHNob3VsZCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgY3Vz
dG9tIGNvbnRlbnQgcHJvdmlkZXIuCisgICAgcmV0dXJuICFjYW5QbHVnaW5IYW5kbGVSZXNwb25z
ZShyZXNwb25zZSk7Cit9CisKICNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgRnJhbWUqIHRhcmdl
dEZyYW1lRm9yRWRpdGluZyhXZWJQYWdlKiBwYWdlKQogewpAQCAtMzk2Miw2ICszOTg3LDkgQEAg
Ym9vbCBXZWJQYWdlOjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29u
c3QKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKE1JTUVUeXBlKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAobV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29u
dGVudFByb3ZpZGVycy5jb250YWlucyhNSU1FVHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSA9IG1fcGFnZS0+cGx1Z2luRGF0YSgp
OwogICAgIGlmIChwbHVnaW5EYXRhLnN1cHBvcnRzTWltZVR5cGUoTUlNRVR5cGUsIFBsdWdpbkRh
dGE6OkFsbFBsdWdpbnMpICYmIGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLnN1YmZy
YW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggZTFlNzA3My4uZThhZjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MjUsNiArNjI1LDkgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCk7CiAKKyAgICBib29s
IG1haW5GcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcigpIGNvbnN0OworICAgIHZvaWQgYWRk
TUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OworCiAgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlvdXQoKTsKIAogICAgIGJvb2wgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWw7IH0KQEAgLTY3OSw2ICs2ODIsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0
X3QgbmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0K
ICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRVc2VDdXN0b21Db250ZW50UHJvdmlkZXJGb3JSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBjYW5QbHVn
aW5IYW5kbGVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSk7CiAKICAgICBib29sIGFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVk
OyB9CkBAIC0xMTA3LDYgKzExMTEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViSW5zcGVjdG9yQ2xp
ZW50KiBtX2luc3BlY3RvckNsaWVudDsKIAorICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGlu
Z0hhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7CiAgICAgV2ViQ29y
ZTo6Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2Fj
dGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyNjhlMmNkLi42
MGE1NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTgzLDYgKzE4Myw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaElu
ZGV4KQogICAgIEhpZGVGaW5kVUkoKQogICAgIENvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3Ry
aW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKKyAgICAK
KyAgICBBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoU3RyaW5nIG1pbWVUeXBl
KQogCiAgICAgIyBEcmFnIGFuZCBkcm9wLgogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERS
QUdfU1VQUE9SVCkK
</data>
<flag name="review"
          id="250289"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>